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
- Vai alla pagina Integrazioni nella console Firebase.
- Nella scheda BigQuery , fai clic su Collegamento .
- 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 |
---|---|
|
|
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à:
Abilita le esportazioni BigQuery per Google Analytics. Consulta Esportare i dati del progetto in BigQuery .
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");
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:
- Apri il modello Dashboard di Crashlytics Data Studio .
- Fai clic su Usa modello nell'angolo in alto a destra.
- Nel menu a discesa Nuova origine dati , seleziona Crea nuova origine dati .
- Fai clic su Seleziona nella scheda BigQuery .
- 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.
- In Configurazione , imposta il livello del modello Crashlytics su Predefinito .
- Fare clic su Connetti per creare la nuova origine dati.
- Fai clic su Aggiungi al report per tornare al modello Crashlytics.
- Infine, fai clic su Crea report per creare la tua copia del modello Dashboard di Crashlytics Data Studio.