| Sélectionnez une plate-forme : | iOS+ Android Flutter Unity |
Dans le tableau de bord Crashlytics, vous pouvez cliquer sur un problème pour obtenir un rapport d'événement détaillé. Vous pouvez personnaliser ces rapports pour mieux comprendre ce qui se passe dans votre application et les circonstances des événements signalés à Crashlytics.
Instrumentez votre application pour enregistrer des clés personnalisées, messages de journal personnalisés, et des identifiants utilisateur.
Signalez les exceptions à Crashlytics.
Obtenez automatiquement des journaux de navigation si votre application utilise le SDK Firebase pour Google Analytics. Ces journaux vous donnent une visibilité sur les actions de l'utilisateur ayant conduit à un événement collecté par Crashlyticsdans votre application.
Désactivez le signalement automatique des plantages et activez le signalement sur activation pour vos utilisateurs. Notez que, par défaut, Crashlytics collecte automatiquement les rapports de plantage pour tous 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 de plantage, puis utiliser les clés personnalisées pour rechercher et filtrer les rapports de plantage dans la Firebase console.
Dans le Crashlytics tableau de bord, vous pouvez rechercher les problèmes qui correspondent à 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 n'importe quel argument primitif ou String. Voici quelques exemples :
Kotlin
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. Exemple :
Kotlin
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 bloc en transmettant une instance de CustomKeysAndValues à la méthode d'instance setCustomKeys :
Kotlin
Pour Kotlin, la fonctionnalité existante est plus simple que l'utilisation du compilateur 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 conduit à un plantage, vous pouvez ajouter des journaux Crashlytics personnalisés à votre application. Crashlytics associe les journaux à vos données de plantage et les affiche sur la page Crashlytics de la Firebase console, sous l'onglet Journaux.
Utilisez log pour identifier les problèmes. Exemple :
Kotlin
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 quels utilisateurs ont rencontré un plantage donné. Crashlytics inclut un moyen d'identifier anonymement les utilisateurs dans vos rapports de plantage.
Pour ajouter des ID utilisateur à vos rapports, attribuez à chaque utilisateur un identifiant unique sous la forme d'un numéro d'ID, d'un jeton ou d'une valeur hachée :
Kotlin
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 sur une chaîne vide. L'effacement d'un identifiant utilisateur ne supprime pas les enregistrements existants Crashlytics. Si vous devez supprimer des enregistrements associés à un ID utilisateur, contactez l'assistance Firebase.
(NDK Android uniquement) Ajouter des métadonnées aux rapports de plantage 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
dépôt GitHub du SDK Firebase Android.
Lisez les commentaires du fichier d'en-tête pour obtenir des instructions sur l'utilisation des API C++ NDK.
Inclure des rapports GWP-ASan pour déboguer les problèmes de mémoire corrompue
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 mémoire corrompue dans votre application, qui est la principale cause des failles de sécurité des applications.
Vous pouvez afficher ces données dans un nouvel onglet "Traces de la pile de mémoire" lorsque vous cliquez sur les détails d'un problème dans le Crashlytics tableau de bord.
Vous pouvez également utiliser le nouveau signal "Rapport GWP-ASan" et le filtre 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 Crashlytics SDK 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 les exceptions non fatales et de vous les envoyer lors du prochain lancement de votre application.
Utilisez la méthode recordException pour enregistrer les exceptions non fatales dans les blocs catch de votre application. Exemple :
Kotlin
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 }
Vous pouvez également associer des clés personnalisées à l'exception non fatale spécifique. Exemple :
Kotlin
try { methodThatThrows() } catch (e: Exception) { Firebase.crashlytics.recordException(e) { key("string key", "string value") key("boolean key", true) key("float key", Float.MAX_VALUE) } // handle your exception here }
Java
try { methodThatThrows(); } catch (Exception e) { CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder() .putString("string key", "string value") .putBoolean("boolean key", true) .putFloat("float key", Float.MAX_VALUE) .build(); FirebaseCrashlytics.getInstance().recordException(e, keysAndValues); // handle your exception here }
Toutes les exceptions enregistrées apparaissent comme des problèmes non fatals dans la Firebase console. Le résumé du problème contient toutes les informations d'état que vous obtenez normalement des plantages, ainsi que des répartitions par version Android et appareil matériel.
Crashlytics traite les exceptions sur un thread d'arrière-plan dédié afin de 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 lors du prochain lancement de l'application.
Obtenir des journaux de navigation
Les journaux de navigation vous permettent de mieux comprendre les interactions d'un utilisateur avec votre application ayant conduit à un plantage, un problème non fatal ou un événement ANR. Ces journaux peuvent être utiles lorsque vous essayez de reproduire et de déboguer un problème.
Les journaux de navigation sont alimentés par Google Analytics. Pour les obtenir, vous devez activer Google Analytics pour votre projet Firebase et ajouter le SDK Firebase pour Google Analytics à votre application. Une fois ces conditions remplies, les journaux de navigation sont automatiquement inclus avec les données d'un événement dans l'onglet Journaux lorsque vous affichez les détails d'un problème.
Le Analytics SDK
enregistre automatiquement l'événement screen_view, ce qui permet aux journaux de navigation d'afficher une liste des écrans consultés avant le
plantage, le problème non fatal ou l'événement ANR. Un journal de navigation screen_view contient un paramètre firebase_screen_class.
Les journaux de navigation sont également remplis avec 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 montrer 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, y compris les données qui remplissent les journaux de navigation.
Activer le signalement sur activation
Par défaut, Crashlytics collecte automatiquement les rapports de plantage 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 le signalement sur activation en désactivant le signalement automatique et en n'envoyant des données à Crashlytics que lorsque vous le choisissez dans votre code.
Dans le bloc
applicationde votre fichierAndroidManifest.xml, ajoutez une balisemeta-datapour 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 Crashlytics remplacement de la collecte de données au moment de l'exécution. La valeur de remplacement persiste lors de tous les lancements ultérieurs de votre application. Crashlytics peut ainsi collecter automatiquement des rapports pour cet utilisateur.
Kotlin
Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)
Java
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
Si l'utilisateur désactive ultérieurement la collecte de données, vous pouvez transmettre
falsecomme valeur de remplacement. Cette valeur s'appliquera lors du prochain lancement de l'application par l'utilisateur et persistera lors de tous les lancements ultérieurs pour cet utilisateur.
Gérer les données Crash Insights
Crash Insights vous aide à résoudre les problèmes en comparant vos traces de la 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 votre liste de problèmes Crashlytics dans la console Firebase.
Étapes suivantes
- Exportez vos données vers BigQuery ou Cloud Logging pour bénéficier d'analyses et de fonctionnalités avancées, comme l'interrogation de vos données, la création de tableaux de bord personnalisés et la configuration d'alertes personnalisées.