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

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 die Visualisierung und benutzerdefinierte Dashboards mit Google Data Studio verwenden.

Aktivieren Sie den BigQuery-Export

  1. Rufen Sie die Seite „Integrationen“ in der Firebase-Konsole auf.
  2. Klicken Sie in 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 Stapeltabelle mit den Daten aus der täglichen Synchronisierung.
  • Wenn Sie den Crashlytics BigQuery-Streaming-Export aktivieren, verfügen alle verknüpften Apps auch ü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 ein BigQuery-Dataset 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 ein Plattformname am Ende angehängt wird.

Beispielsweise würden sich Daten für eine App mit der ID com.google.test in einer Tabelle mit dem Namen com_google_test_ANDROID befinden. Diese Stapeltabelle 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ürze, nicht schwerwiegende Fehler 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. Informationen in einem Live-Dashboard präsentieren, eine Einführung live verfolgen oder Anwendungsprobleme überwachen, die Warnungen und benutzerdefinierte Workflows auslösen.

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

Wenn Sie den Crashlytics BigQuery-Streaming-Export aktivieren, haben Sie zusätzlich zur Stapeltabelle eine Echtzeittabelle. Hier sind die Unterschiede, die Sie zwischen den Tabellen beachten sollten:

Chargentabelle Echtzeittabelle
  • Daten werden einmal täglich exportiert
  • Ereignisse werden vor dem Stapelschreiben in BigQuery dauerhaft gespeichert
  • Kann bis zu 90 Tage im Voraus nachgefüllt werden
  • Daten werden in Echtzeit exportiert
  • Keine Hinterfüllung vorhanden

Die Stapeltabelle ist ideal für langfristige Analysen und das Erkennen von Trends im Laufe der Zeit, da wir Ereignisse dauerhaft speichern, bevor wir sie schreiben, und sie können bis zu 90 Tage lang in die Tabelle zurückgefüllt werden. Wenn wir Daten in Ihre Echtzeittabelle schreiben, schreiben wir sie sofort in BigQuery und sind 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. Um zu erfahren, wie Sie dies ändern können, siehe Aktualisieren des Partitionsablaufs .

Aktivieren Sie Crashlytics BigQuery-Streaming

Navigieren Sie zum Aktivieren des Streamings zum Abschnitt „Crashlytics“ auf der Seite „BigQuery- Integrationen “ und aktivieren Sie das Kontrollkästchen „Streaming einbeziehen“ .

Data Studio-Vorlage

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

Ansichten

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

Was können Sie mit den exportierten Daten tun?

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 zeigen 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 Daten zu Absturzereignissen 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 ihr 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 10 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: Top 10 der am häufigsten abstürzenden Geräte

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

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: Filtern nach benutzerdefiniertem Schlüssel

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 mit jedem Absturzereignis verbunden 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 eine ungewöhnliche Anzahl von Abstürzen 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, die mit einem bestimmten Absturzproblem konfrontiert sind

Ein Entwickler hat einer Gruppe von Beta-Testern 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 Benutzer, die von einem Absturzproblem betroffen sind, aufgeschlüsselt nach Ländern

Nun hat das Team beim Rollout eines neuen Releases 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 ausgebreitet hat.

Um diese Abfrage zu schreiben, muss das Team:

  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 Google Analytics BigQuery-Datensatz mit Abstürzen im Crashlytics BigQuery-Datensatz zu verknüpfen:

    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 Top-5-Probleme bisher 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 Ausgaben seit DATE, einschließlich heute

Erfordert die Aktivierung des Crashlytics BigQuery-Streaming-Exports.

In diesem Beispiel kombinieren wir Stapel- und Echtzeittabellen, um den zuverlässigen Stapeldaten 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 nachzufüllen .

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

Datensätze

Firebase Crashlytics erstellt ein neues Dataset in BigQuery für Crashlytics-Daten. Der Datensatz deckt Ihr gesamtes Projekt ab, auch wenn es mehrere Apps enthält.

Tische

Firebase Crashlytics erstellt für jede App in Ihrem Projekt eine Tabelle im Dataset, 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 ein Plattformname am Ende angehängt wird.

Beispielsweise befinden sich Daten für eine Android-App mit der ID com.google.test in einer Tabelle mit dem Namen com_google_test_ANDROID und Echtzeitdaten (falls aktiviert) 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, auf den die App gestoßen ist.

Säulen

Die Spalten in einer Tabelle sind für Abstürze, nicht schwerwiegende Fehler und ANRs identisch. Wenn der Crashlytics BigQuery-Streaming-Export aktiviert ist, hat die Echtzeittabelle dieselben Spalten wie die Stapeltabelle. Die Spalten innerhalb des Exports sind unten aufgeführt.

Ohne Stacktraces

In Zeilen vorhandene Spalten, die Ereignisse ohne Stacktraces darstellen.

