Vous pouvez exporter vos données Crashlytics vers BigQuery pour une analyse plus approfondie. BigQuery vous permet d'analyser les données à l'aide de BigQuery SQL, de les exporter vers un autre fournisseur de cloud et de les utiliser pour la visualisation et des tableaux de bord personnalisés avec Google Data Studio.
Activer l'exportation BigQuery
- Accédez à la page Intégrations dans la console Firebase.
- Dans la fiche BigQuery , cliquez sur Lien .
- Suivez les instructions à l'écran pour activer BigQuery.
Lorsque vous associez votre projet à BigQuery :
- Firebase configure des synchronisations quotidiennes de vos données de votre projet Firebase vers BigQuery.
- Par défaut, toutes les applications de votre projet sont liées à BigQuery et toutes les applications que vous ajoutez ultérieurement au projet sont automatiquement liées à BigQuery. Vous pouvez gérer quelles applications envoient des données .
- Firebase exporte une copie de vos données existantes vers BigQuery. Pour chaque application liée, cela inclut un tableau de lots contenant les données de la synchronisation quotidienne.
- Si vous activez l'exportation en streaming Crashlytics BigQuery, toutes les applications liées disposeront également d'un tableau en temps réel contenant des données constamment mises à jour.
Pour désactiver l'exportation BigQuery, dissociez votre projet dans la console Firebase.
Quelles données sont exportées vers BigQuery ?
Les données Firebase Crashlytics sont exportées dans un ensemble de données BigQuery nommé firebase_crashlytics
. Par défaut, des tables individuelles seront créées dans l'ensemble de données Crashlytics pour chaque application de votre projet. Firebase nomme les tables en fonction de l'identifiant du bundle de l'application, avec des points convertis en traits de soulignement et un nom de plate-forme ajouté à la fin.
Par exemple, les données d'une application portant l'ID com.google.test
se trouveraient dans une table nommée com_google_test_ANDROID
. Ce tableau de lots est mis à jour une fois par jour. Si vous activez l'exportation en streaming Crashlytics BigQuery, les données Firebase Crashlytics seront également diffusées en temps réel vers com_google_test_ANDROID_REALTIME
.
Chaque ligne d'un tableau représente un événement survenu dans l'application, notamment les plantages, les erreurs non fatales et les ANR.
Activer l'exportation en streaming Crashlytics BigQuery
Vous pouvez diffuser vos données Crashlytics en temps réel avec BigQueryStreaming . Vous pouvez l'utiliser à toute fin nécessitant des données en direct, comme présenter des informations dans un tableau de bord en direct, regarder un déploiement en direct ou surveiller les problèmes d'application qui déclenchent des alertes et des flux de travail personnalisés.
L'exportation en streaming Crashlytics BigQuery n'est pas disponible pour le bac à sable BigQuery.
Lorsque vous activez l'exportation en streaming Crashlytics BigQuery, en plus de la table par lots, vous disposez d'une table en temps réel. Voici les différences que vous devez connaître entre les tables :
Tableau des lots | Tableau en temps réel |
---|---|
|
|
La table de lots est idéale pour l'analyse à long terme et l'identification des tendances au fil du temps, car nous stockons durablement les événements avant de les écrire, et ils peuvent être renseignés dans la table jusqu'à 90 jours. Lorsque nous écrivons des données dans votre table en temps réel, nous les écrivons immédiatement dans BigQuery, ce qui en fait un outil idéal pour les tableaux de bord en direct et les alertes personnalisées. Ces deux tables peuvent être combinées avec une requête d’assemblage pour bénéficier des avantages des deux. Voir l'exemple de requête 9 ci-dessous.
Par défaut, la table en temps réel a un délai d'expiration de partition de 30 jours. Pour savoir comment modifier cela, consultez Mise à jour de l'expiration de la partition .
Activer le streaming Crashlytics BigQuery
Pour activer le streaming, accédez à la section Crashlytics de la page des intégrations BigQuery et cochez la case Inclure le streaming .
Modèle de studio de données
Pour activer les données en temps réel dans votre modèle Data Studio, suivez les instructions dans Visualisation des données Crashlytics exportées avec Data Studio .
Vues
Vous pouvez transformer les exemples de requêtes ci-dessous en vues à l'aide de l'interface utilisateur BigQuery. Voir Création de vues pour des instructions détaillées.
Que pouvez-vous faire avec les données exportées ?
Les exportations BigQuery contiennent des données brutes sur les plantages, notamment le type d'appareil, le système d'exploitation, les exceptions (applications Android) ou les erreurs (applications Apple), ainsi que les journaux Crashlytics, ainsi que d'autres données.
Utiliser les données Firebase Crashlytics dans BigQuery
Les exemples suivants illustrent les requêtes que vous pouvez exécuter sur vos données Crashlytics. Ces requêtes génèrent des rapports qui ne sont pas disponibles dans le tableau de bord Crashlytics.
Exemples de requêtes Crashlytics
Les exemples suivants montrent comment générer des rapports qui regroupent les données d'événements de crash dans des résumés plus faciles à comprendre.
Exemple 1 : Crashs de jour
Après avoir travaillé pour corriger autant de bugs que possible, un développeur principal pense que son équipe est enfin prête à lancer sa nouvelle application de partage de photos. Avant de le faire, ils souhaitent vérifier le nombre de crashs par jour au cours du mois dernier, pour être sûrs que leur bug-bash a rendu l'application plus stable au fil du temps :
SELECT COUNT(DISTINCT event_id) AS number_of_crashes, FORMAT_TIMESTAMP("%F", event_timestamp) AS date_of_crashes FROM `projectId.firebase_crashlytics.package_name_ANDROID` GROUP BY date_of_crashes ORDER BY date_of_crashes DESC LIMIT 30;
Exemple 2 : Trouver les crashs les plus répandus
Pour hiérarchiser correctement les plans de production, un chef de projet réfléchit à la manière d'identifier les 10 pannes les plus répandues dans son produit. Ils produisent une requête qui fournit les points de données pertinents :
SELECT DISTINCT issue_id, COUNT(DISTINCT event_id) AS number_of_crashes, COUNT(DISTINCT installation_uuid) AS number_of_impacted_user, blame_frame.file, blame_frame.line FROM `projectId.firebase_crashlytics.package_name_ANDROID` WHERE event_timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(),INTERVAL 168 HOUR) AND event_timestamp < CURRENT_TIMESTAMP() GROUP BY issue_id, blame_frame.file, blame_frame.line ORDER BY number_of_crashes DESC LIMIT 10;
Exemple 3 : 10 principaux appareils en panne
L'automne est la nouvelle saison téléphonique ! Un développeur sait que cela signifie également que c'est la saison des nouveaux problèmes spécifiques aux appareils. Pour anticiper les problèmes de compatibilité imminents, ils ont élaboré une requête qui identifie les 10 appareils qui ont connu le plus de plantages au cours de la semaine dernière :
SELECT device.model, COUNT(DISTINCT event_id) AS number_of_crashes FROM `projectId.firebase_crashlytics.package_name_ANDROID` WHERE event_timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 168 HOUR) AND event_timestamp < CURRENT_TIMESTAMP() GROUP BY device.model ORDER BY number_of_crashes DESC LIMIT 10;
Exemple 4 : Filtrer par clé personnalisée
Un développeur de jeux souhaite savoir quel niveau de son jeu connaît le plus de plantages. Pour les aider à suivre cette statistique, ils définissent une clé Crashlytics personnalisée current_level
et la mettent à jour chaque fois que l'utilisateur atteint un nouveau niveau.
Objectif c
CrashlyticsKit setIntValue:3 forKey:@"current_level";
Rapide
Crashlytics.sharedInstance().setIntValue(3, forKey: "current_level");
Java
Crashlytics.setInt("current_level", 3);
Avec cette clé dans leur exportation BigQuery, ils écrivent ensuite une requête pour signaler la distribution des valeurs current_level
associées à chaque événement de crash :
SELECT COUNT(DISTINCT event_id) AS num_of_crashes, value FROM `projectId.firebase_crashlytics.package_name_ANDROID` UNNEST(custom_keys) WHERE key = "current_level" GROUP BY key, value ORDER BY num_of_crashes DESC
Exemple 5 : Extraction de l'ID utilisateur
Un développeur dispose d’une application en accès anticipé. La plupart de leurs utilisateurs l’apprécient, mais trois d’entre eux ont connu un nombre inhabituel de plantages. Pour aller au fond du problème, ils écrivent une requête qui extrait tous les événements de crash pour ces utilisateurs, en utilisant leurs ID utilisateur :
SELECT * FROM `projectId.firebase_crashlytics.package_name_ANDROID` WHERE user.id IN ("userid1", "userid2", "userid3") ORDER BY user.id
Exemple 6 : Rechercher tous les utilisateurs confrontés à un problème de crash particulier
Un développeur a publié un bug critique à un groupe de bêta-testeurs. L’équipe a pu utiliser la requête de l’exemple 2 ci-dessus pour identifier l’ID spécifique du problème de crash. Ils souhaitent maintenant exécuter une requête pour extraire la liste des utilisateurs de l'application qui ont été touchés par ce crash :
SELECT user.id as user_id FROM `projectId.firebase_crashlytics.package_name_ANDROID` WHERE issue_id = "YOUR_ISSUE_ID" AND application.display_version = "" AND user.id != "" ORDER BY user.id;
Exemple 7 : Nombre d'utilisateurs touchés par un problème de crash, réparti par pays
L'équipe a désormais détecté un bug critique lors du déploiement d'une nouvelle version. Ils ont pu utiliser la requête de l’exemple 2 ci-dessus pour identifier l’ID spécifique du problème de crash. L’équipe aimerait maintenant voir si ce crash s’est propagé aux utilisateurs de différents pays du monde.
Pour rédiger cette requête, l’équipe devra :
Activez les exportations BigQuery pour Google Analytics. Consultez Exporter les données du projet vers BigQuery .
Mettez à jour leur application pour transmettre un identifiant utilisateur à la fois au SDK Google Analytics et au SDK Crashlytics.
Objectif c
CrashlyticsKit setUserIdentifier:@"123456789"; FIRAnalytics setUserID:@"12345678 9";
Rapide
Crashlytics.sharedInstance().setUserIdentifier("123456789"); Analytics.setUserID("123456789");
Java
Crashlytics.setUserIdentifier("123456789"); mFirebaseAnalytics.setUserId("123456789");
Écrivez une requête qui utilise le champ ID utilisateur pour joindre des événements dans l'ensemble de données Google Analytics BigQuery avec des plantages dans l'ensemble de données Crashlytics BigQuery :
SELECT DISTINCT c.issue_id, a.geo.country, COUNT(DISTINCT c.user.id) as num_users_impacted FROM `projectId.firebase_crashlytics.package_name_ANDROID` c INNER JOIN `projectId.analytics_YOUR_TABLE.events_*` a on c.user.id = a.user_id WHERE c.issue_id = "YOUR_ISSUE_ID" AND a._TABLE_SUFFIX BETWEEN '20190101' AND '20200101' GROUP BY c.issue_id, a.geo.country, c.user.id
Exemple 8 : 5 principaux problèmes jusqu'à présent aujourd'hui
Nécessite l'activation de l'exportation en streaming Crashlytics BigQuery
SELECT issue_id, COUNT(DISTINCT event_id) AS events FROM `your_project.firebase_crashlytics.package_name_ANDROID_REALTIME` WHERE DATE(event_timestamp) = CURRENT_DATE() GROUP BY issue_id ORDER BY events DESC LIMIT 5;
Exemple 9 : 5 principaux problèmes depuis le DATE, y compris aujourd'hui
Nécessite l'activation de l'exportation en streaming Crashlytics BigQuery.
Dans cet exemple, nous combinons des tables de lots et en temps réel pour ajouter des informations en temps réel aux données de lots fiables. Puisque event_id
est une clé primaire, nous pouvons utiliser DISTINCT event_id
pour dédoublonner tous les événements communs des deux tables.
SELECT issue_id, COUNT(DISTINCT event_id) AS events FROM ( SELECT issue_id, event_id, event_timestamp FROM `your_project.firebase_crashlytics.package_name_ANDROID_REALTIME` UNION ALL SELECT issue_id, event_id, event_timestamp FROM `your_project.firebase_crashlytics.package_name_ANDROID`) WHERE event_timestamp >= "2020-01-13" GROUP BY issue_id ORDER BY events DESC LIMIT 5;
Comprendre le schéma Firebase Crashlytics dans BigQuery
Lorsque vous associez Crashlytics à BigQuery, Firebase exporte les événements récents (plantages, erreurs non fatales et ANR), y compris les événements survenus jusqu'à deux jours avant l'association, avec la possibilité de remplir jusqu'à quatre-vingt-dix jours.
À partir de ce moment et jusqu'à ce que vous désactiviez le lien, Firebase exporte quotidiennement les événements Crashlytics. Cela peut prendre quelques minutes pour que les données soient disponibles dans BigQuery après chaque exportation.
Ensembles de données
Firebase Crashlytics crée un nouvel ensemble de données dans BigQuery pour les données Crashlytics. L'ensemble de données couvre l'intégralité de votre projet, même s'il comporte plusieurs applications.
les tables
Firebase Crashlytics crée une table dans l'ensemble de données pour chaque application de votre projet, sauf si vous avez choisi de ne pas exporter les données pour cette application. Firebase nomme les tables en fonction de l'identifiant du bundle de l'application, avec des points convertis en traits de soulignement et un nom de plate-forme ajouté à la fin.
Par exemple, les données d'une application Android avec l'ID com.google.test
seraient dans une table nommée com_google_test_ANDROID
et les données en temps réel (si activées) seraient dans une table nommée com_google_test_ANDROID_REALTIME
.
Les tableaux contiennent un ensemble standard de données Crashlytics en plus de toutes les clés Crashlytics personnalisées définies par les développeurs.
Lignes
Chaque ligne d'un tableau représente une erreur rencontrée par l'application.
Colonnes
Les colonnes d'un tableau sont identiques pour les plantages, les erreurs non fatales et les ANR. Si l'exportation en streaming Crashlytics BigQuery est activée, la table en temps réel aura les mêmes colonnes que la table par lots. Les colonnes de l'exportation sont répertoriées ci-dessous.
Sans traces de pile
Colonnes présentes dans des lignes qui représentent des événements sans traces de pile.
Nom de domaine | Type de données | Description |
---|---|---|
plate-forme | CHAÎNE | Applications Apple ou Android |
bundle_identifier | CHAÎNE | L'ID du bundle, par exemple com.google.gmail |
id_événement | CHAÎNE | Un identifiant unique pour l'événement |
est_fatal | BOOLÉEN | Si l'application a planté |
type_erreur | CHAÎNE | Type d'erreur de l'événement (FATAL, NON_FATAL, ANR) |
numéro_id | CHAÎNE | Le problème associé à l'événement |
variante_id | CHAÎNE | La variante du problème associée à cet événement Notez que tous les événements ne sont pas associés à une variante de problème. |
événement_horodatage | HORODATAGE | Quand l'événement s'est produit |
appareil | ENREGISTRER | L'appareil sur lequel l'événement s'est produit |
appareil.fabricant | CHAÎNE | Le fabricant de l'appareil |
modèle d'appareil | CHAÎNE | Le modèle de l'appareil |
périphérique.architecture | CHAÎNE | X86_32, X86_64, ARMV7, ARM64, ARMV7S ou ARMV7K |
mémoire | ENREGISTRER | L'état de la mémoire de l'appareil |
mémoire.utilisée | INT64 | Octets de mémoire utilisés |
mémoire.libre | INT65 | Octets de mémoire restants |
stockage | ENREGISTRER | Le stockage persistant de l'appareil |
stockage.utilisé | INT64 | Octets de stockage utilisés |
stockage.gratuit | INT64 | Octets de stockage restants |
système opérateur | ENREGISTRER | Les détails du système d'exploitation sur l'appareil |
système_d'exploitation.display_version | CHAÎNE | La version du système d'exploitation sur l'appareil |
système_d'exploitation.nom | CHAÎNE | Le nom du système d'exploitation sur l'appareil |
système_d'exploitation.modification_state | CHAÎNE | Si l'appareil a été modifié, par exemple jailbreaké/rooté (MODIFIÉ ou NON MODIFIÉ) |
système_d'exploitation.type | CHAÎNE | Le type de système d'exploitation exécuté sur l'appareil (par exemple, IOS, MACOS) ; uniquement disponible pour les applications des plateformes Apple |
système_d'exploitation.type_device | CHAÎNE | Le type d'appareil (par exemple, MOBILE, TABLETTE, TV, etc.) ; également appelé « catégorie d'appareil » |
application | ENREGISTRER | L'application qui a généré l'événement |
application.build_version | CHAÎNE | La version build de l'application |
application.display_version | CHAÎNE | |
utilisateur | ENREGISTRER | Facultatif : informations collectées sur l'utilisateur de l'application |
nom d'utilisateur | CHAÎNE | Facultatif : le nom de l'utilisateur |
utilisateur.email | CHAÎNE | Facultatif : L'adresse e-mail de l'utilisateur |
ID de l'utilisateur | CHAÎNE | Facultatif : un identifiant spécifique à l'application associé à l'utilisateur |
clés_personnalisées | ENREGISTREMENT RÉPÉTÉ | Paires clé-valeur définies par le développeur |
custom_keys.key | CHAÎNE | Une clé définie par le développeur |
custom_keys.value | CHAÎNE | Une valeur définie par le développeur |
installation_uuid | CHAÎNE | Un identifiant qui identifie une installation unique d'application et d'appareil |
crashlytics_sdk_versions | CHAÎNE | La version du SDK Crashlytics qui a généré l'événement |
app_orientation | CHAÎNE | PORTRAIT, PAYSAGE, FACE_UP ou FACE_DOWN |
orientation_de l'appareil | CHAÎNE | PORTRAIT, PAYSAGE, FACE_UP ou FACE_DOWN |
état_processus | CHAÎNE | ARRIÈRE-PLAN ou PREMIER PLAN |
journaux | ENREGISTREMENT RÉPÉTÉ | Messages de journal horodatés générés par l'enregistreur Crashlytics, si activé |
logs.timestamp | HORODATAGE | Quand le journal a été fait |
journaux.message | CHAÎNE | Le message enregistré |
chapelure | ENREGISTREMENT RÉPÉTÉ | Fil d'Ariane Google Analytics horodaté, si activé |
fil d'Ariane.timestamp | HORODATAGE | L'horodatage associé au fil d'Ariane |
fil d'Ariane.nom | CHAÎNE | Le nom associé au fil d'Ariane |
fil d'Ariane.params | ENREGISTREMENT RÉPÉTÉ | Paramètres associés au fil d'Ariane |
fil d'Ariane.params.key | CHAÎNE | Une clé de paramètre associée au fil d'Ariane |
fil d'Ariane.params.value | CHAÎNE | Une valeur de paramètre associée au fil d'Ariane |
blâme_frame | ENREGISTRER | Le cadre identifié comme la cause première du crash ou de l'erreur |
blâme_frame.line | INT64 | Le numéro de ligne du fichier de la trame |
blâme_frame.file | CHAÎNE | Le nom du fichier image |
blâme_frame.symbole | CHAÎNE | Le symbole hydraté, ou symbole brut s'il est non hydraté |
blâme_frame.offset | INT64 | Le décalage d'octet dans l'image binaire qui contient le code, non défini pour les exceptions Java |
blâme_frame.adresse | INT64 | L'adresse dans l'image binaire qui contient le code, non définie pour les trames Java |
blâme_frame.library | CHAÎNE | Le nom d'affichage de la bibliothèque qui inclut le cadre |
blâme_frame.owner | CHAÎNE | DÉVELOPPEUR, FOURNISSEUR, RUNTIME, PLATEFORME ou SYSTÈME |
blâme_frame.blamed | BOOLÉEN | Si l'analyse de Crashlytics a déterminé que cette trame est la cause du crash ou de l'erreur |
des exceptions | ENREGISTREMENT RÉPÉTÉ | Android uniquement : exceptions survenues lors de cet événement. Les exceptions imbriquées sont présentées dans l'ordre chronologique inverse (lire : le dernier enregistrement est la première exception levée) |
exceptions.type | CHAÎNE | Le type d'exception, par exemple java.lang.IllegalStateException |
exceptions.exception_message | CHAÎNE | Un message associé à l'exception |
exceptions.nichées | BOOLÉEN | Vrai pour tout sauf la dernière exception levée (c'est-à-dire le premier enregistrement) |
exceptions.titre | CHAÎNE | Le titre du fil |
exceptions.sous-titre | CHAÎNE | Le sous-titre du fil |
exceptions.blamed | BOOLÉEN | Vrai si Crashlytics détermine que l'exception est responsable de l'erreur ou du crash |
exceptions.frames | ENREGISTREMENT RÉPÉTÉ | Les trames associées à l'exception |
exceptions.frames.line | INT64 | Le numéro de ligne du fichier de la trame |
exceptions.frames.file | CHAÎNE | Le nom du fichier image |
exceptions.frames.symbole | CHAÎNE | Le symbole hydraté, ou symbole brut s'il est non hydraté |
exceptions.frames.offset | INT64 | Le décalage d'octet dans l'image binaire qui contient le code, non défini pour les exceptions Java |
exceptions.frames.adresse | INT64 | L'adresse dans l'image binaire qui contient le code, non définie pour les trames Java |
exceptions.frames.library | CHAÎNE | Le nom d'affichage de la bibliothèque qui inclut le cadre |
exceptions.frames.owner | CHAÎNE | DÉVELOPPEUR, FOURNISSEUR, RUNTIME, PLATEFORME ou SYSTÈME |
exceptions.frames.blamed | BOOLÉEN | Si l'analyse de Crashlytics a déterminé que cette trame est la cause du crash ou de l'erreur |
erreur | ENREGISTREMENT RÉPÉTÉ | Applications Apple uniquement : erreurs non fatales |
erreur.nom_queue | CHAÎNE | La file d'attente sur laquelle le thread s'exécutait |
code d'erreur | INT64 | Code d'erreur associé au NSError personnalisé enregistré de l'application |
erreur.titre | CHAÎNE | Le titre du fil |
erreur.sous-titre | CHAÎNE | Le sous-titre du fil |
erreur.blamed | BOOLÉEN | Si l'analyse de Crashlytics a déterminé que cette trame est la cause de l'erreur |
erreur.frames | ENREGISTREMENT RÉPÉTÉ | Les frames du stacktrace |
erreur.frames.line | INT64 | Le numéro de ligne du fichier de la trame |
erreur.frames.file | CHAÎNE | Le nom du fichier image |
erreur.frames.symbole | CHAÎNE | Le symbole hydraté, ou symbole brut s'il est non hydraté |
erreur.frames.offset | INT64 | Le décalage d'octet dans l'image binaire qui contient le code |
erreur.frames.adresse | INT64 | L'adresse dans l'image binaire qui contient le code |
erreur.frames.library | CHAÎNE | Le nom d'affichage de la bibliothèque qui inclut le cadre |
erreur.frames.owner | CHAÎNE | DÉVELOPPEUR, FOURNISSEUR, RUNTIME, PLATEFORME ou SYSTÈME |
erreur.frames.blamed | BOOLÉEN | Si l'analyse de Crashlytics a déterminé que cette trame est la cause de l'erreur |
fils de discussion | ENREGISTREMENT RÉPÉTÉ | Sujets présents au moment de l'événement |
threads.crashed | BOOLÉEN | Si le fil s'est écrasé |
threads.thread_name | CHAÎNE | Le nom du fil |
threads.nom_queue | CHAÎNE | Applications Apple uniquement : la file d'attente sur laquelle le thread s'exécutait |
threads.signal_name | CHAÎNE | Le nom du signal qui a provoqué le crash de l'application, présent uniquement sur les threads natifs en panne |
threads.signal_code | CHAÎNE | Le code du signal qui a provoqué le crash de l'application ; présent uniquement sur les threads natifs en panne |
threads.crash_address | INT64 | L'adresse du signal qui a provoqué le crash de l'application ; présent uniquement sur les threads natifs en panne |
fils.code | INT64 | Applications Apple uniquement : code d'erreur du NSError personnalisé enregistré de l'application |
fils de discussion.titre | CHAÎNE | Le titre du fil |
fils de discussion.sous-titre | CHAÎNE | Le sous-titre du fil |
fils de discussion.blamé | BOOLÉEN | Si l'analyse de Crashlytics a déterminé que cette trame est la cause du crash ou de l'erreur |
fils.frames | ENREGISTREMENT RÉPÉTÉ | Les cadres du fil |
fils.frames.line | INT64 | Le numéro de ligne du fichier de la trame |
threads.frames.file | CHAÎNE | Le nom du fichier image |
threads.frames.symbole | CHAÎNE | Le symbole hydraté, ou brut s'il est non hydratable |
threads.frames.offset | INT64 | Le décalage d'octet dans l'image binaire qui contient le code |
threads.frames.adresse | INT64 | L'adresse dans l'image binaire qui contient le code |
threads.frames.library | CHAÎNE | Le nom d'affichage de la bibliothèque qui inclut le cadre |
threads.frames.propriétaire | CHAÎNE | DÉVELOPPEUR, FOURNISSEUR, RUNTIME, PLATEFORME ou SYSTÈME |
threads.frames.blamed | BOOLÉEN | Si l'analyse de Crashlytics a déterminé que cette trame est la cause de l'erreur |
unity_metadata.unity_version | CHAÎNE | La version d'Unity exécutée sur cet appareil |
unity_metadata.debug_build | BOOLÉEN | S'il s'agit d'une version de débogage |
unity_metadata.processor_type | CHAÎNE | Le type de processeur |
unity_metadata.processor_count | INT64 | Le nombre de processeurs (cœurs) |
unity_metadata.processor_fréquence_mhz | INT64 | La fréquence du ou des processeurs en MHz |
unity_metadata.system_memory_size_mb | INT64 | La taille de la mémoire du système en Mo |
unity_metadata.graphics_memory_size_mb | INT64 | La mémoire graphique en Mo |
unity_metadata.graphics_device_id | INT64 | L'identifiant du périphérique graphique |
unity_metadata.graphics_device_vendor_id | INT64 | L'identifiant du fournisseur du processeur graphique |
unity_metadata.graphics_device_name | CHAÎNE | Le nom du périphérique graphique |
unity_metadata.graphics_device_vendor | CHAÎNE | Le fournisseur du périphérique graphique |
unity_metadata.graphics_device_version | CHAÎNE | La version du périphérique graphique |
unity_metadata.graphics_device_type | CHAÎNE | Le type de périphérique graphique |
unity_metadata.graphics_shader_level | INT64 | Le niveau de shader des graphiques |
unity_metadata.graphics_render_target_count | INT64 | Le nombre de cibles de rendu graphique |
unity_metadata.graphics_copy_texture_support | CHAÎNE | Prise en charge de la copie de la texture graphique telle que définie dans l' API Unity |
unity_metadata.graphics_max_texture_size | INT64 | La taille maximale dédiée au rendu de la texture |
unity_metadata.screen_size_px | CHAÎNE | La taille de l'écran en pixels, au format largeur x hauteur |
unity_metadata.screen_resolution_dpi | CHAÎNE | Le DPI de l'écran sous forme de nombre à virgule flottante |
unity_metadata.screen_refresh_rate_hz | INT64 | Le taux de rafraîchissement de l'écran en Hz |
Visualiser les données Crashlytics exportées avec Data Studio
Google Data Studio transforme vos ensembles de données Crashlytics dans BigQuery en rapports faciles à lire, faciles à partager et entièrement personnalisables.
Pour en savoir plus sur l'utilisation de Data Studio, consultez le guide de démarrage rapide de Data Studio, Bienvenue dans Data Studio .
Utiliser un modèle de rapport Crashlytics
Data Studio propose un exemple de rapport pour Crashlytics qui comprend un ensemble complet de dimensions et de métriques du schéma Crashlytics BigQuery exporté. Si vous avez activé l'exportation en streaming Crashlytics BigQuery, vous pouvez afficher ces données sur la page Tendances en temps réel du modèle Data Studio. Vous pouvez utiliser l'exemple comme modèle pour créer rapidement de nouveaux rapports et visualisations basés sur les données brutes d'accident de votre propre application :
- Ouvrez le modèle de tableau de bord Crashlytics Data Studio .
- Cliquez sur Utiliser un modèle dans le coin supérieur droit.
- Dans la liste déroulante Nouvelle source de données , sélectionnez Créer une nouvelle source de données .
- Cliquez sur Sélectionner sur la carte BigQuery .
- Sélectionnez une table contenant les données Crashlytics exportées en choisissant Mes projets > [votre-nom-de-projet] > firebase_crashlytics > [votre-nom-de-table] . Votre tableau de lots est toujours disponible pour la sélection ; si l'exportation en streaming Crashlytics BigQuery est activée, vous pouvez sélectionner votre table en temps réel à la place.
- Sous Configuration , définissez le niveau du modèle Crashlytics sur Default .
- Cliquez sur Connecter pour créer la nouvelle source de données.
- Cliquez sur Ajouter au rapport pour revenir au modèle Crashlytics.
- Enfin, cliquez sur Créer un rapport pour créer votre copie du modèle de tableau de bord Crashlytics Data Studio.