Kotlin 迁移后 Crashlytics 报告错误的行号

Crashlitycs reporting wrong line number after kotlin migration

Crashlytics 报告在将应用程序迁移到 kotlin 后显示错误的行号,我的 proguard 文件中已经 -keepattributes SourceFile,LineNumberTable

报错行号示例:

http://crashes.to/s/419b5b28766

我禁用了 R8,它工作正常,报告中的行代码现在显示正确的行号

问题是 R8 正在应用额外的优化来节省 space 使用小整数而不是实际行号。

当您尝试使用 Android sdk 文件夹中的 retrace 脚本进行反混淆时出现反混淆问题:/sdk/tools/proguard/bin/retrace.sh

tools 文件夹中的 proguard 版本为 4.7,无法对优化的行号堆栈跟踪进行反混淆处理。

The solution is to download the latest official proguard version here and use the retrace tool inside the bin folder, then the line numbers will be de-obfuscated correctly even with R8 enabled. You can verify it manually with latest_proguard/bin/retrace.sh mapping.txt stacktrace.txt

参考:https://issuetracker.google.com/issues/122752644