Search code examples
androidfirebaseandroid-ndkcrashlyticscrashlytics-android

Firebase Crashlytics does not support NDK?


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