Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Google Play crash logs not symbolicated with Android App Bundle

We have recently updated our apps to use Android App Bundles (aab) and to also include arm64 native libs.

Since doing so, our crash logs in native code in the 'Google Play Console'->'Android Vitals'->'ANRs & Crashes' are not symbolicating correctly (java callstacks symbolicate fine).

A snippet from a typical callstack looks like this:

  #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

The issue affects crashes from both armv7 and arm64. Occasionally a bug will have a properly symbolicated callstack, approximately 10% are symbolicated properly now. Prior to the use of AAB and arm64, we were seeing almost all callstacks symbolicated correctly.

To work around this, we investigated using Crashlytics, but had trouble getting a properly symbolicated callstack that way also. As we haven't used Crashlytics before it is difficult for us to know whether it suffers from the same issue or whether we simply setup Crashlytics incorrectly. However, this post indicates that other users may be having trouble with AABs and Crashlytics.

Is anyone else experiencing similar difficulties?

Are there any known workarounds?

Has anyone updated to use AABs and is not seeing any problem with crash report symbolication in the Google Play console?

like image 768
Columbo Avatar asked May 03 '19 09:05

Columbo


People also ask

What programs can you use to get crash logs from Android devices?

Reading with logcat Once you are able have the steps to reproduce the crash, you can use a tool like logcat to get more information. The logcat output will show you what other log messages you have printed, along with others from the system.


1 Answers

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.

like image 104
Pierre Avatar answered Oct 21 '22 01:10

Pierre