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
- Gehen Sie zur Seite „Integrationen“ in der Firebase-Konsole.
- Klicken Sie auf 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 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 |
---|---|
|
|
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:
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 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, LAUFZEIT, 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, LAUFZEIT, 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:
- Öffnen Sie die Crashlytics Data Studio Dashboard-Vorlage .
- Klicken Sie oben rechts auf Vorlage verwenden .
- Wählen Sie im Dropdown-Menü „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 „Meine Projekte > [Ihr-Projektname] > Firebase_crashlytics > [Ihr-Tabellenname]“ wählen. Ihre Batch-Tabelle steht Ihnen jederzeit zur Auswahl zur Verfügung; Wenn der Streaming-Export von Crashlytics BigQuery 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.