Ce guide explique comment personnaliser vos rapports d'erreur à l'aide du SDK Firebase Crashlytics. Par défaut, Crashlytics collecte automatiquement les rapports d'erreur pour tous les utilisateurs de votre application (vous pouvez désactiver les rapports d'erreur automatiques et activer les rapports d'activation pour vos utilisateurs à la place). Crashlytics fournit quatre mécanismes de journalisation prêts à l'emploi : clés personnalisées , journaux personnalisés , identifiants utilisateur et exceptions interceptées .
Ajouter des clés personnalisées
Les clés personnalisées vous aident à obtenir l'état spécifique de votre application menant à un crash. 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.
Dans le tableau de bord Crashlytics , vous pouvez rechercher les problèmes correspondant à une clé personnalisée.
Lorsque vous examinez un problème spécifique dans la console, vous pouvez afficher les clés personnalisées 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 tout argument primitif 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 appelant la clé et en lui attribuant une valeur différente. Par 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 en masse en transmettant une instance de CustomKeysAndValues
à la méthode d'instance setCustomKeys
:
Kotlin+KTX
Pour Kotlin, la fonctionnalité existante est plus simple que l'utilisation du générateur 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 vous donner plus de contexte sur les événements ayant conduit à un crash, vous pouvez ajouter des journaux Crashlytics personnalisés à votre application. Crashlytics associe les journaux à vos données de crash et les affiche sur la page Crashlytics de la console Firebase , sous l'onglet Journaux .
Utilisez log
pour vous aider à identifier les problèmes. Par exemple:
Kotlin+KTX
Firebase.crashlytics.log("message")
Java
FirebaseCrashlytics.getInstance().log("message");
Définir les identifiants des utilisateurs
Pour diagnostiquer un problème, il est souvent utile de savoir lequel de vos utilisateurs a rencontré un crash donné. Crashlytics inclut un moyen 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 sous la forme d'un numéro d'identification, d'un jeton ou d'une valeur hachée :
Kotlin+KTX
Firebase.crashlytics.setUserId("user123456789")
Java
FirebaseCrashlytics.getInstance().setUserId("user123456789");
Si jamais vous devez effacer un identifiant utilisateur après l'avoir défini, réinitialisez la valeur sur une chaîne vide. La suppression d'un identifiant utilisateur ne supprime pas les enregistrements Crashlytics existants. Si vous devez supprimer des enregistrements associés à un ID utilisateur, contactez l'assistance Firebase .
(Android NDK uniquement) Ajouter des métadonnées aux rapports de plantage du NDK
Vous pouvez éventuellement inclure l'en-tête crashlytics.h
dans votre code C++ pour ajouter des métadonnées aux rapports de plantage NDK, telles 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++ d'en-tête uniquement dans le référentiel GitHub du SDK Android Firebase .
Lisez les commentaires dans le fichier d'en-tête pour obtenir des instructions sur l'utilisation des API NDK C++.
Inclure des 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 collectant des rapports GWP-ASan. Ces erreurs liées à la mémoire peuvent être associées à une corruption de la mémoire au sein de votre application, qui est la principale cause de vulnérabilités de sécurité des applications.
Vous pouvez afficher ces données dans un nouvel onglet « Traces de la pile 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 visualiser rapidement tous les problèmes liés à ces données.
Vous pouvez obtenir des rapports sur la mémoire GWP-ASan si vous activez explicitement GWP-ASan dans votre application et utilisez le SDK Crashlytics pour NDK v18.3.6+ (Firebase BoM v31.3.0+). Vous pouvez tester votre configuration GWP-ASan à l'aide de l' exemple de code natif dans la documentation Android .
Signaler les exceptions non fatales
En plus de signaler automatiquement les plantages de votre application, Crashlytics vous permet d'enregistrer des exceptions non fatales et de vous les envoyer au prochain lancement de votre application.
Utilisez la méthode recordException
pour enregistrer les exceptions non fatales dans les blocs catch
de votre application. Par 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 fatals dans la console Firebase. Le résumé du problème contient toutes les informations d'état que vous obtenez normalement en cas de crash, ainsi que les pannes par version d'Android et par périphérique 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 le trafic réseau de vos utilisateurs, Crashlytics regroupe les exceptions enregistrées et les envoie au prochain lancement de l'application.
Activer les rapports d'adhésion
Par défaut, Crashlytics collecte automatiquement les rapports d'erreur pour tous les utilisateurs de votre application. Pour donner aux utilisateurs plus de contrôle sur les données qu'ils envoient, vous pouvez activer les rapports opt-in en désactivant les rapports automatiques et en envoyant les données à Crashlytics uniquement lorsque vous le souhaitez dans votre code :
Dans le bloc
application
de votre fichierAndroidManifest.xml
, ajoutez une balisemeta-data
pour désactiver la collecte automatique :<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
Activez la collecte pour certains utilisateurs en appelant le remplacement de la collecte de données Crashlytics au moment de l'exécution. La valeur de remplacement persiste lors des lancements de votre application afin que Crashlytics puisse collecter automatiquement des rapports. Pour désactiver le rapport automatique d'incidents, transmettez
false
comme valeur de remplacement. Lorsqu'elle est définie surfalse
, la nouvelle valeur ne s'applique pas jusqu'à 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
Crash Insights vous aide à résoudre les problèmes en comparant vos traces de pile anonymisées aux traces 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 crash.
Crash Insights utilise des données d'accident agrégées pour identifier les tendances courantes en matière de stabilité. 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 votre liste de problèmes Crashlytics dans la console Firebase .