Exportieren Sie Firebase Crashlytics-Daten nach BigQuery

Sie können Ihre Crashlytics-Daten zur weiteren Analyse in BigQuery exportieren. Mit BigQuery können Sie die Daten mit BigQuery SQL analysieren, sie zu einem anderen Cloud-Anbieter exportieren und sie für Visualisierungs- und benutzerdefinierte Dashboards mit Google Data Studio verwenden.

Aktivieren Sie den BigQuery-Export

  1. Gehen Sie zur Seite „Integrationen“ in der Firebase-Konsole.
  2. Klicken Sie auf der BigQuery- Karte auf Link .
  3. Befolgen Sie die Anweisungen auf dem Bildschirm, um BigQuery zu aktivieren.

Wenn Sie Ihr Projekt mit BigQuery verknüpfen:

  • Firebase richtet tägliche Synchronisierungen Ihrer Daten aus Ihrem Firebase-Projekt mit BigQuery ein.
  • Standardmäßig sind alle Apps in Ihrem Projekt mit BigQuery verknüpft und alle Apps, die Sie später zum Projekt hinzufügen, werden automatisch mit BigQuery verknüpft. Sie können verwalten, welche Apps Daten senden .
  • Firebase exportiert eine Kopie Ihrer vorhandenen Daten nach BigQuery. Dazu gehört für jede verknüpfte App eine Batch-Tabelle mit den Daten aus der täglichen Synchronisierung.
  • Wenn Sie den Streaming-Export von Crashlytics BigQuery aktivieren, verfügen alle verknüpften Apps außerdem über eine Echtzeittabelle mit ständig aktualisierten Daten.

Um den BigQuery-Export zu deaktivieren, heben Sie die Verknüpfung Ihres Projekts in der Firebase-Konsole auf.

Welche Daten werden nach BigQuery exportiert?

Firebase Crashlytics-Daten werden in einen BigQuery-Datensatz namens firebase_crashlytics exportiert. Standardmäßig werden für jede App in Ihrem Projekt individuelle Tabellen im Crashlytics-Datensatz erstellt. Firebase benennt die Tabellen basierend auf der Bundle-ID der App, wobei Punkte in Unterstriche umgewandelt werden und am Ende ein Plattformname angehängt wird.

Daten für eine App mit der ID com.google.test würden sich beispielsweise in einer Tabelle mit dem Namen com_google_test_ANDROID befinden. Diese Batch-Tabelle wird einmal täglich aktualisiert. Wenn Sie den Crashlytics BigQuery-Streaming-Export aktivieren, werden Firebase Crashlytics-Daten auch in Echtzeit an com_google_test_ANDROID_REALTIME gestreamt.

Jede Zeile in einer Tabelle stellt ein Ereignis dar, das in der App aufgetreten ist, einschließlich Abstürzen, nicht schwerwiegenden Fehlern und ANRs.

Aktivieren Sie den Crashlytics BigQuery-Streaming-Export

Mit BigQueryStreaming können Sie Ihre Crashlytics-Daten in Echtzeit streamen. Sie können es für jeden Zweck verwenden, der Live-Daten erfordert, z. B. zum Präsentieren von Informationen in einem Live-Dashboard, zum Live-Verfolgen eines Rollouts oder zum Überwachen von Anwendungsproblemen, die Warnungen und benutzerdefinierte Workflows auslösen.

Der Crashlytics BigQuery-Streaming-Export ist für die BigQuery-Sandbox nicht verfügbar.

Wenn Sie den Streaming-Export von Crashlytics BigQuery aktivieren, verfügen Sie zusätzlich zur Batch-Tabelle über eine Echtzeittabelle. Hier sind die Unterschiede zwischen den Tabellen, die Sie beachten sollten:

Batch-Tabelle Echtzeittabelle
  • Daten werden einmal täglich exportiert
  • Ereignisse werden vor dem Batch-Schreiben in BigQuery dauerhaft gespeichert
  • Kann bis zu 90 Tage vorher aufgefüllt werden
  • Daten werden in Echtzeit exportiert
  • Keine Hinterfüllung vorhanden

