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?
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.
Related
I have released an Expo app and now need to remotely deduce the cause of errors. I've exported both an Android and iOS build from Expo with expo build:ios or :android and have deployed them to users via Google play console and iTunes Connect.
A user reported a crash on Android, but in my Google Play console I see no evidence of a crash under "Vitals." This is probably because the app is bundled under the many layers of expo.
I need a way of seeing this crash, so Ive looked at Bugsnag, Sentry and others, but I don't understand whether they will work for this use case.
Will these crash analytics tools give me info if I'm deploying a compiled Android build? Or is this a pre-compile solution?
One of the projects I worked with uses a combination of React Native and Expo to create Android and iOS versions of the app. The app is released in Google Play and Apple's App Store.
We experienced similar limitations with the crash reporting in Android Vitals and use Sentry for the error reporting. The crashes appear as errors in Sentry. They include additional information such as network requests and responses which can help debug some of the errors.
AFAIK Sentry still offer a free tier that a single developer can use. They and others offer paid-for services. One to consider is RayGun https://raygun.com/blog/react-native-monitoring/ (I've not tried it however the documentation looks like it may suit your needs).
PS: I just discovered that Expo endorse using Sentry https://docs.expo.dev/guides/using-sentry/ which is an encouraging indication Sentry should be suitable.
My application had a crash report on Feb 1, 2021.
Crash
LGE LG Premier Pro
Android 9 (SDK 28)
Playstore console crash have reported 40 times this report in CronetDynamite.apk
backtrace:
#00 pc 000000000018fb36
/data/user_de/0/com.google.android.gms/app_chimera/m/000001d4/CronetDynamite.apk (offset 0x1000)
Firebase Crashlytic does not show this crash... But Play console got this log
I didn't get what causes this crash, any help appreciated
I don't know the cause of the crash, however cronet is provided by Google, who describe it as:
Cronet is the Chromium network stack made available to Android apps as a library. Cronet takes advantage of multiple technologies that reduce the latency and increase the throughput of the network requests that your app needs to work.
https://developer.android.com/guide/topics/connectivity/cronet
My guess is they've got some unusual crash related to their library which is being used in your app somehow (perhaps even in the Firebase Crash Reporting SDK implementation?).
As you reported this crash 6 months ago I hope you've found a workaround or fix. Please do add an update here.
If you're still suffering from the issue, try raising a bug report with Google. The same web page says:
You can send feedback about the Cronet Library using the Chromium Issue Tracker. Check the list of bugs in the issue tracker to make sure that your issue hasn't already been reported. If your issue hasn't been reported, file a bug with the word Cronet in the summary line.
All the best
I have a project that I attempted to install Google Player Services through NuGet. Since trying to install the google package, my android support libraries as well as the google play service libraries are all showing up in my references as broken, no matter how I try to add, reinstall or change the references. They always break, throwing The "ResolveLibraryProjectImports" task failed unexpectedly. as an error in response.
I have looked around and tried everything that sounded remotely like my issue, to no avail. Any help would be appreciated.
I am running Xamarin v4.3.0.789 (4d2ed3d) with Xamarin.Android v7.1.0.43 (4a52f1e)
Not entirely sure why this fixed the issue. However after looking through, I realised that version of my packages had been updated, I assume that Google Player Services forced that, which then caused my whole project to go haywire.
Installed the version of packages I was using beforehand and it works again.
I create application in Android Studio, and send it to Google Play Store, after time i add library "littleprxy"(based on netty), and when it came time to send updated application in Google Play Console i see Supported platform : amd64-Linux-gpp, amd64-Windows-gpp, arm-Linux-gpp, i386-Linux-gpp, i386-MacOSX-gpp, x86_64-MacOSX-gpp, x86-Windows-gpp, and ofcourse 0 supported Android devices, but i can install apk manually, and it work fine.
How i can fix it? Maybe some parameters for gradle or manifest...
Sorry for English
LittlePrxy is written atop Netty. Netty is kind of "heavy" for Android. Most of Android devices are resource limit. memory footprint, cpu usage should be carefully treated. This is the reason why Netty doesn't support Android OS. Sure you will be able to use this lib but it is not recommended. This is why GooglePlay reports an error, because Android is not specified in the list of supported OS of this lib.
In short, you should not use LittlePrxy in your app. You should find another library.
We have an app on google play, and we are about to publish update, but testing update on JB device resulted in UnsatisfiedLinkError when calling System.loadLibrary("ourlib") in our code. ourlib is library compiled by us using NDK. This error shows only on 4.1 devices.
I suspect that it has something to do with new security on JB, app was first installed with Google Play with lets say version 1, and then reinstalled with version 2 using adb or from device using apk.
I could not find anything related to that on google, what could be the problem?
this problem
http://code.google.com/p/android/issues/detail?id=35962
looks similar but it appears that it was an error in google play actually.
Does that mean that you are trying to use standard/system library? Maybe the version of the library that you are trying to load does NOT contain particular functionality that you intend to use. Check android docs when the functionality became or stopped being available.
The solution is to use:
$ adb install -r -l my.apk
this makes apk to be reinstalled with use of forward-lock (aka. copy protection), I supose that because apk was upladed to google play with copy protection enabled then also forward-lock option in adb had to be added. I know JB introduced some changes with forward lock so this might be the case. I dont know internals of what really caused this problem, but above seems to work.