Google 播放未用 Android App Bundle 符号化的崩溃日志

Google Play crash logs not symbolicated with Android App Bundle

我们最近更新了我们的应用程序以使用 Android App Bundle (aab) 并且还包括 arm64 本机库。

自从这样做之后,我们在 'Google Play Console'->'Android Vitals'->'ANRs & Crashes' 中的本机代码中的崩溃日志未正确符号化(java 调用堆栈符号化良好) .

典型调用堆栈的片段如下所示:

  #21  pc 000000000015addc  /data/app/com.mycompany.mygame-2/split_config.arm64_v8a.apk
  #22  pc 0000000000293768  /data/app/com.mycompany.mygame-2/split_config.arm64_v8a.apk
  #23  pc 0000000000294cf0  /data/app/com.mycompany.mygame-2/split_config.arm64_v8a.apk

此问题会影响 armv7 和 arm64 的崩溃。偶尔,一个错误会有一个正确符号化的调用堆栈,现在大约有 10% 被正确符号化。在使用 AAB 和 arm64 之前,我们看到几乎所有的调用栈都被正确地符号化了。

为了解决这个问题,我们使用 Crashlytics 进行了调查,但也无法通过这种方式获得正确符号化的调用堆栈。由于我们之前没有使用过 Crashlytics,因此我们很难知道它是否遇到同样的问题,或者我们是否只是错误地设置了 Crashlytics。但是,这 post 表示其他用户可能在使用 AAB 和 Crashlytics 时遇到问题。

还有其他人遇到类似的困难吗?

是否有任何已知的解决方法?

是否有人更新为使用 AAB,并且在 Google Play 控制台中没有发现任何崩溃报告符号问题?

编辑:NDK 21 RC1 应该可以解决这个问题。

这似乎与原生库在 APK 中保持未压缩有关。

通过在 gradle.properties 中添加以下选项,您可以禁用它:

android.bundle.enableUncompressedNativeLibs=false

您需要发布使用此选项构建的新 App Bundle。