Die Batch-Tabelle ist ideal für Langzeitanalysen und die Identifizierung von Trends im Laufe der Zeit, da wir Ereignisse vor dem Schreiben dauerhaft speichern und sie bis zu 90 Tage lang in die Tabelle eingefügt werden können. Wenn wir Daten in Ihre Echtzeittabelle schreiben, schreiben wir sie sofort in BigQuery und eignen sich daher ideal für Live-Dashboards und benutzerdefinierte Warnungen. Diese beiden Tabellen können mit einer Stitching-Abfrage kombiniert werden, um die Vorteile beider zu nutzen. Siehe Abfragebeispiel 9 unten.

Standardmäßig hat die Echtzeittabelle eine Partitionsablaufzeit von 30 Tagen. Informationen dazu, wie Sie dies ändern können, finden Sie unter Aktualisieren des Partitionsablaufs .

Aktivieren Sie Crashlytics BigQuery-Streaming

Um das Streaming zu aktivieren, navigieren Sie zum Abschnitt „Crashlytics“ der Seite „BigQuery- Integrationen “ und aktivieren Sie das Kontrollkästchen „Streaming einschließen“ .

Data Studio-Vorlage

Um Echtzeitdaten in Ihrer Data Studio-Vorlage zu aktivieren, befolgen Sie die Anweisungen unter Visualisieren exportierter Crashlytics-Daten mit Data Studio .

Ansichten

Sie können die folgenden Beispielabfragen mithilfe der BigQuery-Benutzeroberfläche in Ansichten umwandeln. Ausführliche Anweisungen finden Sie unter Ansichten erstellen .

Was können Sie mit den exportierten Daten machen?

BigQuery-Exporte enthalten rohe Absturzdaten, einschließlich Gerätetyp, Betriebssystem, Ausnahmen (Android-Apps) oder Fehler (Apple-Apps), und Crashlytics-Protokolle sowie andere Daten.

Arbeiten mit Firebase Crashlytics-Daten in BigQuery

Die folgenden Beispiele veranschaulichen Abfragen, die Sie für Ihre Crashlytics-Daten ausführen können. Diese Abfragen generieren Berichte, die im Crashlytics-Dashboard nicht verfügbar sind.

Beispiele für Crashlytics-Abfragen

Die folgenden Beispiele veranschaulichen, wie Berichte erstellt werden, die Absturzereignisdaten zu leichter verständlichen Zusammenfassungen zusammenfassen.

Beispiel 1: Abstürze bei Tag

Nachdem sie daran gearbeitet hat, so viele Fehler wie möglich zu beheben, glaubt eine leitende Entwicklerin, dass ihr Team endlich bereit ist, ihre neue Foto-Sharing-App auf den Markt zu bringen. Bevor sie dies tun, möchten sie die Anzahl der Abstürze pro Tag im letzten Monat überprüfen, um sicherzustellen, dass ihre Bug-Bash die App im Laufe der Zeit stabiler gemacht hat:

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;

Beispiel 2: Finden Sie die häufigsten Abstürze

Um Produktionspläne richtig zu priorisieren, überlegt ein Projektmanager, wie er die zehn häufigsten Abstürze in seinem Produkt aufzeigen kann. Sie erzeugen eine Abfrage, die die relevanten Datenpunkte bereitstellt:

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;

Beispiel 3: Die 10 am häufigsten abstürzenden Geräte

Der Herbst ist die neue Telefonsaison! Ein Entwickler weiß, dass dies auch bedeutet, dass es eine neue Saison für gerätespezifische Probleme gibt. Um den drohenden Kompatibilitätsbedenken zuvorzukommen, haben sie eine Abfrage zusammengestellt, die die 10 Geräte identifiziert, bei denen es in der vergangenen Woche zu den meisten Abstürzen kam:

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;

Beispiel 4: Nach benutzerdefiniertem Schlüssel filtern

Ein Spieleentwickler möchte wissen, auf welcher Ebene seines Spiels die meisten Abstürze auftreten. Um ihnen dabei zu helfen, diese Statistik zu verfolgen, legen sie einen benutzerdefinierten Crashlytics-Schlüssel current_level fest und aktualisieren ihn jedes Mal, wenn der Benutzer ein neues Level erreicht.

Ziel c

CrashlyticsKit setIntValue:3 forKey:@"current_level";

Schnell

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

Java

Crashlytics.setInt("current_level", 3);

