Google Crashlytics is not providing useful NDK crash reports

I am writing a JUCE app for mobile (both Android and iOS), and would really like to have some kind of crash analytics in place so that I can provide better support to my users. However, I have hit a snag with Android (I have not yet tried setting it up for iOS yet).

Before I go any further though, I would just like to say that I know that JUCE has an analytics module, as well as a tutorial on how to use it with Google Analytics. However, from my understanding, Google has recently acquired fabric.io’s Crashlytics (which is now also known as Firebase Crashlytics) and Google Analytics is on shaky (if not soon to be deprecated) ground (see this JUCE forum post). I was also not able to follow the tutorial, as it asks for a Google “Tracking ID” this just does not seem to be a thing anymore (or perhaps ever) for Google’s Firebase platform.

Also, given the relative ease in which I was able to install Crashlytics (this involved changing a few config files and 0 lines of code) vs. the multiple steps involved in the JUCE analytics tutorial just to get Goolge Analytics (a platform which is, at best, approaching its sunset) does not make me very interested in this approach. Not to mention, it seems that I am so close to getting Crashlytics to work.

That being said, I have successfully installed Crashlytics in the app and verified that it can report crashes. I have also followed the instructions in the “Get Android NDK crash reports” guide. In the C source of the app, I wrote code that forces a crash when a button is clicked. After building my app, I ran the ./gradlew crashlyticsUploadSymbolsRelease command, as the guide instructs. After running the app and clicking the button, the app crashes as expected. It also reports the crash to Crashlytics, as expected (see screenshot). However, there is no useful information provided in Crashlytics, with each entry of the stack trace marked as “(Missing)”. See the screenshot below.

I have been exchanging emails with Google’s Firebase support team, and what they have said so far is

… we aren’t getting your symbol files (NDK https://docs.fabric.io/android/crashlytics/ndk.html#using-gradle), and therefore we don’t have the full set of information needed to display stack traces in plain text.

They then asked me to provide additional information …

How stripped binaries are built and packaged?

How debug binaries are built (if at all)?

Whether the binaries are being built as part of the Android app build or separately?

What tools are being used to generate the binaries?

Minimal repro that I can run locally (i.e. MCVE).

A copy of your Gradle file.

Have you migrated your app from Fabric to Firebase project, just to isolate migration issue?

When I provided as much of this information as possible and explained to them that I am using JUCE, the response I got back was

Let me confirm this with the team, if this is a supported combination of our products. I’ll keep you posted.

That was about 4 or 5 days ago now. I figure while I am waiting, I might as well throw the question out here too.

Can anyone help me?

Hi - Microsoft’s AppCenter supports NDK-based crash reporting. We’re using it in Wotja (which is JUCE-based on Android). I hope that helps you! Pete

1 Like