10

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

由于这样做,我们在“Google Play 控制台”->“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。但是,这篇文章表明其他用户可能在使用 AAB 和 Crashlytics 时遇到问题。

有没有其他人遇到过类似的困难?

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

有没有人更新使用 AAB 并且在 Google Play 控制台中没有看到崩溃报告符号的任何问题?

4

1 回答 1

18

Edit: The NDK 21 RC1 should fix this issue.

This seems related to the fact that native libraries are kept uncompressed in the APK.

By adding the following option in your gradle.properties, you can disable it:

android.bundle.enableUncompressedNativeLibs=false

You'll need to release a new App Bundle built with this option.

于 2019-05-03T12:38:03.040 回答