Feldname Datentyp Beschreibung
Plattform STRING Apple- oder Android-Apps
Bundle_Identifier STRING Die Bündel-ID, z. B. com.google.gmail
event_id STRING Eine eindeutige ID für das Ereignis
ist_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 Ausgabevariante, die diesem Ereignis zugeordnet ist
Beachten Sie, dass nicht alle Ereignisse eine zugeordnete Problemvariante haben.
event_timestamp ZEITSTEMPEL Wann das Ereignis eingetreten ist
Gerät AUFZEICHNEN Das Gerät, auf dem das Ereignis aufgetreten ist
Gerätehersteller STRING Der Gerätehersteller
Gerät.Modell STRING Das Gerätemodell
gerät.architektur STRING X86_32, X86_64, ARMV7, ARM64, ARMV7S oder ARMV7K
Speicher AUFZEICHNEN Der Speicherstatus des Geräts
Speicher.used INT64 Bytes des verwendeten Speichers
speicher.frei INT65 Verbleibende Bytes an Speicher
Lagerung AUFZEICHNEN Der persistente Speicher des Geräts
lagerung.gebraucht INT64 Byte Speicher verwendet
speicher.frei INT64 Verbleibende Bytes an Speicherplatz
Betriebssystem AUFZEICHNEN Die Betriebssystemdetails des Geräts
Betriebssystem.Anzeigeversion STRING Die OS-Version
Betriebssystem.Name STRING Der Name des Betriebssystems
Betriebssystem.Änderungszustand STRING MODIFIED oder UNMODIFIED, dh ob das Gerät gejailbreakt/gerootet wurde
Betriebssystem.Typ STRING Der Typ des Betriebssystems auf dem Gerät. ZB IOS, MACOS
Betriebssystem.Gerätetyp STRING Der Gerätetyp. ZB MOBILE, TABLET, TV
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: Über den Benutzer der App gesammelte Informationen
Nutzername STRING Optional: Der Name des Benutzers
Benutzer Email STRING Optional: Die E-Mail-Adresse des Benutzers
Benutzer-ID STRING Optional: Eine anwendungsspezifische ID, die dem Benutzer zugeordnet ist
custom_keys 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 HOCHFORMAT, LANDSCHAFT, FACE_UP oder FACE_DOWN
Geräteorientierung STRING HOCHFORMAT, LANDSCHAFT, FACE_UP oder FACE_DOWN
Prozesszustand STRING HINTERGRUND oder VORDERGRUND
Protokolle WIEDERHOLTE AUFZEICHNUNG Protokollnachrichten mit Zeitstempel, die vom Crashlytics-Logger generiert werden, sofern aktiviert
logs.timestamp ZEITSTEMPEL Wann das Protokoll erstellt wurde
logs.message STRING Die protokollierte Nachricht
Semmelbrösel WIEDERHOLTE AUFZEICHNUNG Google Analytics-Breadcrumbs mit Zeitstempel, falls aktiviert
Breadcrumbs.Zeitstempel ZEITSTEMPEL Der dem Breadcrumb zugeordnete Zeitstempel
Breadcrumbs.Name STRING Der dem Breadcrumb zugeordnete 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
schuld_frame AUFZEICHNEN Der Rahmen, der als Hauptursache des Absturzes oder Fehlers identifiziert wurde
schuld_frame.line INT64 Die Zeilennummer der Datei des Rahmens
schuld_frame.file STRING Der Name der Rahmendatei
schuld_rahmen.symbol STRING Das hydratisierte Symbol oder das rohe Symbol, wenn es nicht hydratisierbar ist
schuld_frame.offset INT64 Der Byte-Offset in das Binärbild, das den Code enthält, für Java-Ausnahmen nicht festgelegt
schuld_frame.adresse INT64 Die Adresse im Binärbild, die den Code enthält, für Java-Frames nicht gesetzt
schuld_rahmen.library STRING Der Anzeigename der Bibliothek, die den Rahmen enthält
schuld_frame.besitzer STRING ENTWICKLER, VENDOR, LAUFZEIT, PLATTFORM oder SYSTEM
schuld_frame.beschuldigt BOOLEAN Ob die Analyse von Crashlytics ergeben hat, dass dieser Frame die Ursache des Absturzes oder Fehlers ist
Ausnahmen WIEDERHOLTE AUFZEICHNUNG Nur Android: Ausnahmen, die während dieses Ereignisses aufgetreten sind. Verschachtelte Ausnahmen werden in umgekehrter chronologischer Reihenfolge dargestellt (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 der Ausnahme zugeordnete Nachricht
Ausnahmen.verschachtelt BOOLEAN True 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.beschuldigt BOOLEAN True, wenn Crashlytics feststellt, dass die Ausnahme für den Fehler oder Absturz verantwortlich ist
Ausnahmen.Frames WIEDERHOLTE AUFZEICHNUNG Die Frames, die der Ausnahme zugeordnet sind
exceptions.frames.line INT64 Die Zeilennummer der Datei des Rahmens
exceptions.frames.file STRING Der Name der Rahmendatei
Ausnahmen.Frames.Symbol STRING Das hydratisierte Symbol oder das rohe Symbol, wenn es nicht hydratisierbar ist
Ausnahmen.Frames.Offset INT64 Der Byte-Offset in das Binärbild, das den Code enthält, für Java-Ausnahmen nicht festgelegt
Ausnahmen.Frames.Adresse INT64 Die Adresse im Binärbild, die den Code enthält, für Java-Frames nicht gesetzt
exceptions.frames.library STRING Der Anzeigename der Bibliothek, die den Rahmen enthält
Ausnahmen.Frames.Eigentümer STRING ENTWICKLER, VENDOR, LAUFZEIT, PLATTFORM oder SYSTEM
Ausnahmen.frames.beschuldigt BOOLEAN Ob die Analyse von Crashlytics ergeben hat, dass dieser Frame die Ursache des Absturzes oder Fehlers ist
Fehler WIEDERHOLTE AUFZEICHNUNG Nur Apple-Apps: nicht schwerwiegende Fehler
error.queue_name 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.beschuldigt 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 Rahmens
error.frames.file STRING Der Name der Rahmendatei
error.frames.symbol STRING Das hydratisierte Symbol oder das rohe Symbol, wenn es nicht hydratisierbar ist
error.frames.offset INT64 Der Byte-Offset in das Binärbild, das den Code enthält
error.frames.address INT64 Die Adresse im Binärbild, die den Code enthält
error.frames.library STRING Der Anzeigename der Bibliothek, die den Rahmen enthält
error.frames.owner STRING ENTWICKLER, VENDOR, LAUFZEIT, PLATTFORM oder SYSTEM
error.frames.beschuldigt BOOLEAN Ob die Analyse von Crashlytics ergeben hat, dass dieser Frame die Fehlerursache ist
Fäden WIEDERHOLTE AUFZEICHNUNG Zum Zeitpunkt des Ereignisses vorhandene Threads
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 den Absturz der App verursacht hat, nur bei abgestürzten nativen Threads vorhanden
threads.signal_code STRING Der Code des Signals, das den Absturz der App verursacht hat; nur bei abgestürzten nativen Threads vorhanden
threads.crash_address INT64 Die Adresse des Signals, das den Absturz der Anwendung verursacht hat; nur bei abgestürzten nativen Threads vorhanden
threads.code INT64 Nur Apple-Apps: Fehlercode des benutzerdefinierten protokollierten NSError der Anwendung
Threads.Titel STRING Der Titel des Threads
Threads.Untertitel STRING Der Untertitel des Threads
Threads.beschuldigt BOOLEAN Ob die Analyse von Crashlytics ergeben hat, dass dieser Frame die Ursache des Absturzes oder Fehlers ist
threads.frames WIEDERHOLTE AUFZEICHNUNG Die Frames des Threads
threads.frames.line INT64 Die Zeilennummer der Datei des Rahmens
threads.frames.file STRING Der Name der Rahmendatei
threads.frames.symbol STRING Das hydratisierte Symbol oder das rohe Symbol, wenn es nicht hydratisiert werden kann
threads.frames.offset INT64 Der Byte-Offset in das Binärbild, das den Code enthält
threads.frames.adresse INT64 Die Adresse im Binärbild, die den Code enthält
threads.frames.library STRING Der Anzeigename der Bibliothek, die den Rahmen enthält
threads.frames.besitzer STRING ENTWICKLER, VENDOR, LAUFZEIT, PLATTFORM oder SYSTEM
Threads.Frames.beschuldigt 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 dies ein Debug-Build ist
unity_metadata.processor_type STRING Der Typ des Prozessors
unity_metadata.processor_count INT64 Die Anzahl der Prozessoren (Kerne)
unity_metadata.processor_frequency_mhz INT64 Die Frequenz des Prozessors/der Prozessoren 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 Grafik
unity_metadata.graphics_render_target_count INT64 Die Anzahl der grafischen Renderingziele
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 Pixeln, formatiert als Breite x Höhe
unity_metadata.screen_resolution_dpi STRING Die DPI des Bildschirms als Fließkommazahl
unity_metadata.screen_refresh_rate_hz INT64 Die Bildwiederholfrequenz des Bildschirms in Hz

Exportierte Crashlytics-Daten mit Data Studio visualisieren

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

Um mehr über die Verwendung von Data Studio zu erfahren, sehen Sie sich die Data Studio-Schnellstartanleitung Willkommen bei Data Studio an.

Verwenden einer Crashlytics-Berichtsvorlage

Data Studio verfügt über einen Beispielbericht für Crashlytics, der einen umfassenden Satz von Dimensionen und Messwerten 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 Rohabsturzdaten 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 in der Dropdown-Liste 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 My Projects > [your-project-name] > firebase_crashlytics > [your-table-name] auswählen. Ihre Chargentabelle steht immer zur Auswahl; Wenn der Crashlytics BigQuery-Streaming-Export 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.