Esporta i dati di Firebase Crashlytics in BigQuery

Puoi esportare i dati di Crashlytics in BigQuery per ulteriori analisi. BigQuery ti consente di analizzare i dati utilizzando BigQuery SQL, esportarli in un altro provider cloud e utilizzarli per la visualizzazione e dashboard personalizzate con Google Data Studio.

Abilita l'esportazione BigQuery

  1. Vai alla pagina Integrazioni nella console Firebase.
  2. Nella scheda BigQuery , fai clic su Collegamento .
  3. Segui le istruzioni visualizzate sullo schermo per abilitare BigQuery.

Quando colleghi il tuo progetto a BigQuery:

  • Firebase configura sincronizzazioni giornaliere dei tuoi dati dal tuo progetto Firebase a BigQuery.
  • Per impostazione predefinita, tutte le app del tuo progetto sono collegate a BigQuery e tutte le app che aggiungi successivamente al progetto vengono automaticamente collegate a BigQuery. Puoi gestire quali app inviano dati .
  • Firebase esporta una copia dei tuoi dati esistenti in BigQuery. Per ogni app collegata, include una tabella batch contenente i dati della sincronizzazione giornaliera.
  • Se abiliti l'esportazione in streaming di Crashlytics BigQuery, tutte le app collegate avranno anche una tabella in tempo reale contenente dati in costante aggiornamento.

Per disattivare l'esportazione BigQuery, scollega il tuo progetto nella console Firebase.

Quali dati vengono esportati in BigQuery?

I dati di Firebase Crashlytics vengono esportati in un set di dati BigQuery denominato firebase_crashlytics . Per impostazione predefinita, verranno create tabelle individuali all'interno del set di dati Crashlytics per ogni app nel tuo progetto. Firebase assegna un nome alle tabelle in base all'identificatore del bundle dell'app, con i punti convertiti in caratteri di sottolineatura e il nome della piattaforma aggiunto alla fine.

Ad esempio, i dati per un'app con ID com.google.test si troverebbero in una tabella denominata com_google_test_ANDROID . Questa tabella batch viene aggiornata una volta al giorno. Se abiliti l'esportazione in streaming di Crashlytics BigQuery, anche i dati di Firebase Crashlytics verranno trasmessi in tempo reale a com_google_test_ANDROID_REALTIME .

Ogni riga in una tabella rappresenta un evento che si è verificato nell'app, inclusi arresti anomali, errori non irreversibili e ANR.

Abilita l'esportazione in streaming di Crashlytics BigQuery

Puoi eseguire lo streaming dei dati di Crashlytics in tempo reale con BigQueryStreaming . Puoi utilizzarlo per qualsiasi scopo che richieda dati in tempo reale, come presentare informazioni in una dashboard in tempo reale, guardare un'implementazione in tempo reale o monitorare i problemi dell'applicazione che attivano avvisi e flussi di lavoro personalizzati.

L'esportazione in streaming di Crashlytics BigQuery non è disponibile per la sandbox BigQuery.

Quando abiliti l'esportazione in streaming di Crashlytics BigQuery, oltre alla tabella batch avrai una tabella in tempo reale. Ecco le differenze di cui dovresti essere a conoscenza tra le tabelle:

Tabella batch Tabella in tempo reale
  • Dati esportati una volta al giorno
  • Eventi archiviati in modo duraturo prima della scrittura in batch su BigQuery
  • Può essere riempito fino a 90 giorni prima
  • Dati esportati in tempo reale
  • Nessun riempimento disponibile

La tabella batch è ideale per l'analisi a lungo termine e l'identificazione delle tendenze nel tempo poiché archiviamo gli eventi in modo duraturo prima di scriverli e possono essere inseriti nella tabella per un massimo di 90 giorni. Quando scriviamo i dati nella tua tabella in tempo reale, li scriviamo immediatamente in BigQuery ed è quindi ideale per dashboard live e avvisi personalizzati. Queste due tabelle possono essere combinate con una query di cucitura per ottenere i vantaggi di entrambe. Vedere l'esempio 9 della query di seguito.

Per impostazione predefinita, la tabella in tempo reale ha una scadenza della partizione di 30 giorni. Per informazioni su come modificarlo, vedere Aggiornamento della scadenza della partizione .

Abilita lo streaming BigQuery di Crashlytics

Per abilitare lo streaming, vai alla sezione Crashlytics della pagina delle integrazioni BigQuery e seleziona la casella di controllo Includi streaming .

