Crashlytics 报告在将应用程序迁移到 kotlin 后显示错误的行号,我已经-keepattributes SourceFile,LineNumberTable在我的 proguard 文件中
错误行号报告示例:
我正在更改我的应用程序代码以支持Android 7,但在我的NotificationCompat.Builder.setSound(Uri)中传递来自FileProvider的Uri,Notification不播放任何声音,在Android 6中使用Uri.fromFile()正常工作.
mp3文件位于:
/Animeflv/cache/.sounds/
这是我的通知代码:
knf.animeflv.RequestBackground
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.ic_not_r)
.setContentTitle(NotTit)
.setContentText(mess);
...
mBuilder.setVibrate(new long[]{100, 200, 100, 500});
mBuilder.setSound(UtilSound.getSoundUri(not)); //int
Run Code Online (Sandbox Code Playgroud)
这是我的UtilSound.getSoundUri(int)
public static Uri getSoundUri(int not) {
switch (not) {
case 0:
return RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
default:
try {
File file=new File(Environment.getExternalStorageDirectory()+"/Animeflv/cache/.sounds",getSoundsFileName(not));
if (file.exists()) {
file.setReadable(true,false);
if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.N){
return FileProvider.getUriForFile(context, "knf.animeflv.RequestsBackground",file);
}else {
return Uri.fromFile(file);
}
}else {
Log.d("Sound Uri","Not found");
return getSoundUri(0);
}
}catch (Exception e){
e.printStackTrace();
return getSoundUri(0);
}
}
}
Run Code Online (Sandbox Code Playgroud)
在AndroidManifest.xml中:
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="knf.animeflv.RequestsBackground"
android:exported="false"
android:grantUriPermissions="true"> …Run Code Online (Sandbox Code Playgroud) java android android-studio android-fileprovider android-7.0-nougat
我正在使用带有 Room livedata 的分页库,在某些设备中,有时我会收到 IndexOutOfBoundsException 索引越界 - 传递位置 = 75,旧列表大小 = 75(总是大小为 75,我的数据库都没有固定大小为 75)
问题是日志显示的更像是内部错误而不是我的应用程序错误
致命异常:java.lang.IndexOutOfBoundsException:索引越界 - 传递位置 = 75,旧列表大小 = 75
在androidx.recyclerview.widget.DiffUtil $ DiffResult.convertOldPositionToNew(DiffUtil.java:672)
在androidx.paging.PagedStorageDiffHelper.transformAnchorIndex(PagedStorageDiffHelper.java:215)
在androidx.paging.AsyncPagedListDiffer.latchPagedList(AsyncPagedListDiffer.java:382)
在androidx.paging.AsyncPagedListDiffer$2$1.run(AsyncPagedListDiffer.java:345)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os .Looper.loop(Looper.java:164)
在 android.app.ActivityThread.main(ActivityThread.java:6543)
在 java.lang.reflect.Method.invoke(Method.java)
在 com.android.internal.os。 RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:440)
在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:810)
有解决方法吗?还是与我的应用程序有关?
在 xml 中,您可以使用 GridLayoutManager 中的 GridLayoutManager.SpanSizeLookup 来设置单个项目的跨度大小(该项目将在行中使用多少列,例如,在 3 列的网格中,我可以将第一个项目设置为跨度大小3 所以它将使用网格的所有宽度),但在 Compose 中我找不到方法来做到这一点,垂直网格只有一种方法设置全局跨度计数和添加项目,但不能设置跨度大小一个单独的项目,有办法做到吗?
android android-jetpack-compose android-jetpack-compose-list