Catch up on highlights from Firebase at Google I/O 2023. Learn more

Exporter les données Firebase Crashlytics vers BigQuery

Vous pouvez exporter vos données Crashlytics dans 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 cloud et de les utiliser pour la visualisation et des tableaux de bord personnalisés avec Google Data Studio.

Activer l'exportation BigQuery

  1. Accédez à la page Intégrations dans la console Firebase.
  2. Dans la fiche BigQuery , cliquez sur Associer .
  3. 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 les applications qui envoient des données .
  • Firebase exporte une copie de vos données existantes vers BigQuery. Pour chaque application liée, cela inclut une table de lot contenant les données de la synchronisation quotidienne.
  • Si vous activez l'exportation en continu Crashlytics BigQuery, toutes les applications liées auront également 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 de 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 avec l'ID com.google.test seraient dans une table nommée com_google_test_ANDROID . Cette table de lots est mise à jour une fois par jour. Si vous activez l'exportation en continu Crashlytics BigQuery, les données Firebase Crashlytics seront également diffusées en temps réel sur com_google_test_ANDROID_REALTIME .

Chaque ligne d'un tableau représente un événement qui s'est produit dans l'application, y compris les plantages, les erreurs non fatales et les ANR.

Activer l'exportation de flux Crashlytics BigQuery

Vous pouvez diffuser vos données Crashlytics en temps réel avec BigQueryStreaming . Vous pouvez l'utiliser à toutes fins nécessitant des données en direct, telles que la présentation d'informations dans un tableau de bord en direct, la surveillance d'un déploiement en direct ou la surveillance de problèmes d'application qui déclenchent des alertes et des workflows personnalisés.

L'exportation en continu Crashlytics BigQuery n'est pas disponible pour le bac à sable BigQuery.

Lorsque vous activez l'exportation en continu Crashlytics BigQuery, en plus de la table des 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
  • Données exportées une fois par jour
  • Événements stockés de manière durable avant l'écriture par lot dans BigQuery
  • Peut être remblayé jusqu'à 90 jours avant
  • Données exportées en temps réel
  • Aucun remblai disponible

La table de lot est idéale pour l'analyse à long terme et l'identification des tendances dans le temps car nous stockons durablement les événements avant de les écrire, et ils peuvent être remplis dans la table jusqu'à 90 jours. Lorsque nous écrivons des données dans votre tableau en temps réel, nous les écrivons immédiatement dans BigQuery. Il est donc 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 obtenir les 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 la diffusion 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 de la section 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 de 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), les journaux Crashlytics, ainsi que d'autres données.

Utilisation des 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 plantage dans des résumés plus faciles à comprendre.

Exemple 1 : Plantages par 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 plantages par jour au cours du mois écoulé, pour s'assurer 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 : Rechercher les plantages 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 plantages les plus répandus 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 des téléphones ! Un développeur sait que cela signifie également que c'est la nouvelle saison des problèmes spécifiques à l'appareil. Pour anticiper les problèmes de compatibilité imminents, ils ont mis en place 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 subit 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 plantage :

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 a une application en accès anticipé. La plupart de leurs utilisateurs l'adorent, mais trois ont connu un nombre inhabituel de plantages. Pour aller au fond du problème, ils écrivent une requête qui récupère tous les événements de plantage pour ces utilisateurs, à l'aide de 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 plantage particulier

Un développeur a communiqué un bogue 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 de problème de plantage spécifique. Maintenant, ils aimeraient exécuter une requête pour extraire la liste des utilisateurs de l'application qui ont été touchés par ce plantage :

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 plantage, ventilé par pays

Maintenant, l'équipe a détecté un bogue 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 de problème de plantage spécifique. L'équipe aimerait maintenant voir si ce crash s'est propagé aux utilisateurs dans différents pays du monde.

Pour rédiger cette requête, l'équipe devra :

  1. Activez les exportations BigQuery pour Google Analytics. Consultez Exporter des données de projet vers BigQuery .

  2. Mettez à jour leur application pour transmettre un ID 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");
    
  3. É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 continu 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 problèmes les plus fréquents depuis le DATE, y compris aujourd'hui

Nécessite l'activation de l'exportation en continu Crashlytics BigQuery.

Dans cet exemple, nous combinons des tables de lot et en temps réel pour ajouter des informations en temps réel aux données de lot fiables. Étant donné que event_id est une clé primaire, nous pouvons utiliser DISTINCT event_id pour dédupliquer 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. La disponibilité des données dans BigQuery peut prendre quelques minutes après chaque exportation.

