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
- Rufen Sie die Seite „Integrationen“ in der Firebase-Konsole auf.
- Klicken Sie in der BigQuery- Karte auf Link .
- 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 |
---|---|
|
|
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:
Aktivieren Sie BigQuery-Exporte für Google Analytics. Siehe Projektdaten nach BigQuery exportieren .
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");
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:
- Öffnen Sie die Crashlytics Data Studio Dashboard-Vorlage .
- Klicken Sie oben rechts auf Vorlage verwenden .
- Wählen Sie in der Dropdown-Liste Neue Datenquelle die Option Neue Datenquelle erstellen aus.
- Klicken Sie auf der BigQuery- Karte auf Auswählen .
- 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.
- Stellen Sie unter Konfiguration die Crashlytics-Vorlagenebene auf Standard ein.
- Klicken Sie auf Verbinden, um die neue Datenquelle zu erstellen.
- Klicken Sie auf Zum Bericht hinzufügen , um zur Crashlytics-Vorlage zurückzukehren.
- Klicken Sie abschließend auf Bericht erstellen , um Ihre Kopie der Crashlytics Data Studio Dashboard-Vorlage zu erstellen.