77 votes

Comment désactiver Firebase Crash Reporting lorsque l'application fonctionne en mode débogage ?

J'ai implémenté avec succès Firebase Crash Reporting, mais j'ai besoin de désactiver le service lorsque l'application est en cours d'exécution et d'annuler la variante de construction 'debug', afin d'éviter des crashs non réels dans la console pendant le développement.

La documentation officielle ne dit rien à ce sujet.

0 votes

if (!development) { FirebaseCrash.report(e);}

1 votes

Merci, @James_Parsons, mais ce n'est pas ce que je voulais dire. J'ai besoin de désactiver le rapport automatique de crash, pas seulement les appels manuels à l'API.

0 votes

releaseCompile 'com.google.firebase:firebase-crash:9.8.0' cela ne fonctionnera pas ? il est censé ajouter la dépendance uniquement pour vos constructions de version, donc pendant le développement la bibliothèque ne sera pas ajoutée au projet, n'est-ce pas ?

48voto

WoogieNoogie Points 905

MISE À JOUR : Avec Google Play Services / Firebase 11+, vous pouvez désormais désactiver les rapports de panne au moment de l'exécution. FirebaseCrash.setCrashCollectionEnabled() (Merci @Tyler Carberry )

ANCIENNE RÉPONSE :

Il n'y a pas de support officiel pour cela, pour autant que la communauté ait pu le supposer. La meilleure façon de procéder est de configurer plusieurs applications Firebase dans votre tableau de bord, une pour chaque type de construction, et de configurer plusieurs fichiers google_services.json dirigeant vers chaque application différente en fonction de la variante de construction.

0 votes

Ok, ça pourrait être utile. Comment puis-je modifier le google_services.json pour qu'il puisse dépendre de ma variante de construction actuelle ? Pour autant que je sache, vous ne pouvez définir des fichiers différents en fonction de la variante de construction que s'ils se trouvent dans le fichier app/src/{flavor} mais ce fichier se trouve dans le répertoire app répertoire Racine

0 votes

Oui, vous avez tout à fait raison, vous devez juste déplacer les choses. Créez le répertoire app/src/release et déplacez-y le fichier google_services.json actuel, puis placez les nouveaux fichiers générés pour chaque type d'application dans les autres dossiers.

1 votes

Merci ! Le tweak a été utile. J'espère voir cette fonctionnalité bientôt dans le SDK de Firebase.

32voto

Tyler Carberry Points 290

Avec Google Play Services 11.0, vous pouvez désormais désactiver le signalement des pannes au moment de l'exécution.

FirebaseCrash.setCrashCollectionEnabled(!BuildConfig.DEBUG);

28voto

evi Points 505

Récemment a été introduit la possibilité de désactiver le rapport de crash de Firebase d'une manière officielle. Vous devez mettre à jour le sdk Android de Firebase à la version 11.0.0 au moins.

Pour ce faire, vous devez modifier votre fichier AndroidManifest.xml et ajoutez :

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

A l'intérieur de la <application> bloc.

Vous pouvez vérifier si le rapport de crash de Firebase est activé au moment de l'exécution en utilisant [FirebaseCrash.isCrashCollectionEnabled()](https://developers.google.com/android/reference/com/google/firebase/crash/FirebaseCrash.html#isCrashCollectionEnabled()) .

Ci-dessous un exemple complet pour désactiver le rapport de crash de Firebase dans vos builds de débogage.

build.gradle :

...
 buildTypes {

    release {
        ...
        resValue("bool", "FIREBASE_CRASH_ENABLED", "true")
    }

    debug {
        ...
        resValue("bool", "FIREBASE_CRASH_ENABLED", "false")

    }

}
...
dependencies {
    ...
    compile "com.google.firebase:firebase-core:11.0.0"
    compile "com.google.firebase:firebase-crash:11.0.0"
    ...
}

AndroidManifest.xml :

 <application>

    <meta-data
        android:name="firebase_crash_collection_enabled"
        android:value="@bool/FIREBASE_CRASH_ENABLED"/>
...

0 votes

Est-ce que le drapeau firebase_crash_collection_enabled fonctionne pour la version 9.2.1 de Firebase ?

0 votes

@rraallvv non, la fonctionnalité n'était pas encore disponible.

0 votes

C'est une excellente solution et elle est basée sur le mécanisme documenté de désactivation de Crashlytics. Au fait, la clé du manifeste est désormais "firebase_crashlytics_collection_enabled".

11voto

Marc D Points 190

Dans ma classe d'application, onCreate()

if (BuildConfig.DEBUG) {
    Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
        @Override
        public void uncaughtException(Thread paramThread, Throwable paramThrowable) {
            Log.wtf("Alert", paramThrowable.getMessage(), paramThrowable);
            System.exit(2); //Prevents the service/app from freezing
        }
    });
}

Cela fonctionne parce qu'il prend le oldHandler, qui inclut celui de Firebase.

 final UncaughtExceptionHandler oldHandler = Thread.getDefaultUncaughtExceptionHandler();

hors de la voie de traitement

11voto

Martin Wallgren Points 149

Vous pouvez changer la dépendance de firebase crash en une dépendance de version seulement.

Pour ce faire, vous le définissez comme une dépendance releaseCompile

releaseCompile 'com.google.firebase:firebase-crash:9.4.0'

Désormais, il ne sera inclus que dans les versions de lancement. Si vous avez d'autres types de builds personnalisés pour lesquels vous voulez un rapport d'erreur, vous pouvez l'ajouter à ceux-ci.

customBuildTypeCompile 'com.google.firebase:firebase-crash:9.4.0'

6 votes

Pour info, même en utilisant cette méthode, il semble que Firebase enregistre tous les crashs dans une base de données, et si jamais vous installez une version sur votre émulateur (pour tester ProGuard, par exemple), il téléchargera alors TOUS les crashs enregistrés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X