Jeux 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 désactivé l'exportation des données pour cette application. Firebase nomme les tables en fonction de l'identifiant de 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 tables contiennent un ensemble standard de données Crashlytics en plus des 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 continu 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
plateforme CHAÎNE Applications Apple ou Android
bundle_identifier CHAÎNE L'ID du groupe, 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)
issue_id CHAÎNE Le problème lié à l'événement
variant_id CHAÎNE La variante de problème associée à cet événement
Notez que tous les événements n'ont pas de variante de problème associée.
événement_horodatage HORODATAGE Lorsque 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 d'appareil
appareil.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
sans.mémoire 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 Détails du système d'exploitation de l'appareil
operating_system.display_version CHAÎNE La version du système d'exploitation
nom_du_système_d'exploitation CHAÎNE Le nom du système d'exploitation
operating_system.modification_state CHAÎNE MODIFIÉ ou NON MODIFIÉ, c'est-à-dire si l'appareil a été jailbreaké/enraciné
système_d'exploitation.type CHAÎNE Le type de système d'exploitation sur l'appareil. Par exemple, IOS, MACOS
operating_system.device_type CHAÎNE Le type d'appareil. Par exemple MOBILE, TABLETTE, TV
application ENREGISTRER L'application qui a généré l'événement
application.build_version CHAÎNE La version de 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 : ID 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 ID qui identifie une installation d'application et d'appareil unique
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
device_orientation CHAÎNE PORTRAIT, PAYSAGE, FACE_UP ou FACE_DOWN
process_state CHAÎNE ARRIÈRE-PLAN ou PREMIER PLAN
journaux ENREGISTREMENT RÉPÉTÉ Messages de journal horodatés générés par le journal Crashlytics, s'il est activé
journaux.horodatage HORODATAGE Lorsque le journal a été créé
logs.message CHAÎNE Le message enregistré
chapelure ENREGISTREMENT RÉPÉTÉ Fil d'Ariane Google Analytics horodaté, si activé
chapelure.horodatage HORODATAGE L'horodatage associé au fil d'Ariane
chapelure.nom CHAÎNE Le nom associé au fil d'Ariane
chapelure.params ENREGISTREMENT RÉPÉTÉ Paramètres associés au fil d'Ariane
chapelure.params.key CHAÎNE Une clé de paramètre associée au fil d'Ariane
chapelure.params.value CHAÎNE Une valeur de paramètre associée au fil d'Ariane
blâme_frame ENREGISTRER Le cadre identifié comme étant la cause première du crash ou de l'erreur
blâme_frame.line INT64 Le numéro de ligne du fichier du cadre
blâme_frame.file CHAÎNE Le nom du fichier cadre
blâme_frame.symbol 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.address INT64 L'adresse dans l'image binaire qui contient le code, non définie pour les cadres 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 ce cadre 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.imbriquées BOOLÉEN Vrai pour tous sauf la dernière exception lancé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 plantage
exceptions.frames ENREGISTREMENT RÉPÉTÉ Les cadres associés à l'exception
exceptions.frames.line INT64 Le numéro de ligne du fichier du cadre
exceptions.frames.file CHAÎNE Le nom du fichier cadre
exceptions.frames.symbol 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.address INT64 L'adresse dans l'image binaire qui contient le code, non définie pour les cadres 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 ce cadre est la cause du crash ou de l'erreur
erreur ENREGISTREMENT RÉPÉTÉ Applications Apple uniquement : erreurs non fatales
erreur.nom_file d'attente CHAÎNE La file d'attente sur laquelle le thread s'exécutait
code d'erreur INT64 Code d'erreur associé à l'erreur NSError personnalisée de l'application
erreur.titre CHAÎNE Le titre du fil
erreur.sous-titre CHAÎNE Le sous-titre du fil
erreur.blâmé BOOLÉEN Si l'analyse de Crashlytics a déterminé que ce cadre est la cause de l'erreur
error.frames ENREGISTREMENT RÉPÉTÉ Les cadres du stacktrace
error.frames.line INT64 Le numéro de ligne du fichier du cadre
error.frames.file CHAÎNE Le nom du fichier cadre
error.frames.symbol 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
error.frames.address INT64 L'adresse dans l'image binaire qui contient le code
error.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
error.frames.blamed BOOLÉEN Si l'analyse de Crashlytics a déterminé que ce cadre est la cause de l'erreur
fils ENREGISTREMENT RÉPÉTÉ Threads 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.queue_name 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 causé le plantage de l'application, présent uniquement sur les threads natifs plantés
threads.signal_code CHAÎNE Le code du signal qui a causé le plantage de l'application ; présent uniquement sur les threads natifs en panne
threads.crash_address INT64 L'adresse du signal qui a causé le plantage de l'application ; présent uniquement sur les threads natifs en panne
threads.code INT64 Applications Apple uniquement : code d'erreur de l'erreur NSError consignée personnalisée de l'application
fils.titre CHAÎNE Le titre du fil
fils.sous-titre CHAÎNE Le sous-titre du fil
fils.blâmé BOOLÉEN Si l'analyse de Crashlytics a déterminé que ce cadre est la cause du crash ou de l'erreur
threads.frames ENREGISTREMENT RÉPÉTÉ Les cadres du fil
threads.frames.line INT64 Le numéro de ligne du fichier du cadre
threads.frames.file CHAÎNE Le nom du fichier cadre
threads.frames.symbol CHAÎNE Le symbole hydraté, ou symbole 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.address 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 ce cadre est la cause de l'erreur
unity_metadata.unity_version CHAÎNE La version de 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_frequency_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 inclut un ensemble complet de dimensions et de statistiques issues du schéma Crashlytics BigQuery exporté. Si vous avez activé l'exportation en continu 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 de plantage de votre propre application :

  1. Ouvrez le modèle de tableau de bord Crashlytics Data Studio .
  2. Cliquez sur Utiliser le modèle dans le coin supérieur droit.
  3. Dans la liste déroulante Nouvelle source de données , sélectionnez Créer une nouvelle source de données .
  4. Cliquez sur Sélectionner sur la fiche BigQuery .
  5. Sélectionnez une table contenant des données Crashlytics exportées en choisissant Mes projets > [your-project-name] > firebase_crashlytics > [your-table-name] . Votre table de lot est toujours disponible pour être sélectionnée ; si l'exportation en continu Crashlytics BigQuery est activée, vous pouvez sélectionner votre table en temps réel à la place.
  6. Sous Configuration , définissez le niveau du modèle Crashlytics sur Par défaut .
  7. Cliquez sur Connecter pour créer la nouvelle source de données.
  8. Cliquez sur Ajouter au rapport pour revenir au modèle Crashlytics.
  9. Enfin, cliquez sur Créer un rapport pour créer votre copie du modèle de tableau de bord Crashlytics Data Studio.