Modello Studio dati

Per abilitare i dati in tempo reale nel modello Data Studio, segui le istruzioni in Visualizzazione dei dati Crashlytics esportati con Data Studio .

Visualizzazioni

Puoi trasformare le query di esempio riportate di seguito in visualizzazioni utilizzando l'interfaccia utente di BigQuery. Vedi Creazione di viste per istruzioni dettagliate.

Cosa puoi fare con i dati esportati?

Le esportazioni BigQuery contengono dati grezzi sugli arresti anomali, tra cui tipo di dispositivo, sistema operativo, eccezioni (app Android) o errori (app Apple), log di Crashlytics e altri dati.

Utilizzo dei dati Firebase Crashlytics in BigQuery

Negli esempi seguenti vengono illustrate le query che è possibile eseguire sui dati di Crashlytics. Queste query generano report che non sono disponibili nella dashboard di Crashlytics.

Esempi di query Crashlytics

Gli esempi seguenti dimostrano come generare report che aggregano i dati sugli eventi di arresto anomalo in riepiloghi più facilmente comprensibili.

Esempio 1: arresti anomali di giorno

Dopo aver lavorato per correggere quanti più bug possibile, uno sviluppatore principale ritiene che il suo team sia finalmente pronto a lanciare la nuova app di condivisione di foto. Prima di farlo, vogliono controllare il numero di arresti anomali giornalieri nell'ultimo mese, per essere sicuri che il loro bug-bash abbia reso l'app più stabile nel tempo:

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;

Esempio 2: trovare gli arresti anomali più pervasivi

Per stabilire correttamente la priorità dei piani di produzione, un project manager riflette su come evidenziare i 10 arresti anomali più diffusi nel proprio prodotto. Producono una query che fornisce i punti di dati pertinenti:

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;

Esempio 3: i 10 principali dispositivi che si bloccano

L'autunno è la nuova stagione telefonica! Uno sviluppatore sa che questo significa anche che è arrivata la stagione dei nuovi problemi specifici del dispositivo. Per superare le incombenti preoccupazioni sulla compatibilità, hanno messo insieme una query che identifica i 10 dispositivi che hanno subito il maggior numero di arresti anomali nell'ultima settimana:

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;

Esempio 4: filtro per chiave personalizzata

Uno sviluppatore di giochi vuole sapere quale livello del proprio gioco subisce il maggior numero di arresti anomali. Per aiutarli a tenere traccia di tale statistica, impostano una chiave Crashlytics personalizzata current_level e la aggiornano ogni volta che l'utente raggiunge un nuovo livello.

Obiettivo-C

CrashlyticsKit setIntValue:3 forKey:@"current_level";

Veloce

Crashlytics.sharedInstance().setIntValue(3, forKey: "current_level");

Giava

Crashlytics.setInt("current_level", 3);

Con quella chiave nell'esportazione BigQuery, scrivono quindi una query per segnalare la distribuzione dei valori current_level associati a ciascun evento di arresto anomalo:

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

Esempio 5: estrazione dell'ID utente

Uno sviluppatore ha un'app in accesso anticipato. La maggior parte degli utenti lo adora, ma tre hanno riscontrato un numero insolito di arresti anomali. Per andare a fondo del problema, scrivono una query che recupera tutti gli eventi di arresto anomalo per quegli utenti, utilizzando i loro ID utente:

SELECT *
FROM
  `projectId.firebase_crashlytics.package_name_ANDROID`
WHERE
  user.id IN ("userid1", "userid2", "userid3")
ORDER BY
  user.id
 

Esempio 6: trova tutti gli utenti che affrontano un particolare problema di arresto anomalo

Uno sviluppatore ha rilasciato un bug critico a un gruppo di beta tester. Il team è stato in grado di utilizzare la query dell'esempio 2 sopra per identificare l'ID specifico del problema di arresto anomalo. Ora vorrebbero eseguire una query per estrarre l'elenco degli utenti dell'app interessati da questo arresto anomalo:

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;

Esempio 7: numero di utenti interessati da un problema di arresto anomalo, suddivisi per Paese

Ora il team ha rilevato un bug critico durante il lancio di una nuova versione. Sono stati in grado di utilizzare la query dell'esempio 2 sopra per identificare l'ID specifico del problema di arresto anomalo. Il team ora vorrebbe vedere se questo incidente si è diffuso agli utenti di diversi paesi del mondo.

