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

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 di servizi cloud e utilizzarli per visualizzazioni e dashboard personalizzati con Google Data Studio.

Attiva l'esportazione BigQuery

  1. Vai alla pagina Integrazioni nella console Firebase.
  2. Nella scheda BigQuery , fai clic su Link .
  3. 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
  • Dati esportati una volta al giorno
  • Eventi archiviati in modo permanente prima della scrittura in batch in 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 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à:

  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 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");
    
  3. 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 del dispositivo
sistema_operativo.versione_display CORDA La versione del sistema operativo
nome_sistema_operativo CORDA Il nome del sistema operativo
sistema_operativo.stato_di_modifica CORDA MODIFIED o UNMODIFIED, ovvero se il dispositivo è stato sottoposto a jailbreak/root
sistema_operativo.tipo CORDA Il tipo di sistema operativo sul dispositivo. Ad esempio IOS, MACOS
sistema_operativo.tipo_dispositivo CORDA Il tipo di dispositivo. Es. MOBILE, TABLET, TV
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:

  1. Apri il modello Dashboard di Crashlytics Data Studio .
  2. Fare 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 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.
  6. In Configurazione , imposta il livello del modello di Crashlytics su Predefinito .
  7. Fare clic su Connetti per creare la nuova origine dati.
  8. Fai clic su Aggiungi al rapporto per tornare al modello di Crashlytics.
  9. Infine, fai clic su Crea rapporto per creare la tua copia del modello Dashboard di Crashlytics Data Studio.