Mit diesem Schlüssel in ihrem BigQuery-Export schreiben sie dann eine Abfrage, um die Verteilung der current_level Werte zu melden, die jedem Absturzereignis zugeordnet sind:

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

Beispiel 5: Extraktion der Benutzer-ID

Ein Entwickler hat eine App im Early Access. Die meisten ihrer Benutzer lieben es, aber drei haben ungewöhnlich viele Abstürze erlebt. Um dem Problem auf den Grund zu gehen, schreiben sie eine Abfrage, die alle Absturzereignisse für diese Benutzer unter Verwendung ihrer Benutzer-IDs abruft:

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

Beispiel 6: Finden Sie alle Benutzer, bei denen ein bestimmtes Absturzproblem auftritt

Ein Entwickler hat einer Gruppe von Betatestern einen kritischen Fehler mitgeteilt. Das Team konnte die Abfrage aus Beispiel 2 oben verwenden, um die spezifische Absturzproblem-ID zu identifizieren. Jetzt möchten sie eine Abfrage ausführen, um die Liste der App-Benutzer zu extrahieren, die von diesem Absturz betroffen waren:

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;

Beispiel 7: Anzahl der von einem Absturzproblem betroffenen Benutzer, aufgeschlüsselt nach Land

Nun hat das Team beim Rollout einer neuen Version einen kritischen Fehler entdeckt. Sie konnten die Abfrage aus Beispiel 2 oben verwenden, um die spezifische Absturzproblem-ID zu identifizieren. Das Team möchte nun sehen, ob sich dieser Absturz auf Benutzer in verschiedenen Ländern auf der ganzen Welt ausgeweitet hat.

Um diese Abfrage zu schreiben, muss das Team Folgendes tun:

  1. Aktivieren Sie BigQuery-Exporte für Google Analytics. Siehe Projektdaten nach BigQuery exportieren .

  2. Aktualisieren Sie ihre App, um eine Benutzer-ID sowohl an das Google Analytics SDK als auch an das Crashlytics SDK zu übergeben.

    Ziel c
    CrashlyticsKit setUserIdentifier:@"123456789";
    FIRAnalytics setUserID:@"12345678 9";
    
    Schnell
    Crashlytics.sharedInstance().setUserIdentifier("123456789");
    Analytics.setUserID("123456789");
    
    Java
    Crashlytics.setUserIdentifier("123456789");
    mFirebaseAnalytics.setUserId("123456789");
    
  3. Schreiben Sie eine Abfrage, die das Benutzer-ID-Feld verwendet, um Ereignisse im BigQuery-Datensatz von Google Analytics mit Abstürzen im BigQuery-Datensatz von Crashlytics zu verbinden:

    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
    

Beispiel 8: Die 5 größten Probleme heute

Erfordert die Aktivierung des Crashlytics BigQuery-Streaming-Exports

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;

Beispiel 9: Top 5 Probleme seit DATUM, einschließlich heute

Erfordert die Aktivierung des Crashlytics BigQuery-Streaming-Exports.

In diesem Beispiel kombinieren wir Batch- und Echtzeittabellen, um den zuverlässigen Batch-Daten Echtzeitinformationen hinzuzufügen. Da event_id ein Primärschlüssel ist, können wir DISTINCT event_id verwenden, um alle gemeinsamen Ereignisse aus den beiden Tabellen zu deduplizieren.

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;

Grundlegendes zum Firebase Crashlytics-Schema in BigQuery

Wenn Sie Crashlytics mit BigQuery verknüpfen, exportiert Firebase aktuelle Ereignisse (Abstürze, nicht schwerwiegende Fehler und ANRs), einschließlich Ereignisse von bis zu zwei Tagen vor der Verknüpfung, mit der Option, bis zu neunzig Tage aufzufüllen .

Von diesem Zeitpunkt an bis Sie den Link deaktivieren, exportiert Firebase täglich Crashlytics-Ereignisse. Es kann nach jedem Export einige Minuten dauern, bis die Daten in BigQuery verfügbar sind.

Datensätze

Firebase Crashlytics erstellt in BigQuery einen neuen Datensatz für Crashlytics-Daten. Der Datensatz deckt Ihr gesamtes Projekt ab, auch wenn es mehrere Apps umfasst.

Tische

