Android 的 Crashlytics 报告与 Proguard 和 Proguard 映射设置混淆

标签 android proguard crashlytics crashlytics-android

即使映射似乎设置正确,我的 Firebase Crashlytics 日志在使用 Proguard 时会因某些崩溃而部分混淆(仅方法名称)。

Proguard 映射一直工作到 9 月 12 日左右,这是 Gradle(通过 Jenkins)最后一次记录 Uploading deobfuscation file以及相关日志进入~/Library/Caches/com.crashlytics/com.crashlytics.tools/crashlytics.log 。现在,Gradle 不会记录任何与 Proguard 混淆文件相关的日志或错误。另外,我检查了截至该日期的 git 提交,以确保没有任何相关更改。

这是我的实现。我已在文档中添加/排除了 Proguard 规则。

添加:

-keep public class * extends java.lang.Exception
-keepattributes *Annotation*
-keepattributes SourceFile,LineNumberTable

排除: -printmapping mapping.txt

以下是未混淆方法名称的示例:

com.app.android.coursetaking.nonvideo.ebook.EbookDataManager.a (SourceFile:18)
com.app.android.coursetaking.nonvideo.ebook.EbookViewModel.a (SourceFile:53)
com.app.android.viewmodel.RxViewModel.a (SourceFile:110)
com.app.android.viewmodel.RxViewModel.O (SourceFile:102)
com.app.android.coursetaking.nonvideo.ebook.AbstractEbookFragment.onViewCreated (SourceFile:98)
androidx.fragment.app.FragmentManagerImpl.a (SourceFile:1471)
androidx.appcompat.app.AppCompatActivity.onStart (SourceFile:178)
com.app.android.activity.BaseActivity.onStart (SourceFile:212)
com.app.android.core.activity.UserBoundActivity.onStart (SourceFile:63)
android.app.Instrumentation.callActivityOnStart (Instrumentation.java:1391)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:858)

如果我查找映射文件,我可以看到到混淆名称的映射。

我认为问题发生在应用程序构建之后,因为我可以看到映射文件。但由于缺少 Firebase Crashlytics 的 Gradle 日志,我不确定下一步该去哪里。

最后,我尝试手动运行 Gradle 任务来上传签名的 APK,crashlyticsUploadDistributionMainAppRelease 。未能找到签名的 APK:Crashlytics halted compilation because it can't distribute the unsigned APK path/to/release/app-mainApp-release.apk即使那里有签名的 APK。

最佳答案

Fabric Crashlytics 是 Proguard 映射问题的原因。我使用的是 1.29.0 版本和 1.30.0 版本,they solved my problem: 修复了无法使用 Android Gradle Plugin 3.5 为 Proguard 构建上传映射文件的问题。。升级到版本 1.31.1 后,现在可以在 Firebase Crashlytics 上查看未混淆的映射。

关于Android 的 Crashlytics 报告与 Proguard 和 Proguard 映射设置混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58176481/

相关文章:

ios - Crashlytics 未报告任何前台 OOM

ios - com.apple.NSURLSession-work EXC_BAD_ACCESS 崩溃调试

android - centos 中的 PJSIP ndk 配置问题

android - SearchView(不在工具栏中)如何显示全屏下拉列表

android - minifyEnabled 删除使用过的 Assets

android - 使用 GSON 库导出/签名 Android 项目

android - Firebase Crashlytics 使用 Retrofit 和协程报告 Android 项目上的假崩溃

AndroidManifest.xml <manifest> 包属性没有命名空间

android - 来自 AndroidManifest 的属性提供者 FirebaseInitProvider 和 FacebookInitProvider 也出现在 AndroidManifest

java - 带有混淆和优化的 Guava 的 ProGuard 配置