我有类似的谷歌播放崩溃
java.lang.NullPointerException:
at java.util.Objects.requireNonNull (Objects.java:109)
at f0.k.e.b.b.a.<init> (SourceFile:1)
at com.activities.galleryscan.ScanBarcodeFromFileActivity$b.g (SourceFile:28)
at h0.r.o.a.a.d (SourceFile:3)
这里的行号SourceFile:28
不正确是为什么?
我上传了与proguard签署的应用程序捆绑包。
根据此,无需在应用程序包中将映射文件上传到控制台
即使这样行号也不正确为什么?
我也是
添加这个
-keepattributesSourceFile,LineNumberTable
-renamesourcefileattribute SourceFile
proguard-rules.pro
中的行
即使这样行号也不正确为什么?
我为Debug得到了正确的行号,为Release得到了不正确的行号。
如果使用debuggable=false
指定构建配置,则R8会生成不正确的行号。
要使其正确工作,请设置debuggable=true
例如
buildTypes {
debug {
debuggable true
minifyEnabled true
proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro"
signingConfig signingConfigs.debug
}
release {
debuggable true
minifyEnabled true
proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro"
signingConfig signingConfigs.release
}
}
此解决方案适用于
如果您有多个模块的proguard-rules.pro
文件,则添加
这行在每个proguard-rules.pro
文件中
-keepattributesSourceFile,LineNumberTable
-renamesourcefileattribute源文件
根据Android文档,
R8混淆代码后,理解堆栈跟踪很困难(如果不是不可能的话(,因为类和方法的名称可能已经更改。除了重命名,R8还可以更改堆栈跟踪中的行号,以在写入DEX文件时实现额外的大小节省。幸运的是,R8每次运行时都会创建一个mapping.txt文件,其中包含映射到原始名称的模糊类、方法和字段名称。此映射文件还包含将行号映射回原始源文件行号的信息。R8将文件保存在
<module-name>/build/outputs/mapping/<build-type>/
目录中。
所以你需要找到mapping.txt文件,并在每次推送新版本时将其上传到谷歌播放控制台中。
你可以在android开发者指南上找到更多关于相同的信息。