Firebase Crashlytics erstellt im Datensatz für jede App in Ihrem Projekt eine Tabelle, es sei denn, Sie haben den Datenexport für diese App deaktiviert. Firebase benennt die Tabellen basierend auf der Bundle-ID der App, wobei Punkte in Unterstriche umgewandelt werden und am Ende ein Plattformname angehängt wird.

Daten für eine Android-App mit der ID com.google.test wären beispielsweise in einer Tabelle namens com_google_test_ANDROID und Echtzeitdaten (falls aktiviert) wären in einer Tabelle mit dem Namen com_google_test_ANDROID_REALTIME

Tabellen enthalten einen Standardsatz von Crashlytics-Daten zusätzlich zu allen benutzerdefinierten Crashlytics-Schlüsseln, die von den Entwicklern definiert wurden.

Reihen

Jede Zeile in einer Tabelle stellt einen Fehler dar, den die App festgestellt hat.

Säulen

Die Spalten in einer Tabelle sind für Abstürze, nicht schwerwiegende Fehler und ANRs identisch. Wenn der Streaming-Export von Crashlytics BigQuery aktiviert ist, verfügt die Echtzeittabelle über dieselben Spalten wie die Batch-Tabelle. Die Spalten im Export sind unten aufgeführt.

Ohne Stapelspuren

In Zeilen vorhandene Spalten, die Ereignisse ohne Stack-Traces darstellen.

