9 votes

Désactiver les crashlytics de firebase pour Android

Je développe une application Android et j'ai intégré le SDK de firebase et firebase crashlytics.

Je veux permettre à l'utilisateur de désactiver les rapports d'accident (pour assurer la conformité avec le GDPR - je suppose que les rapports d'accident sont liés au GDPR) et j'ai besoin d'un moyen pour que l'utilisateur puisse les désactiver via les paramètres de l'application.

J'ai trouvé les documents à l'adresse suivante https://firebase.google.com/docs/crash/disable-sdk mais quand j'essaie et la ligne :

FirebaseCrash.setCrashCollectionEnabled(true);

Android Studio me donne l'erreur cannot resolve symbol 'FirebaseCrash'

Cela doit être fait de manière programmatique au moment de l'exécution de l'application.

19voto

Abhishek Rana Points 191

Dans votre module build gradle...

    release {
        //true value to send the crashlytics to the firebase
        manifestPlaceholders = [crashlyticsCollectionEnabled: "true"]
    }

    debug {
        //false value to stop sending the crashlytics to the firebase
        manifestPlaceholders = [crashlyticsCollectionEnabled: "false"]
    }

Dans le manifeste

 <meta-data
       android:name="firebase_crashlytics_collection_enabled"
       android:value="${crashlyticsCollectionEnabled}" />

12voto

Ashvin solanki Points 2205

Désactiver Crashlytics au moment de l'exécution

// Set up Crashlytics, disabled for debug builds
    Crashlytics crashlyticsKit = new Crashlytics.Builder()
    .core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
    .build();

    Fabric.with(this, crashlyticsKit);       

Ex

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Set up Crashlytics, disabled for debug builds
    Crashlytics crashlyticsKit = new Crashlytics.Builder()
    .core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
    .build();

    Fabric.with(this, crashlyticsKit);
    setContentView(R.layout.activity_main);

}

Plus de

boolean Agrees = value;
if(Agrees)
{
    Fabric.with(this,new Crashlytics());
}
else
 {
   CrashlyticsCore core = new CrashlyticsCore.Builder().disabled(true).build();
   Fabric.with(this,  new Crashlytics.Builder().core(core).build());

throw new RuntimeException("why doesn't this show up in Firebase Crashlytics?");
 }

Edit 2

Ref : Crashlytics de Fabric avec Firebase ne peut pas être désactivé pour les constructions DEBUG

En Documentation Firebase Crashlytics explique qu'une fois que le reporting est activé dans une session d'application, il ne peut pas être désactivé.

Par défaut, les rapports Crashlytics sont activés dans un fichier de type ContentProvider nommé CrashlyticsInitProvider qui s'exécute avant votre Application est créée. CrashlyticsInitProvider active ou désactive le rapport basé sur la valeur des méta-données firebase_crashlytics_collection_enabled qui, par défaut, est vrai.

Si vous souhaitez désactiver le reporting, il est essentiel que les métadonnées du manifeste soient présentes et définies sur false :

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

Regardez dans le logcat pendant l'initialisation de l'application pour trouver le message :

CrashlyticsInitProvider: CrashlyticsInitProvider initialization successful

Si le message est présent, firebase_crashlytics_collection_enabled est vrai. Si le message n'est pas présent, vous avez réussi à paramétrer les métadonnées pour désactiver le rapport d'accident.

Si les méta-données sont absentes ou définies à true, vous ne pouvez pas désactiver le rapport dans votre code en utilisant un appel à Fabric.with(...) .

Dans un commentaire à une autre réponse, vous indiquez que vous avez essayé de désactiver le reporting en utilisant les méta-données sans y parvenir. Vérifiez qu'il n'y a pas de faute de frappe et assurez-vous que la déclaration est correctement placée dans le champ <application> élément. Dans mes tests, je suis capable de désactiver le reporting en utilisant les méta-données et de l'activer au moment de l'exécution.

10voto

Anis MARZOUK Points 206

Avec le nouveau SDK de Firebase Crashlytics, pour désactiver le rapport de crash, vous devez utiliser ceci méthode : setCrashlyticsCollectionEnabled

if (BuildConfig.DEBUG) {
  FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(false)
}

2voto

Phileo99 Points 319

Si vous souhaitez désactiver complètement les rapports de collision Firebase ET ne pas avoir à ajouter l'option

com.crashlytics.sdk.android:crashlytics:2.9.1

la dépendance, alors :

Ajoutez ceci au build.gradle de votre application :

android {

    // ...

    defaultConfig {
        manifestPlaceholders = [enableCrashReporting:"false"]
        ....
    }

}

et ajoutez-la également à votre AndroidManifest.xml :

<application ...>

    // ...

    <meta-data 
            android:name="firebase_crashlytics_collection_enabled" 
            android:value="${enableCrashReporting}" />
    <meta-data
            android:name="firebase_analytics_collection_deactivated"
            android:value="true"/>
</application>

1voto

Anisuzzaman Babla Points 1746

FirebaseCrash.setCrashCollectionEnabled(true); n'est plus supporté dans la nouvelle version de Firebase Crash qui s'appelle Crashlytics. Pour en savoir plus https://firebase.google.com/docs/crash/

FirebaseCrash.setCrashCollectionEnabled(true);

est remplacé par

Fabric.with(this, new Crashlytics());

Jetez un coup d'œil https://firebase.google.com/docs/crashlytics/upgrade-from-crash-reporting#set_up_manual_initialization

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