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