Personnaliser vos rapports d'erreur Firebase Crashlytics


Dans le tableau de bord Crashlytics, vous pouvez cliquer sur un problème pour obtenir le rapport sur les événements. Vous pouvez personnaliser ces rapports afin de mieux comprendre ce qui se passe dans votre application et les circonstances liées aux événements signalés Crashlytics

  • Obtenez automatiquement des journaux de fil d'Ariane si votre application utilise le SDK Firebase pour Google Analytics. Ces journaux vous donnent une visibilité actions des utilisateurs menant à un événement collecté par Crashlytics dans votre application.

  • Désactivez l'envoi automatique de rapports d'erreur et activer la création de rapports pour vos utilisateurs. Notez que, par par défaut, Crashlytics collecte automatiquement les rapports d'erreur les utilisateurs de votre application.

Ajouter des clés personnalisées

Les clés personnalisées vous permettent de connaître l'état spécifique de votre application pouvant entraîner un plantage. Vous pouvez associer des paires clé-valeur arbitraires à vos rapports d'erreur, puis utiliser les clés personnalisées pour rechercher et filtrer les rapports d'erreur dans la console Firebase.

  • Vous pouvez rechercher des problèmes dans le tableau de bord Crashlytics. correspondant à une clé personnalisée.

  • Lorsque vous examinez un problème spécifique dans la console, vous pouvez consulter la associées à chaque événement (sous-onglet Clés), et même filtrer les événements par clés personnalisées (menu Filtrer en haut de la page).

Utilisez la méthode d'instance setCustomKey pour définir des paires clé/valeur. Notez que setCustomKey est surchargé pour que le paramètre value accepte toute primitive ou String. Voici quelques exemples :

Kotlin+KTX

val crashlytics = Firebase.crashlytics
crashlytics.setCustomKeys {
    key("my_string_key", "foo") // String value
    key("my_bool_key", true) // boolean value
    key("my_double_key", 1.0) // double value
    key("my_float_key", 1.0f) // float value
    key("my_int_key", 1) // int value
}

Java

FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();

crashlytics.setCustomKey("my_string_key", "foo" /* string value */);

crashlytics.setCustomKey("my_bool_key", true /* boolean value */);

crashlytics.setCustomKey("my_double_key", 1.0 /* double value */);

crashlytics.setCustomKey("my_float_key", 1.0f /* float value */);

crashlytics.setCustomKey("my_int_key", 1 /* int value */);

Vous pouvez également modifier la valeur d'une clé existante en l'appelant et en la définissant sur une valeur différente. Exemple :

Kotlin+KTX

val crashlytics = Firebase.crashlytics
crashlytics.setCustomKeys {
    key("current_level", 3)
    key("last_UI_action", "logged_in")
}

Java

FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();

crashlytics.setCustomKey("current_level", 3);
crashlytics.setCustomKey("last_UI_action", "logged_in");

Ajoutez des paires clé/valeur de manière groupée en transmettant une instance de CustomKeysAndValues à la méthode d'instance setCustomKeys:

Kotlin+KTX

Pour Kotlin, la fonctionnalité existante est plus simple que d'utiliser l'outil de création CustomKeysAndValues.

crashlytics.setCustomKeys {
  key("str_key", "hello")
  key("bool_key", true)
  key("int_key", 1)
  key("long_key", 1L)
  key("float_key", 1.0f)
  key("double_key", 1.0)
}

Java

CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder()
.putString("string key", "string value")
.putString("string key 2", "string  value 2")
.putBoolean("boolean key", True)
.putBoolean("boolean key 2", False)
.putFloat("float key", 1.01)
.putFloat("float key 2", 2.02)
.build();

FirebaseCrashlytics.getInstance().setCustomKeys(keysAndValues);

Ajouter des messages de journal personnalisés

Pour obtenir plus de contexte sur les événements ayant précédé un plantage, vous pouvez ajouter des journaux Crashlytics personnalisés à votre application. Crashlytics associe les journaux. avec vos données de plantage et les affiche sur la page Crashlytics du Console Firebase, sous l'onglet Journaux

Utilisez log pour identifier les problèmes. Exemple :

Kotlin+KTX

Firebase.crashlytics.log("message")

Java

FirebaseCrashlytics.getInstance().log("message");

Définir des identifiants utilisateur

Pour diagnostiquer un problème, il est souvent utile de savoir lesquels de vos utilisateurs ont rencontré lors d'un plantage donné. Crashlytics permet d'identifier de manière anonyme les utilisateurs dans vos rapports d'erreur.

Pour ajouter des ID utilisateur à vos rapports, attribuez à chaque utilisateur un identifiant unique dans le champ la forme d'un numéro d'ID, d'un jeton ou d'une valeur hachée:

Kotlin+KTX

Firebase.crashlytics.setUserId("user123456789")

Java

FirebaseCrashlytics.getInstance().setUserId("user123456789");

Si vous devez effacer un identifiant utilisateur après l'avoir défini, réinitialisez la valeur une chaîne vide. Effacer un ID utilisateur ne supprime pas les enregistrements Crashlytics existants. Si vous devez supprimer les enregistrements associés à un utilisateur contactez l'assistance Firebase.

(Android NDK uniquement) Ajouter des métadonnées aux rapports d'erreur du NDK

Vous pouvez éventuellement inclure l'en-tête crashlytics.h dans votre code C++ pour ajouter des métadonnées aux rapports d'erreur du NDK, tels que des clés personnalisées, des journaux personnalisés et des identifiants utilisateur. Toutes ces options sont décrites sur cette page ci-dessus.

crashlytics.h est disponible en tant que bibliothèque C++ avec en-tête uniquement dans le Dépôt GitHub du SDK Firebase pour Android

