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 di servizi cloud e utilizzarli per visualizzazioni e dashboard personalizzati con Google Data Studio.
Attiva l'esportazione BigQuery
- Vai alla pagina Integrazioni nella console Firebase.
- Nella scheda BigQuery , fai clic su Link .
- Segui le istruzioni 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 nel tuo progetto sono collegate a BigQuery e tutte le app che in seguito aggiungi 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 BigQuery di Crashlytics, 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, le singole tabelle verranno create all'interno del set di dati di Crashlytics per ogni app nel tuo progetto. Firebase denomina le tabelle in base all'identificatore del bundle dell'app, con punti convertiti in caratteri di sottolineatura e un nome di piattaforma aggiunto alla fine.
Ad esempio, i dati per un'app con l'ID com.google.test
si trovano 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 BigQuery di Crashlytics
Puoi eseguire lo streaming dei tuoi dati Crashlytics in tempo reale con BigQueryStreaming . Puoi usarlo per qualsiasi scopo che richieda dati in tempo reale, come la presentazione di informazioni in una dashboard in tempo reale, la visione di un'implementazione in tempo reale o il monitoraggio dei problemi dell'applicazione che attivano avvisi e flussi di lavoro personalizzati.
L'esportazione in streaming BigQuery di Crashlytics non è disponibile per la sandbox BigQuery.
Quando abiliti l'esportazione in streaming BigQuery di Crashlytics, oltre alla tabella batch avrai una tabella in tempo reale. Ecco le differenze di cui dovresti essere a conoscenza tra le tabelle:
Tabella dei lotti | Tabella in tempo reale |
---|---|
|
|
La tabella batch è ideale per l'analisi a lungo termine e l'identificazione delle tendenze nel tempo perché memorizziamo in modo duraturo gli eventi 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, quindi è l'ideale per dashboard in tempo reale e avvisi personalizzati. Queste due tabelle possono essere combinate con una query di stitching per ottenere i vantaggi di entrambe. Vedere l'esempio di query 9 di seguito.
Per impostazione predefinita, la tabella in tempo reale ha un tempo di 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 di BigQuery e seleziona la casella di controllo Includi streaming .
Modello di studio di dati
Per abilitare i dati in tempo reale nel tuo 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 viste utilizzando l'interfaccia utente di BigQuery. Vedere Creazione di viste per istruzioni dettagliate.
Cosa puoi fare con i dati esportati?
Le esportazioni di BigQuery contengono dati non elaborati sugli arresti anomali, tra cui tipo di dispositivo, sistema operativo, eccezioni (app Android) o errori (app Apple) e log di Crashlytics, oltre ad altri dati.
Utilizzo dei dati di Firebase Crashlytics in BigQuery
I seguenti esempi mostrano le query che puoi eseguire sui dati di Crashlytics. Queste query generano rapporti che non sono disponibili nella dashboard di Crashlytics.
Esempi di query Crashlytics
Gli esempi seguenti mostrano come generare report che aggregano i dati degli eventi di arresto anomalo in riepiloghi più facilmente comprensibili.
Esempio 1: arresti anomali di giorno
Dopo aver lavorato per correggere il maggior numero di bug possibile, uno sviluppatore capo pensa che il suo team sia finalmente pronto per lanciare la sua nuova app per la condivisione di foto. Prima di farlo, vogliono controllare il numero di arresti anomali al giorno nell'ultimo mese, per essere sicuri che il 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: trova gli arresti anomali più diffusi
Per assegnare correttamente la priorità ai piani di produzione, un project manager riflette su come evidenziare i primi 10 arresti anomali più pervasivi 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 primi 10 dispositivi che si bloccano
L'autunno è la nuova stagione dei telefoni! Uno sviluppatore sa che significa anche che è la nuova stagione dei problemi specifici del dispositivo. Per anticipare gli incombenti problemi di 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 desidera sapere quale livello del proprio gioco presenta 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";
Rapido
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 dei loro utenti lo adora, ma tre hanno riscontrato un numero insolito di arresti anomali. Per andare a fondo del problema, scrivono una query che estrae 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 precedente 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, suddiviso 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 precedente per identificare l'ID specifico del problema di arresto anomalo. Il team vorrebbe ora vedere se questo arresto anomalo si è diffuso agli utenti in 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 sia nell'SDK di Crashlytics.
Obiettivo-C
CrashlyticsKit setUserIdentifier:@"123456789"; FIRAnalytics setUserID:@"12345678 9";
Rapido
Crashlytics.sharedInstance().setUserIdentifier("123456789"); Analytics.setUserID("123456789");
Giava
Crashlytics.setUserIdentifier("123456789"); mFirebaseAnalytics.setUserId("123456789");
Scrivi una query che utilizza il campo ID utente per unire gli eventi nel set di dati BigQuery di Google Analytics con gli 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 problemi principali finora oggi
Richiede l'abilitazione dell'esportazione in streaming BigQuery di Crashlytics
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: primi 5 numeri dal DATE, incluso oggi
Richiede l'abilitazione dell'esportazione in streaming BigQuery di Crashlytics.
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 usare DISTINCT event_id
per deduplicare qualsiasi evento comune 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 gli 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 disattivi il collegamento, Firebase esporta gli eventi di Crashlytics su base giornaliera. Possono 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 in BigQuery per i dati di 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 scelto di non esportare i dati per quell'app. Firebase denomina le tabelle in base all'identificatore del bundle dell'app, con punti convertiti in caratteri di sottolineatura e un nome di piattaforma aggiunto alla fine.
Ad esempio, i dati per un'app Android con l'ID com.google.test
si trovano in una tabella denominata com_google_test_ANDROID
e i dati in tempo reale (se abilitati) si trovano in una tabella denominata com_google_test_ANDROID_REALTIME
Le tabelle contengono un set standard di dati Crashlytics oltre a qualsiasi chiave Crashlytics personalizzata definita 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 di stack
Colonne presenti in righe che rappresentano eventi senza analisi dello stack.
Nome campo | Tipo di dati | Descrizione |
---|---|---|
piattaforma | CORDA | App Apple o Android |
identificatore_fascio | CORDA | L'ID gruppo, ad esempio com.google.gmail |
id_evento | CORDA | Un ID univoco per l'evento |
è_fatale | BOOLEANO | Se l'app si è arrestata in modo anomalo |
tipo_errore | CORDA | Tipo di errore dell'evento (FATAL, NON_FATAL, ANR) |
issue_id | CORDA | Il problema associato all'evento |
id_variante | CORDA | La variante del problema associata a questo evento Tieni presente che non tutti gli eventi hanno una variante del problema associata. |
event_timestamp | TIMESTAMP | Quando si è verificato l'evento |
dispositivo | DOCUMENTAZIONE | Il dispositivo su cui si è verificato l'evento |
dispositivo.produttore | 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.usata | INT64 | Byte di memoria utilizzati |
memory.free | INT65 | Byte di memoria rimanenti |
magazzinaggio | DOCUMENTAZIONE | La memoria persistente del dispositivo |
deposito.usato | INT64 | Byte di archiviazione utilizzati |
storage.free | INT64 | Byte 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_di_modifica | CORDA | Se il dispositivo è stato modificato, ad esempio jailbroken/rooted (MODIFIED o UNMODIFIED) |
sistema_operativo.tipo | 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 | Il tipo di dispositivo (ad esempio, CELLULARE, TABLET, TV, ecc.); noto anche come "categoria del dispositivo" |
applicazione | DOCUMENTAZIONE | L'app che ha generato l'evento |
application.build_versione | CORDA | La versione build dell'app |
application.display_versione | CORDA | |
utente | DOCUMENTAZIONE | Facoltativo: informazioni raccolte sull'utente dell'app |
nome utente | CORDA | Facoltativo: il nome dell'utente |
utente.email | CORDA | Facoltativo: l'indirizzo email dell'utente |
ID utente | CORDA | Facoltativo: un ID specifico dell'app associato all'utente |
chiavi_personalizzate | RECORD RIPETUTO | Coppie chiave-valore definite dallo sviluppatore |
chiavi_personalizzate.key | CORDA | Una chiave definita dallo sviluppatore |
chiavi_personalizzate.valore | CORDA | Un valore definito dallo sviluppatore |
installazione_uuid | CORDA | Un ID che identifica un'app univoca e l'installazione del dispositivo |
crashlytics_sdk_versions | CORDA | La versione dell'SDK di Crashlytics che ha generato l'evento |
orientamento_app | CORDA | RITRATTO, ORIZZONTALE, FACCIA_SU o FACCIA_GIÙ |
orientamento_dispositivo | CORDA | RITRATTO, ORIZZONTALE, FACCIA_SU o FACCIA_GIÙ |
processo_stato | CORDA | SFONDO o PRIMO PIANO |
log | RECORD RIPETUTO | Messaggi di registro con timestamp generati dal logger di Crashlytics, se abilitato |
logs.timestamp | TIMESTAMP | Quando è stato creato il registro |
logs.message | CORDA | Il messaggio registrato |
briciole di pane | RECORD RIPETUTO | Pangrattato di Google Analytics con timestamp, se abilitato |
breadcrumb.timestamp | TIMESTAMP | Il timestamp associato al breadcrumb |
pangrattato.nome | CORDA | Il nome associato al breadcrumb |
breadcrumb.params | RECORD RIPETUTO | Parametri associati al breadcrumb |
breadcrumb.params.key | CORDA | Una chiave di parametro associata al breadcrumb |
breadcrumb.params.value | CORDA | Un valore di parametro associato al breadcrumb |
bias_frame | DOCUMENTAZIONE | Il frame identificato come causa principale dell'arresto anomalo o dell'errore |
bias_frame.line | INT64 | Il numero di riga del file del frame |
bias_frame.file | CORDA | Il nome del file frame |
bias_frame.symbol | CORDA | Il simbolo idratato o il simbolo grezzo se non è idratabile |
bias_frame.offset | INT64 | L'offset di byte nell'immagine binaria che contiene il codice, non impostato per le eccezioni Java |
bias_frame.indirizzo | INT64 | L'indirizzo nell'immagine binaria che contiene il codice, non impostato per i frame Java |
bias_frame.library | CORDA | Il nome visualizzato della libreria che include il frame |
bias_frame.owner | CORDA | SVILUPPATORE, FORNITORE, RUNTIME, PIATTAFORMA o SISTEMA |
bias_frame.blamed | BOOLEANO | Se l'analisi di Crashlytics ha stabilito che questo frame è la causa dell'arresto anomalo o dell'errore |
eccezioni | RECORD RIPETUTO | Solo Android: eccezioni che si sono verificate durante questo evento. Le eccezioni nidificate 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.eccezione_messaggio | CORDA | Un messaggio associato all'eccezione |
eccezioni.nidificate | BOOLEANO | Vero per tutti tranne l'ultima eccezione generata (ovvero il primo record) |
eccezioni.titolo | CORDA | Il titolo del thread |
eccezioni.sottotitolo | CORDA | Il sottotitolo del thread |
eccezioni.colpate | BOOLEANO | Vero se Crashlytics determina che l'eccezione è responsabile dell'errore o dell'arresto anomalo |
eccezioni.frames | RECORD RIPETUTO | 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 frame |
eccezioni.frames.symbol | CORDA | Il simbolo idratato o il simbolo grezzo se non è idratabile |
eccezioni.frames.offset | INT64 | L'offset di 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.library | CORDA | Il nome visualizzato della libreria che include il frame |
eccezioni.frames.proprietario | CORDA | SVILUPPATORE, FORNITORE, RUNTIME, PIATTAFORMA o SISTEMA |
eccezioni.frames.blamed | BOOLEANO | Se l'analisi di Crashlytics ha stabilito che questo frame è la causa dell'arresto anomalo o dell'errore |
errore | RECORD RIPETUTO | Solo app Apple: errori non irreversibili |
errore.nome_coda | CORDA | La coda su cui era in esecuzione il thread |
codice di errore | INT64 | Codice di errore associato all'NSError registrato in modo 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 determinato che questo frame è la causa dell'errore |
errore.frames | RECORD RIPETUTO | I frame dello stacktrace |
error.frames.line | INT64 | Il numero di riga del file del frame |
error.frames.file | CORDA | Il nome del file frame |
error.frames.symbol | CORDA | Il simbolo idratato o il simbolo grezzo se non è idratabile |
errore.frames.offset | INT64 | L'offset di byte nell'immagine binaria che contiene il codice |
error.frames.address | INT64 | L'indirizzo nell'immagine binaria che contiene il codice |
error.frames.library | CORDA | Il nome visualizzato della libreria che include il frame |
error.frames.owner | CORDA | SVILUPPATORE, FORNITORE, RUNTIME, PIATTAFORMA o SISTEMA |
error.frames.blamed | BOOLEANO | Se l'analisi di Crashlytics ha determinato che questo frame è la causa dell'errore |
fili | RECORD RIPETUTO | Discussioni presenti al momento dell'evento |
threads.crash | BOOLEANO | Se il thread si è arrestato in modo anomalo |
threads.nome_thread | CORDA | Il nome del filo |
threads.queue_name | CORDA | Solo app Apple: la coda su cui era in esecuzione il thread |
threads.signal_name | CORDA | Il nome del segnale che ha causato l'arresto anomalo dell'app, presente solo nei thread nativi arrestati in modo anomalo |
threads.signal_code | CORDA | Il codice del segnale che ha causato l'arresto anomalo dell'app; presente solo su thread nativi arrestati in modo anomalo |
threads.crash_address | INT64 | L'indirizzo del segnale che ha causato l'arresto anomalo dell'applicazione; presente solo su thread nativi arrestati in modo anomalo |
thread.codice | INT64 | Solo app Apple: codice di errore dell'errore NSE registrato personalizzato dell'applicazione |
thread.titolo | CORDA | Il titolo del thread |
threads.subtitle | CORDA | Il sottotitolo del thread |
threads.blamed | BOOLEANO | Se l'analisi di Crashlytics ha stabilito che questo frame è la causa dell'arresto anomalo o dell'errore |
thread.frames | RECORD RIPETUTO | Le cornici del filo |
threads.frames.line | INT64 | Il numero di riga del file del frame |
threads.frames.file | CORDA | Il nome del file frame |
thread.frames.symbol | CORDA | Il simbolo idratato, o il simbolo grezzo se non è idrabile |
threads.frames.offset | INT64 | L'offset di byte nell'immagine binaria che contiene il codice |
threads.frames.address | 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.blamed | BOOLEANO | Se l'analisi di Crashlytics ha determinato che questo frame è la causa dell'errore |
unity_metadata.unity_version | CORDA | La versione di Unity in esecuzione su questo dispositivo |
unity_metadata.debug_build | BOOLEANO | Se si tratta di una build di debug |
unity_metadata.processor_type | CORDA | Il tipo di processore |
unity_metadata.processor_count | INT64 | Il numero di processori (core) |
unity_metadata.processor_frequency_mhz | INT64 | La frequenza dei processori 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 |
unity_metadata.graphics_device_name | 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 dello 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_resolution_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 di Crashlytics esportati con Data Studio
Google Data Studio trasforma i tuoi set di dati Crashlytics in BigQuery in rapporti 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 rapporto 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 BigQuery di Crashlytics, puoi visualizzare i dati nella pagina Tendenze in tempo reale del modello Data Studio. Puoi utilizzare l'esempio come modello per creare rapidamente nuovi rapporti e visualizzazioni basati sui dati non elaborati sugli arresti anomali della tua app:
- Apri il modello Dashboard di Crashlytics Data Studio .
- Fare 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 di Crashlytics esportati scegliendo I miei progetti > [your-project-name] > firebase_crashlytics > [your-table-name] . La tua tabella batch è sempre disponibile per la selezione; se l'esportazione in streaming BigQuery di Crashlytics è abilitata, puoi invece selezionare la tua tabella in tempo reale.
- In Configurazione , imposta il livello del modello di Crashlytics su Predefinito .
- Fare clic su Connetti per creare la nuova origine dati.
- Fai clic su Aggiungi al rapporto per tornare al modello di Crashlytics.
- Infine, fai clic su Crea rapporto per creare la tua copia del modello Dashboard di Crashlytics Data Studio.