web-dev-qa-db-fra.com

Impossible de désactiver Crashlytics dans une application Firebase (plus)

Après la mise à niveau vers com.crashlytics.sdk.Android:crashlytics:2.7.1@aar (depuis 2.6.8), je ne peux plus désactiver Crashlytics dans mon application Firebase.

Il semble qu'il y ait du code dans la bibliothèque Crashlytics elle-même qui initialise Fabric avec le kit Crashlytics activé chaque fois qu'il détecte qu'il s'exécute dans une application Firebase. En effet l'initialisation avec Crashlytics activé et avec ext.enableCrashlytics = false lève une exception UnmetDependencyException et plante l'application au démarrage (en fait, avant mon code dans Application.onCreate s'exécute).

Quelqu'un connaît-il une solution pour cela? Rester avec 2.6.8 fonctionne pour l'instant. C'est ce que j'ai dans mon code qui fonctionnait jusqu'à une mise à niveau:

app/build.gradle:

ext.enableCrashlytics = false

Application.Java (onCreate, corps de méthode complet comme demandé):

super.onCreate();
if (LeakCanary.isInAnalyzerProcess(this)) {
    return;
}
LeakCanary.install(this);
// First Fabric invocation
Fabric.with(this, new Crashlytics.Builder().core(
    new CrashlyticsCore.Builder().disabled(true).build()).build());
RxJavaPlugins.setErrorHandler(e -> LOGGER.error("Undeliverable RxJava error", e));
// First Firebase invocation
FirebaseDatabase db = FirebaseDatabase.getInstance();
if (BuildConfig.DEBUG) {
    db.setLogLevel(com.google.firebase.database.Logger.Level.DEBUG);
}
db.setPersistenceEnabled(true);
16
J. Williams

Mike de Fabric ici. Utilisation:

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

si vous souhaitez désactiver Crashlytics lors de l'utilisation de Firebase.

23
Mike Bonnell

selon la réponse de mike, j'ajoute mon code:

Gradle:

buildTypes {
   release {
        manifestPlaceholders = [crashlyticsEnabled: true]
    }

    debug {
        manifestPlaceholders = [crashlyticsEnabled: false]
    }
}

Manifest.xml:

<meta-data
    Android:name="firebase_crashlytics_collection_enabled"
    Android:value="${crashlyticsEnabled}" />
32
itzhar

Avec les micros ci-dessus,

Si vous définissez des propriétés de plantage Firebase quelque part dans votre code, assurez-vous de ne pas les définir pour le code de débogage, sinon vous pourriez remarquer un comportement étrange pour l'application.

   if (!BuildConfig.DEBUG) {
       Crashlytics.setUserIdentifier(DataStore.storeId)
   }
1
Ninja420