Firebase Crashlytics does not support NDK?

Issue

When you want to use Crashlytics NDK, you need call Fabric.with(this, new Crashlytics(),new CrashlyticsNdk()); But Firebase Crashlytics calls Fabric.with(context, new Kit[]{new Crashlytics()}); on startup. As the result you cannot use Crashlytics NDK.

How can I avoid this problem?

public class CrashlyticsInitProvider extends ContentProvider {
private static final String TAG  "CrashlyticsInitProvider";

public CrashlyticsInitProvider() {
}

public boolean onCreate() {
    Context context  this.getContext();
    FirebaseInfo firebaseInfo  new FirebaseInfo();
    CrashlyticsInitProvider.EnabledCheckStrategy enabledCheckStrategy  new ManifestEnabledCheckStrategy();
    if (this.shouldInitializeFabric(context, firebaseInfo, enabledCheckStrategy)) {
        try {
            Fabric.with(context, new Kit[]{new Crashlytics()}); // !here
            Fabric.getLogger().i("CrashlyticsInitProvider", "CrashlyticsInitProvider initialization successful");
        } catch (IllegalStateException var5) {
            Fabric.getLogger().i("CrashlyticsInitProvider", "CrashlyticsInitProvider initialization unsuccessful");
            return false;
        }
    }

    return true;
}

Solution

Add this to your AndroidManifest.xml:

<meta-data android:name"firebase_crashlytics_collection_enabled" android:value"false" />

Then initialise Crashlytics manually in your Application subclass:

Fabric fabric  new Fabric.Builder(this)
                .kits(new Crashlytics(), new CrashlyticsNdk())
                .build();
Fabric.with(fabric);

See https://firebase.google.com/docs/crashlytics/force-a-crash#enable_debug_mode

Answered By – NickG

Leave a Comment