Lisez les commentaires du fichier d'en-tête pour obtenir des instructions sur l'utilisation des API C++ du NDK.

Inclure les rapports GWP-ASan pour déboguer les problèmes de corruption de mémoire

Crashlytics peut vous aider à déboguer les plantages causés par des erreurs de mémoire native en la collecte de rapports GWP-ASan. Ces erreurs liées à la mémoire peuvent être associées à une corruption de la mémoire dans votre application, ce qui est la principale cause des failles de sécurité des applications.

  • Vous pouvez afficher ces données dans un nouvel onglet "Traces de pile de mémoire" lorsque vous cliquez sur les détails d'un problème dans le tableau de bord Crashlytics.

  • Vous pouvez également utiliser le nouveau signal et le nouveau filtre "Rapport GWP-ASan" pour afficher rapidement tous les problèmes liés à ces données.

Vous pouvez obtenir des rapports de mémoire GWP-ASan si vous activez explicitement GWP-ASan dans votre application et utilisez le SDK Crashlytics pour le NDK 18.3.6 ou version ultérieure (Firebase BoM 31.3.0 ou version ultérieure). Vous pouvez tester votre configuration GWP-ASan à l'aide de l'exemple de code natif dans la documentation Android.

Signaler des exceptions non fatales

En plus de signaler automatiquement les plantages de votre application, Crashlytics permet vous enregistrez des exceptions non fatales et vous les enverrez la prochaine fois que votre application lancements.

Utilisez la méthode recordException pour enregistrer les exceptions non fatales dans les blocs catch de votre application. Exemple :

Kotlin+KTX

try {
    methodThatThrows()
} catch (e: Exception) {
    Firebase.crashlytics.recordException(e)
    // handle your exception here
}

Java

try {
    methodThatThrows();
} catch (Exception e) {
    FirebaseCrashlytics.getInstance().recordException(e);
    // handle your exception here
}

Toutes les exceptions enregistrées apparaissent comme des problèmes non critiques dans la console Firebase. Le résumé du problème contient toutes les informations d'état que vous obtenez normalement en cas de plantage, ainsi que des répartitions par version d'Android et appareil matériel.

Crashlytics traite les exceptions sur un thread d'arrière-plan dédié pour minimiser l'impact sur les performances de votre application. Pour réduire l'utilisation du réseau du trafic, Crashlytics regroupe les exceptions journalisées et leur envoie le au prochain lancement de l'application.

Obtenir les journaux des fils d'Ariane

Les journaux de breadcrumb vous permettent de mieux comprendre les interactions d'un utilisateur avec votre application avant un plantage, un problème non fatal ou un événement ANR. Ces journaux peuvent être utile lorsque vous essayez de reproduire et de déboguer un problème.

Les journaux de fil d'Ariane étant fournis par Google Analytics, vous devez besoin de activer Google Analytics pour votre projet Firebase ajouter le SDK Firebase pour Google Analytics à votre application. Une fois ces conditions remplies, les journaux de fil d'Ariane sont automatiquement incluses dans les données d'un événement dans l'onglet Journaux lorsque vous affichez les détails d'un problème.

SDK Analytics enregistre automatiquement l'événement screen_view ce qui permet aux journaux du fil d'Ariane d'afficher la liste des écrans vus avant le plantage, non fatal ou ANR. Un journal de fil d'Ariane screen_view contient un paramètre firebase_screen_class.

Les journaux de fil d'Ariane sont également renseignés par tous les événements personnalisés que vous enregistrez manuellement dans la session de l'utilisateur, y compris les données de paramètre de l'événement. Ces données peuvent aider à afficher une série d'actions utilisateur ayant conduit à un plantage, un problème non fatal ou un événement ANR.

Notez que vous pouvez contrôler la collecte et l'utilisation des données Google Analytics, qui inclut les données qui renseignent les journaux de fil d'Ariane.

Activer les rapports nécessitant une confirmation

Par défaut, Crashlytics collecte automatiquement les rapports d'erreur pour tous les utilisateurs de votre application. Pour permettre aux utilisateurs de mieux contrôler les données qu'ils envoient, vous pouvez activer les rapports nécessitant une confirmation en désactivant les rapports automatiques et en n'envoyant des données à Crashlytics que lorsque vous le souhaitez dans votre code :

  1. Dans le bloc application de votre fichier AndroidManifest.xml, ajoutez une balise meta-data pour désactiver la collecte automatique :

    <meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="false" />
    
  2. Activez la collecte pour certains utilisateurs en appelant le forçage de la collecte de données Crashlytics au moment de l'exécution. La valeur de forçage persiste à chaque lancement de votre application afin que Crashlytics puisse collecter automatiquement des rapports. Pour désactiver cette fonctionnalité, procédez comme suit : des rapports automatiques d'erreur, transmettez false comme valeur de remplacement. Une fois défini à false, la nouvelle valeur ne s'applique qu'à la prochaine exécution de l'application.

    Kotlin+KTX

    Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)

    Java

    FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);

Gérer les données Crash Insights

Les insights sur les plantages vous aident à résoudre les problèmes en comparant vos traces de pile anonymisées à celles d'autres applications Firebase, et en vous indiquant si votre problème fait partie d'une tendance plus large. Pour de nombreux problèmes, Crash Insights fournit même des ressources pour vous aider à déboguer le plantage.

Crash Insights utilise des données de plantage agrégées pour identifier les tendances de stabilité courantes. Si vous préférez ne pas partager les données de votre application, vous pouvez désactiver Crash Insights Dans le menu Crash Insights, en haut de la liste des problèmes Crashlytics dans la console Firebase.