【问题标题】:Crashlitycs reporting wrong line number after kotlin migrationkotlin 迁移后 Crashlytics 报告错误的行号
【发布时间】:2019-03-02 16:04:58
【问题描述】:

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

报错行号示例:

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

【问题讨论】:

  • 是迁移的那个版本吗?这些文件是java,所以我认为不是。
  • 它是java中的一个库错误,但是java和kotlin文件都显示错误的行号:crashes.to/s/63aab3a5855
  • 离行号有多远?
  • 很多,总是显示像1,2,11这样的低值,而行是200、300左右
  • 您找到解决方法了吗?我有同样的问题。有趣的是,我将映射文件上传到 Google Play 控制台,控制台会报告正确的行号。

标签: android kotlin crashlytics google-fabric


【解决方案1】:

我禁用了 R8,它运行良好,报告上的行代码现在显示正确的行号

【讨论】:

【解决方案2】:

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

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

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

解决方法是下载官方最新的proguard版本 here 并使用 bin 文件夹中的 retrace 工具,即使启用了 R8,行号也将被正确地去混淆。 您可以使用latest_proguard/bin/retrace.sh mapping.txt stacktrace.txt手动验证它

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

【讨论】:

  • 问题跟踪proguard升级在这里:issuetracker.google.com/issues/150830809
  • 使用 proguard 6.2.2 并不能解决 Kotlin 代码的这个问题。输出的唯一区别是文件名从.kt 转换为.java,但行号仍然错误。
猜你喜欢
  • 2019-04-08
  • 2021-06-10
  • 1970-01-01
  • 1970-01-01
  • 2021-06-30
  • 1970-01-01
  • 1970-01-01
  • 2021-06-07
  • 2020-10-24
相关资源
最近更新 更多