Per scrivere questa query, il team dovrà:

  1. Abilita le esportazioni BigQuery per Google Analytics. Consulta Esportare i dati del progetto in BigQuery .

  2. Aggiorna la loro app per trasferire un ID utente sia nell'SDK di Google Analytics che nell'SDK di Crashlytics.

    Obiettivo-C
    CrashlyticsKit setUserIdentifier:@"123456789";
    FIRAnalytics setUserID:@"12345678 9";
    
    Veloce
    Crashlytics.sharedInstance().setUserIdentifier("123456789");
    Analytics.setUserID("123456789");
    
    Giava
    Crashlytics.setUserIdentifier("123456789");
    mFirebaseAnalytics.setUserId("123456789");
    
  3. Scrivi una query che utilizzi il campo ID utente per unire eventi nel set di dati BigQuery di Google Analytics con arresti anomali nel set di dati BigQuery di Crashlytics:

    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
    

Esempio 8: i 5 principali problemi finora oggi

Richiede l'abilitazione dell'esportazione in streaming di 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;

Esempio 9: i 5 principali problemi dal DATE, compreso oggi

Richiede l'abilitazione dell'esportazione in streaming di Crashlytics BigQuery.

In questo esempio combiniamo tabelle batch e in tempo reale per aggiungere informazioni in tempo reale ai dati batch affidabili. Poiché event_id è una chiave primaria, possiamo utilizzare DISTINCT event_id per deduplicare eventuali eventi comuni dalle due tabelle.

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;

Comprensione dello schema Firebase Crashlytics in BigQuery

Quando colleghi Crashlytics a BigQuery, Firebase esporta gli eventi recenti (arresti anomali, errori non irreversibili e ANR), inclusi eventi fino a due giorni prima del collegamento, con la possibilità di eseguire il backfill fino a novanta giorni.

Da quel momento fino a quando non disabiliti il ​​collegamento, Firebase esporta gli eventi Crashlytics su base giornaliera. Potrebbero essere necessari alcuni minuti prima che i dati siano disponibili in BigQuery dopo ogni esportazione.

Set di dati

Firebase Crashlytics crea un nuovo set di dati nei dati BigQuery for Crashlytics. Il set di dati copre l'intero progetto, anche se ha più app.

Tabelle

Firebase Crashlytics crea una tabella nel set di dati per ogni app del tuo progetto, a meno che tu non abbia disattivato l'esportazione dei dati per tale app. Firebase assegna un nome alle tabelle in base all'identificatore del bundle dell'app, con i punti convertiti in caratteri di sottolineatura e il nome della piattaforma aggiunto alla fine.

Ad esempio, i dati per un'app Android con ID com.google.test sarebbero in una tabella denominata com_google_test_ANDROID e i dati in tempo reale (se abilitati) sarebbero in una tabella denominata com_google_test_ANDROID_REALTIME

Le tabelle contengono un set standard di dati Crashlytics oltre a eventuali chiavi Crashlytics personalizzate definite dagli sviluppatori.

Righe

Ogni riga in una tabella rappresenta un errore riscontrato dall'app.

Colonne

Le colonne in una tabella sono identiche per arresti anomali, errori non irreversibili e ANR. Se l'esportazione in streaming di Crashlytics BigQuery è abilitata, la tabella in tempo reale avrà le stesse colonne della tabella batch. Le colonne all'interno dell'esportazione sono elencate di seguito.

Senza tracce dello stack

Colonne presenti in righe che rappresentano eventi senza analisi dello stack.