Feldname Datentyp Beschreibung
Plattform STRING Apple- oder Android-Apps
bundle_identifier STRING Die Bundle-ID, z. B. com.google.gmail
event_id STRING Eine eindeutige ID für das Ereignis
is_fatal BOOLEAN Ob die App abgestürzt ist
Fehlertyp STRING Fehlertyp des Ereignisses (FATAL, NON_FATAL, ANR)
Issue_id STRING Das mit dem Ereignis verbundene Problem
Varianten_ID STRING Die Problemvariante, die diesem Ereignis zugeordnet ist
Beachten Sie, dass nicht allen Ereignissen eine Ausgabevariante zugeordnet ist.
event_timestamp ZEITSTEMPEL Wann das Ereignis aufgetreten ist
Gerät AUFZEICHNEN Das Gerät, auf dem das Ereignis aufgetreten ist
Gerätehersteller STRING Der Gerätehersteller
Gerätemodell STRING Das Gerätemodell
Gerätearchitektur STRING X86_32, X86_64, ARMV7, ARM64, ARMV7S oder ARMV7K
Erinnerung AUFZEICHNEN Der Speicherstatus des Geräts
Speicher.verwendet INT64 Verwendeter Speicher in Bytes
Speicherfrei INT64 Verbleibende Bytes Speicher
Lagerung AUFZEICHNEN Der dauerhafte Speicher des Geräts
Speicher.verwendet INT64 Verwendeter Speicher in Bytes
speicherfrei INT64 Verbleibender Speicherplatz in Bytes
Betriebssystem AUFZEICHNEN Die Details des Betriebssystems auf dem Gerät
Operating_system.display_version STRING Die Version des Betriebssystems auf dem Gerät
Betriebssystemname STRING Der Name des Betriebssystems auf dem Gerät
Operating_system.modification_state STRING Ob das Gerät geändert wurde, zum Beispiel einen Jailbreak/Rooting (GEÄNDERT oder UNGEÄNDERT)
Operating_system.type STRING Der Typ des Betriebssystems, das auf dem Gerät ausgeführt wird (z. B. IOS, MACOS); Nur für Apps auf Apple-Plattformen verfügbar
Operating_system.device_type STRING Der Gerätetyp (z. B. MOBIL, TABLET, TV usw.); auch als „Gerätekategorie“ bekannt
Anwendung AUFZEICHNEN Die App, die das Ereignis generiert hat
application.build_version STRING Die Build-Version der App
application.display_version STRING
Benutzer AUFZEICHNEN Optional: Informationen, die über den Benutzer der App gesammelt wurden
Nutzername STRING Optional: Der Name des Benutzers
Benutzer Email STRING Optional: Die E-Mail-Adresse des Benutzers
Benutzer-ID STRING Optional: Eine App-spezifische ID, die dem Benutzer zugeordnet ist
benutzerdefinierte_Schlüssel WIEDERHOLTE AUFZEICHNUNG Vom Entwickler definierte Schlüssel-Wert-Paare
custom_keys.key STRING Ein vom Entwickler definierter Schlüssel
custom_keys.value STRING Ein vom Entwickler definierter Wert
installation_uuid STRING Eine ID, die eine eindeutige App- und Geräteinstallation identifiziert
crashlytics_sdk_versions STRING Die Crashlytics SDK-Version, die das Ereignis generiert hat
app_orientation STRING PORTRÄT, LANDSCHAFT, FACE_UP oder FACE_DOWN
Geräteorientierung STRING PORTRÄT, LANDSCHAFT, FACE_UP oder FACE_DOWN
Prozessstatus STRING HINTERGRUND oder VORDERGRUND
Protokolle WIEDERHOLTE AUFZEICHNUNG Vom Crashlytics-Logger generierte Protokollnachrichten mit Zeitstempel, sofern aktiviert
logs.timestamp ZEITSTEMPEL Wann das Protokoll erstellt wurde
logs.message STRING Die protokollierte Nachricht
Semmelbrösel WIEDERHOLTE AUFZEICHNUNG Mit Zeitstempel versehene Google Analytics-Breadcrumbs, sofern aktiviert
breadcrumbs.timestamp ZEITSTEMPEL Der mit dem Breadcrumb verknüpfte Zeitstempel
breadcrumbs.name STRING Der mit dem Breadcrumb verknüpfte Name
breadcrumbs.params WIEDERHOLTE AUFZEICHNUNG Mit dem Breadcrumb verknüpfte Parameter
breadcrumbs.params.key STRING Ein Parameterschlüssel, der dem Breadcrumb zugeordnet ist
breadcrumbs.params.value STRING Ein Parameterwert, der dem Breadcrumb zugeordnet ist
Blame_Frame AUFZEICHNEN Der Frame, der als Ursache des Absturzes oder Fehlers identifiziert wurde
blame_frame.line INT64 Die Zeilennummer der Datei des Frames
„blame_frame.file“. STRING Der Name der Frame-Datei
blame_frame.symbol STRING Das hydratisierte Symbol oder das Rohsymbol, wenn es nicht hydrierbar ist
Blame_Frame.Offset INT64 Der Byte-Offset im Binärbild, das den Code enthält, nicht festgelegt für Java-Ausnahmen
Blame_Frame.Adresse INT64 Die Adresse im Binärbild, das den Code enthält, für Java-Frames nicht festgelegt
blame_frame.library STRING Der Anzeigename der Bibliothek, die den Frame enthält
blame_frame.owner STRING ENTWICKLER, VERKÄUFER, RUNTIME, PLATTFORM oder SYSTEM
blame_frame.blamed BOOLEAN Ob die Analyse von Crashlytics ergeben hat, dass dieser Frame die Ursache für den Absturz oder Fehler ist
Ausnahmen WIEDERHOLTE AUFZEICHNUNG Nur Android: Ausnahmen, die während dieses Ereignisses aufgetreten sind. Verschachtelte Ausnahmen werden in umgekehrter chronologischer Reihenfolge angezeigt (sprich: Der letzte Datensatz ist die erste ausgelöste Ausnahme).
Ausnahmen.Typ STRING Der Ausnahmetyp, z. B. java.lang.IllegalStateException
Ausnahmen.Exception_Message STRING Eine mit der Ausnahme verknüpfte Nachricht
Ausnahmen.verschachtelt BOOLEAN Gilt für alle außer der zuletzt ausgelösten Ausnahme (d. h. dem ersten Datensatz).
Ausnahmen.Titel STRING Der Titel des Threads
Ausnahmen.Untertitel STRING Der Untertitel des Threads
Ausnahmen.schuldig BOOLEAN True, wenn Crashlytics feststellt, dass die Ausnahme für den Fehler oder Absturz verantwortlich ist
Ausnahmen.Frames WIEDERHOLTE AUFZEICHNUNG Die mit der Ausnahme verknüpften Frames
ausnahmen.frames.line INT64 Die Zeilennummer der Datei des Frames
Ausnahmen.Frames.Datei STRING Der Name der Frame-Datei
Ausnahmen.Frames.symbol STRING Das hydratisierte Symbol oder das Rohsymbol, wenn es nicht hydrierbar ist
Ausnahmen.Frames.Offset INT64 Der Byte-Offset im Binärbild, das den Code enthält, nicht festgelegt für Java-Ausnahmen
Ausnahmen.Frames.Adresse INT64 Die Adresse im Binärbild, das den Code enthält, für Java-Frames nicht festgelegt
ausnahmen.frames.library STRING Der Anzeigename der Bibliothek, die den Frame enthält
Ausnahmen.Frames.Eigentümer STRING ENTWICKLER, VERKÄUFER, LAUFZEIT, PLATTFORM oder SYSTEM
ausnahmen.frames.blamed BOOLEAN Ob die Analyse von Crashlytics ergeben hat, dass dieser Frame die Ursache für den Absturz oder Fehler ist
Fehler WIEDERHOLTE AUFZEICHNUNG Nur Apple-Apps: nicht schwerwiegende Fehler
Fehler.Warteschlangenname STRING Die Warteschlange, in der der Thread ausgeführt wurde
Fehlercode INT64 Fehlercode, der dem benutzerdefinierten protokollierten NSError der App zugeordnet ist
Fehler.Titel STRING Der Titel des Threads
Fehler.Untertitel STRING Der Untertitel des Threads
Fehler.schuldig BOOLEAN Ob die Analyse von Crashlytics ergeben hat, dass dieser Frame die Fehlerursache ist
error.frames WIEDERHOLTE AUFZEICHNUNG Die Frames des Stacktrace
error.frames.line INT64 Die Zeilennummer der Datei des Frames
error.frames.file STRING Der Name der Frame-Datei
error.frames.symbol STRING Das hydratisierte Symbol oder das Rohsymbol, wenn es nicht hydrierbar ist
error.frames.offset INT64 Der Byte-Offset im Binärbild, das den Code enthält
error.frames.address INT64 Die Adresse im Binärbild, das den Code enthält
error.frames.library STRING Der Anzeigename der Bibliothek, die den Frame enthält
error.frames.owner STRING ENTWICKLER, VERKÄUFER, RUNTIME, PLATTFORM oder SYSTEM
error.frames.blamed BOOLEAN Ob die Analyse von Crashlytics ergeben hat, dass dieser Frame die Fehlerursache ist
Threads WIEDERHOLTE AUFZEICHNUNG Threads, die zum Zeitpunkt der Veranstaltung vorhanden waren
threads.abgestürzt BOOLEAN Ob der Thread abgestürzt ist
threads.thread_name STRING Der Name des Threads
threads.queue_name STRING Nur Apple-Apps: Die Warteschlange, in der der Thread ausgeführt wurde
threads.signal_name STRING Der Name des Signals, das zum Absturz der App geführt hat. Er ist nur in abgestürzten nativen Threads vorhanden
threads.signal_code STRING Der Code des Signals, das zum Absturz der App geführt hat; Nur bei abgestürzten nativen Threads vorhanden
threads.crash_address INT64 Die Adresse des Signals, das zum Absturz der Anwendung geführt hat; Nur bei abgestürzten nativen Threads vorhanden
threads.code INT64 Nur Apple-Apps: Fehlercode des benutzerdefinierten protokollierten NSError der Anwendung
threads.title STRING Der Titel des Threads
threads.subtitle STRING Der Untertitel des Threads
threads.blamed BOOLEAN Ob die Analyse von Crashlytics ergeben hat, dass dieser Frame die Ursache für den Absturz oder Fehler ist
threads.frames WIEDERHOLTE AUFZEICHNUNG Die Rahmen des Threads
threads.frames.line INT64 Die Zeilennummer der Datei des Frames
threads.frames.file STRING Der Name der Frame-Datei
threads.frames.symbol STRING Das hydratisierte Symbol oder das rohe Symbol, wenn es nicht hydrierbar ist
threads.frames.offset INT64 Der Byte-Offset im Binärbild, das den Code enthält
threads.frames.address INT64 Die Adresse im Binärbild, das den Code enthält
threads.frames.library STRING Der Anzeigename der Bibliothek, die den Frame enthält
threads.frames.owner STRING ENTWICKLER, VERKÄUFER, LAUFZEIT, PLATTFORM oder SYSTEM
threads.frames.blamed BOOLEAN Ob die Analyse von Crashlytics ergeben hat, dass dieser Frame die Fehlerursache ist
unity_metadata.unity_version STRING Die Version von Unity, die auf diesem Gerät ausgeführt wird
unity_metadata.debug_build BOOLEAN Wenn es sich um einen Debug-Build handelt
unity_metadata.processor_type STRING Der Typ des Prozessors
unity_metadata.processor_count INT64 Die Anzahl der Prozessoren (Kerne)
unity_metadata.processor_frequenz_mhz INT64 Die Frequenz des/der Prozessor(s) in MHz
unity_metadata.system_memory_size_mb INT64 Die Größe des Systemspeichers in MB
unity_metadata.graphics_memory_size_mb INT64 Der Grafikspeicher in MB
unity_metadata.graphics_device_id INT64 Die Kennung des Grafikgeräts
unity_metadata.graphics_device_vendor_id INT64 Die Kennung des Herstellers des Grafikprozessors
unity_metadata.graphics_device_name STRING Der Name des Grafikgeräts
unity_metadata.graphics_device_vendor STRING Der Anbieter des Grafikgeräts
unity_metadata.graphics_device_version STRING Die Version des Grafikgeräts
unity_metadata.graphics_device_type STRING Der Typ des Grafikgeräts
unity_metadata.graphics_shader_level INT64 Die Shader-Ebene der Grafiken
unity_metadata.graphics_render_target_count INT64 Die Anzahl der grafischen Rendering-Ziele
unity_metadata.graphics_copy_texture_support STRING Unterstützung für das Kopieren von Grafiktexturen, wie in der Unity-API definiert
unity_metadata.graphics_max_texture_size INT64 Die maximale Größe für das Rendern von Texturen
unity_metadata.screen_size_px STRING Die Größe des Bildschirms in Pixel, formatiert als Breite x Höhe
unity_metadata.screen_resolution_dpi STRING Die DPI des Bildschirms als Gleitkommazahl
unity_metadata.screen_refresh_rate_hz INT64 Die Bildwiederholfrequenz des Bildschirms in Hz