Nome del campo Tipo di dati Descrizione
piattaforma CORDA App Apple o Android
identificatore_fascio CORDA L'ID del pacchetto, ad esempio com.google.gmail
evento_id CORDA Un ID univoco per l'evento
è_fatale BOOLEANO Se l'app si è bloccata
tipo_errore CORDA Tipo di errore dell'evento (FATAL, NON_FATAL, ANR)
ID_problema CORDA Il problema associato all'evento
variante_id CORDA La variante del problema associata a questo evento
Tieni presente che non tutti gli eventi hanno una variante del problema associata.
evento_timestamp TIMESTAMP Quando si è verificato l'evento
dispositivo DOCUMENTAZIONE Il dispositivo su cui si è verificato l'evento
produttore.del.dispositivo CORDA Il produttore del dispositivo
Modello del dispositivo CORDA Il modello del dispositivo
dispositivo.architettura CORDA X86_32, X86_64, ARMV7, ARM64, ARMV7S o ARMV7K
memoria DOCUMENTAZIONE Lo stato della memoria del dispositivo
memoria.utilizzata INT64 Byte di memoria utilizzati
memoria.libera INT64 Byte di memoria rimanenti
magazzinaggio DOCUMENTAZIONE La memoria persistente del dispositivo
spazio di archiviazione.usato INT64 Byte di spazio di archiviazione utilizzati
spazio di archiviazione gratuito INT64 Byte di spazio di archiviazione rimanenti
sistema operativo DOCUMENTAZIONE I dettagli del sistema operativo sul dispositivo
sistema_operativo.versione_display CORDA La versione del sistema operativo sul dispositivo
nome.sistema_operativo CORDA Il nome del sistema operativo sul dispositivo
sistema_operativo.stato_modifica CORDA Se il dispositivo è stato modificato, ad esempio jailbroken/rooted (MODIFICATO o NON MODIFICATO)
tipo_sistema_operativo CORDA Il tipo di sistema operativo in esecuzione sul dispositivo (ad esempio IOS, MACOS); disponibile solo per le app delle piattaforme Apple
sistema_operativo.tipo_dispositivo CORDA La tipologia del dispositivo (ad esempio MOBILE, TABLET, TV, ecc.); nota anche come "categoria dispositivo"
applicazione DOCUMENTAZIONE L'app che ha generato l'evento
applicazione.build_versione CORDA La versione build dell'app
applicazione.display_versione CORDA
utente DOCUMENTAZIONE Facoltativo: informazioni raccolte sull'utente dell'app
nome utente CORDA Facoltativo: il nome dell'utente
utente.e-mail CORDA Facoltativo: l'indirizzo email dell'utente
ID utente CORDA Facoltativo: un ID specifico dell'app associato all'utente
chiavi_personalizzate REGISTRAZIONE RIPETUTA Coppie chiave-valore definite dallo sviluppatore
chiavi_personalizzate.chiave CORDA Una chiave definita dallo sviluppatore
chiavi_personalizzate.valore CORDA Un valore definito dallo sviluppatore
installazione_uuid CORDA Un ID che identifica un'app e un'installazione del dispositivo univoche
crashlytics_sdk_versions CORDA La versione dell'SDK di Crashlytics che ha generato l'evento
app_orientamento CORDA RITRATTO, PAESAGGIO, FACCIA_SU o FACCIA_GIÙ
orientamento_dispositivo CORDA RITRATTO, PAESAGGIO, FACCIA_SU o FACCIA_GIÙ
stato_processo CORDA SFONDO o PRIMO PIANO
registri REGISTRAZIONE RIPETUTA Messaggi di log con timestamp generati dal logger Crashlytics, se abilitato
logs.timestamp TIMESTAMP Quando è stato creato il registro
logs.messaggio CORDA Il messaggio registrato
briciole di pane REGISTRAZIONE RIPETUTA Breadcrumb di Google Analytics con timestamp, se abilitato
breadcrumbs.timestamp TIMESTAMP Il timestamp associato al breadcrumb
breadcrumbs.nome CORDA Il nome associato al breadcrumb
breadcrumbs.params REGISTRAZIONE RIPETUTA Parametri associati al breadcrumb
breadcrumbs.params.key CORDA Una chiave di parametro associata al breadcrumb
breadcrumbs.params.value CORDA Un valore di parametro associato al breadcrumb
colpa_frame DOCUMENTAZIONE Il frame identificato come causa principale dell'arresto anomalo o dell'errore
colpa_frame.line INT64 Il numero di riga del file del frame
colpa_frame.file CORDA Il nome del file del frame
colpa_frame.simbolo CORDA Il simbolo idratato o il simbolo grezzo se non è idratabile
colpa_frame.offset INT64 L'offset in byte nell'immagine binaria che contiene il codice, non impostato per le eccezioni Java
colpa_frame.indirizzo INT64 L'indirizzo nell'immagine binaria che contiene il codice, non impostato per i frame Java
colpa_frame.library CORDA Il nome visualizzato della libreria che include il frame
colpa_frame.proprietario CORDA SVILUPPATORE, FORNITORE, RUNTIME, PIATTAFORMA o SISTEMA
biasima_frame.incolpato BOOLEANO Se l'analisi di Crashlytics ha stabilito che questo frame è la causa dell'arresto anomalo o dell'errore
eccezioni REGISTRAZIONE RIPETUTA Solo Android: eccezioni verificatesi durante questo evento. Le eccezioni annidate sono presentate in ordine cronologico inverso (leggi: l'ultimo record è la prima eccezione generata)
eccezioni.tipo CORDA Il tipo di eccezione, ad esempio java.lang.IllegalStateException
eccezioni.messaggio_eccezione CORDA Un messaggio associato all'eccezione
eccezioni.nidificate BOOLEANO Vero per tutti tranne l'ultima eccezione (ovvero il primo record)
eccezioni.titolo CORDA Il titolo del thread
eccezioni.sottotitolo CORDA Il sottotitolo del thread
eccezioni.incolpate BOOLEANO Vero se Crashlytics determina che l'eccezione è responsabile dell'errore o dell'arresto anomalo
eccezioni.frame REGISTRAZIONE RIPETUTA I frame associati all'eccezione
eccezioni.frames.line INT64 Il numero di riga del file del frame
eccezioni.frames.file CORDA Il nome del file del frame
eccezioni.frame.simbolo CORDA Il simbolo idratato o il simbolo grezzo se non è idratabile
eccezioni.frame.offset INT64 L'offset in byte nell'immagine binaria che contiene il codice, non impostato per le eccezioni Java
eccezioni.frames.indirizzo INT64 L'indirizzo nell'immagine binaria che contiene il codice, non impostato per i frame Java
eccezioni.frames.libreria CORDA Il nome visualizzato della libreria che include il frame
eccezioni.frames.proprietario CORDA SVILUPPATORE, FORNITORE, RUNTIME, PIATTAFORMA o SISTEMA
eccezioni.frame.incolpati BOOLEANO Se l'analisi di Crashlytics ha stabilito che questo frame è la causa dell'arresto anomalo o dell'errore
errore REGISTRAZIONE RIPETUTA Solo app Apple: errori non fatali
errore.nome_coda CORDA La coda su cui era in esecuzione il thread
codice di errore INT64 Codice di errore associato all'NSError registrato personalizzato dell'app
errore.titolo CORDA Il titolo del thread
errore.sottotitolo CORDA Il sottotitolo del thread
errore.incolpato BOOLEANO Se l'analisi di Crashlytics ha stabilito che questo frame è la causa dell'errore
frame.errore REGISTRAZIONE RIPETUTA I frame dello stacktrace
errore.frames.line INT64 Il numero di riga del file del frame
errore.frames.file CORDA Il nome del file del frame
errore.frames.simbolo CORDA Il simbolo idratato o il simbolo grezzo se non è idratabile
errore.frames.offset INT64 L'offset in byte nell'immagine binaria che contiene il codice
errore.frames.indirizzo INT64 L'indirizzo nell'immagine binaria che contiene il codice
error.frames.library CORDA Il nome visualizzato della libreria che include il frame
errore.frames.proprietario CORDA SVILUPPATORE, FORNITORE, RUNTIME, PIATTAFORMA o SISTEMA
error.frames.blamed BOOLEANO Se l'analisi di Crashlytics ha stabilito che questo frame è la causa dell'errore
discussioni REGISTRAZIONE RIPETUTA Discussioni presenti al momento dell'evento
threads.si è bloccato BOOLEANO Se il thread si è bloccato
threads.nome_thread CORDA Il nome del thread
threads.nome_coda CORDA Solo app Apple: la coda su cui era in esecuzione il thread
threads.nome_segnale CORDA Il nome del segnale che ha causato l'arresto anomalo dell'app, presente solo sui thread nativi sottoposti a arresto anomalo
threads.signal_code CORDA Il codice del segnale che ha causato l'arresto anomalo dell'app; presente solo sui thread nativi bloccati
threads.crash_address INT64 L'indirizzo del segnale che ha causato l'arresto anomalo dell'applicazione; presente solo sui thread nativi bloccati
threads.codice INT64 Solo app Apple: codice di errore dell'NSError registrato personalizzato dell'applicazione
threads.titolo CORDA Il titolo del thread
discussioni.sottotitolo CORDA Il sottotitolo del thread
threads.incolpato BOOLEANO Se l'analisi di Crashlytics ha stabilito che questo frame è la causa dell'arresto anomalo o dell'errore
fili.frame REGISTRAZIONE RIPETUTA I fotogrammi del filo
threads.frames.line INT64 Il numero di riga del file del frame
threads.frames.file CORDA Il nome del file del frame
fili.cornici.simbolo CORDA Il simbolo idratato o il simbolo grezzo se non è idratabile
thread.frame.offset INT64 L'offset in byte nell'immagine binaria che contiene il codice
threads.frames.indirizzo INT64 L'indirizzo nell'immagine binaria che contiene il codice
threads.frames.library CORDA Il nome visualizzato della libreria che include il frame
threads.frames.proprietario CORDA SVILUPPATORE, FORNITORE, RUNTIME, PIATTAFORMA o SISTEMA
threads.frames.incolpato BOOLEANO Se l'analisi di Crashlytics ha stabilito che questo frame è la causa dell'errore
metadati_unity.versione_unity CORDA La versione di Unity in esecuzione su questo dispositivo
unity_metadata.debug_build BOOLEANO Se questa è una build di debug
metadati_unità.tipo_processore CORDA Il tipo di processore
unità_metadati.processor_count INT64 Il numero di processori (core)
unity_metadata.processor_frequency_mhz INT64 La frequenza del/i processore/i in MHz
unity_metadata.system_memory_size_mb INT64 La dimensione della memoria del sistema in Mb
unity_metadata.graphics_memory_size_mb INT64 La memoria grafica in MB
unity_metadata.graphics_device_id INT64 L'identificatore del dispositivo grafico
unity_metadata.graphics_device_vendor_id INT64 L'identificatore del fornitore del processore grafico
metadati_unità.nome_dispositivo_grafica CORDA Il nome del dispositivo grafico
unity_metadata.graphics_device_vendor CORDA Il fornitore del dispositivo grafico
unity_metadata.graphics_device_version CORDA La versione del dispositivo grafico
unity_metadata.graphics_device_type CORDA Il tipo di dispositivo grafico
unity_metadata.graphics_shader_level INT64 Il livello di shader della grafica
unity_metadata.graphics_render_target_count INT64 Il numero di destinazioni di rendering grafico
unity_metadata.graphics_copy_texture_support CORDA Supporto per la copia della trama grafica come definito nell'API Unity
unity_metadata.graphics_max_texture_size INT64 La dimensione massima dedicata al rendering della texture
unity_metadata.screen_size_px CORDA La dimensione dello schermo in pixel, formattata come larghezza x altezza
unity_metadata.screen_length_dpi CORDA Il DPI dello schermo come numero in virgola mobile
unity_metadata.screen_refresh_rate_hz INT64 La frequenza di aggiornamento dello schermo in Hz

Visualizzazione dei dati Crashlytics esportati con Data Studio

Google Data Studio trasforma i tuoi set di dati Crashlytics in BigQuery in report facili da leggere, facili da condividere e completamente personalizzabili.

Per ulteriori informazioni sull'utilizzo di Data Studio, prova la guida rapida di Data Studio, Benvenuto in Data Studio .

Utilizzo di un modello di rapporto Crashlytics

Data Studio dispone di un report di esempio per Crashlytics che include un set completo di dimensioni e metriche dallo schema BigQuery di Crashlytics esportato. Se hai abilitato l'esportazione in streaming di Crashlytics BigQuery, puoi visualizzare tali dati nella pagina Tendenze in tempo reale del modello Data Studio. Puoi utilizzare l'esempio come modello per creare rapidamente nuovi report e visualizzazioni basati sui dati grezzi sugli arresti anomali della tua app:

  1. Apri il modello Dashboard di Crashlytics Data Studio .
  2. Fai clic su Usa modello nell'angolo in alto a destra.
  3. Nel menu a discesa Nuova origine dati , seleziona Crea nuova origine dati .
  4. Fai clic su Seleziona nella scheda BigQuery .
  5. Seleziona una tabella contenente i dati Crashlytics esportati scegliendo I miei progetti > [nome-tuo-progetto] > firebase_crashlytics > [nome-tua-tabella] . La tua tabella batch è sempre disponibile per la selezione; se l'esportazione in streaming di Crashlytics BigQuery è abilitata, puoi invece selezionare la tabella in tempo reale.
  6. In Configurazione , imposta il livello del modello Crashlytics su Predefinito .
  7. Fare clic su Connetti per creare la nuova origine dati.
  8. Fai clic su Aggiungi al report per tornare al modello Crashlytics.
  9. Infine, fai clic su Crea report per creare la tua copia del modello Dashboard di Crashlytics Data Studio.