Visualisierung exportierter Crashlytics-Daten mit Data Studio

Google Data Studio wandelt Ihre Crashlytics-Datensätze in BigQuery in Berichte um, die leicht zu lesen, leicht zu teilen und vollständig anpassbar sind.

Weitere Informationen zur Verwendung von Data Studio finden Sie in der Data Studio-Schnellstartanleitung „Willkommen bei Data Studio“ .

Verwendung einer Crashlytics-Berichtsvorlage

Data Studio verfügt über einen Beispielbericht für Crashlytics, der einen umfassenden Satz an Dimensionen und Metriken aus dem exportierten Crashlytics BigQuery-Schema enthält. Wenn Sie den Crashlytics BigQuery-Streaming-Export aktiviert haben, können Sie diese Daten auf der Seite „Echtzeittrends“ der Data Studio-Vorlage anzeigen. Sie können das Beispiel als Vorlage verwenden, um schnell neue Berichte und Visualisierungen basierend auf den rohen Absturzdaten Ihrer eigenen App zu erstellen:

  1. Öffnen Sie die Crashlytics Data Studio Dashboard-Vorlage .
  2. Klicken Sie oben rechts auf Vorlage verwenden .
  3. Wählen Sie im Dropdown-Menü „Neue Datenquelle“ die Option „Neue Datenquelle erstellen“ aus.
  4. Klicken Sie auf der BigQuery- Karte auf Auswählen .
  5. Wählen Sie eine Tabelle mit exportierten Crashlytics-Daten aus, indem Sie „Meine Projekte > [Ihr-Projektname] > Firebase_crashlytics > [Ihr-Tabellenname]“ wählen. Ihre Batch-Tabelle steht Ihnen immer zur Auswahl zur Verfügung; Wenn der Streaming-Export von Crashlytics BigQuery aktiviert ist, können Sie stattdessen Ihre Echtzeittabelle auswählen.
  6. Stellen Sie unter Konfiguration die Crashlytics-Vorlagenebene auf Standard ein.
  7. Klicken Sie auf „Verbinden“ , um die neue Datenquelle zu erstellen.
  8. Klicken Sie auf „Zum Bericht hinzufügen“ , um zur Crashlytics-Vorlage zurückzukehren.
  9. Klicken Sie abschließend auf Bericht erstellen , um Ihre Kopie der Crashlytics Data Studio Dashboard-Vorlage zu erstellen.