| Plattform auswählen: | iOS+ Android Flutter Unity |
Sie können auf ein Problem klicken, um einen detaillierten Ereignisbericht im Dashboard DevOps & Engagement > Crashlytics der Firebase-Konsole aufzurufen. Sie können diese Berichte anpassen, um besser zu verstehen, was in Ihrer App passiert und welche Umstände zu den an Crashlytics gemeldeten Ereignissen geführt haben.
Instrumentieren Sie Ihre App, um benutzerdefinierte Schlüssel, benutzerdefinierte Logeinträge und Nutzer-IDs zu protokollieren.
Ausnahmen für Crashlytics melden.
Wenn Ihre App das Firebase SDK für Google Analytics verwendet, werden automatisch Navigationspfad-Logs erstellt. Diese Logs geben Ihnen Einblick in die Nutzeraktionen, die zu einem von Crashlytics erfassten Ereignis in Ihrer App geführt haben.
Deaktivieren Sie die automatische Absturzberichterstellung und aktivieren Sie die Berichterstellung per Opt-in für Ihre Nutzer. Beachten Sie, dass Crashlytics standardmäßig automatisch Absturzberichte für alle Nutzer Ihrer App erfasst.
Benutzerdefinierte Schlüssel hinzufügen
Mit benutzerdefinierten Schlüsseln können Sie den spezifischen Status Ihrer App, der zu einem Absturz führte, abrufen. Sie können Ihren Absturzberichten beliebige Schlüssel/Wert-Paare zuordnen und dann die benutzerdefinierten Schlüssel verwenden, um Absturzberichte im Dashboard DevOps & Engagement > Crashlytics der Firebase-Konsole zu suchen und zu filtern.
Sie können nach Problemen suchen, die mit einem benutzerdefinierten Schlüssel übereinstimmen.
Wenn Sie sich ein bestimmtes Problem in der Console ansehen, können Sie die zugehörigen benutzerdefinierten Schlüssel für jedes Ereignis aufrufen (Untertab Schlüssel) und die Ereignisse sogar nach benutzerdefinierten Schlüsseln filtern (Menü Filter oben auf der Seite).
Verwenden Sie die Instanzmethode setCustomKey, um Schlüssel/Wert-Paare festzulegen. Beachten Sie, dass setCustomKey für den Parameter value überladen ist, um ein beliebiges primitives oder String-Argument zu akzeptieren. Hier einige Beispiele:
Kotlin
val crashlytics = Firebase.crashlytics crashlytics.setCustomKeys { key("my_string_key", "foo") // String value key("my_bool_key", true) // boolean value key("my_double_key", 1.0) // double value key("my_float_key", 1.0f) // float value key("my_int_key", 1) // int value }
Java
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance(); crashlytics.setCustomKey("my_string_key", "foo" /* string value */); crashlytics.setCustomKey("my_bool_key", true /* boolean value */); crashlytics.setCustomKey("my_double_key", 1.0 /* double value */); crashlytics.setCustomKey("my_float_key", 1.0f /* float value */); crashlytics.setCustomKey("my_int_key", 1 /* int value */);
Sie können den Wert eines vorhandenen Schlüssels auch ändern, indem Sie den Schlüssel aufrufen und einen anderen Wert festlegen. Beispiel:
Kotlin
val crashlytics = Firebase.crashlytics crashlytics.setCustomKeys { key("current_level", 3) key("last_UI_action", "logged_in") }
Java
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance(); crashlytics.setCustomKey("current_level", 3); crashlytics.setCustomKey("last_UI_action", "logged_in");
Fügen Sie Schlüssel/Wert-Paare im Bulk hinzu, indem Sie eine Instanz von CustomKeysAndValues an die Instanzmethode setCustomKeys übergeben:
Kotlin
In Kotlin ist die vorhandene Funktion einfacher als die Verwendung des CustomKeysAndValues-Builders.
crashlytics.setCustomKeys { key("str_key", "hello") key("bool_key", true) key("int_key", 1) key("long_key", 1L) key("float_key", 1.0f) key("double_key", 1.0) }
Java
CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder() .putString("string key", "string value") .putString("string key 2", "string value 2") .putBoolean("boolean key", True) .putBoolean("boolean key 2", False) .putFloat("float key", 1.01) .putFloat("float key 2", 2.02) .build(); FirebaseCrashlytics.getInstance().setCustomKeys(keysAndValues);
Benutzerdefinierte Logeinträge hinzufügen
Wenn Sie mehr Kontext zu den Ereignissen vor einem Absturz benötigen, können Sie Ihrer App benutzerdefinierte Crashlytics-Logs hinzufügen. Crashlytics verknüpft die Logs mit Ihren Absturzdaten und zeigt sie auf dem Tab Logs an, wenn Sie die Details eines Problems aufrufen. Alle Probleme finden Sie in der Firebase Console im Dashboard DevOps & Engagement > Crashlytics.
Verwenden Sie log, um Probleme zu lokalisieren. Beispiel:
Kotlin
Firebase.crashlytics.log("message")
Java
FirebaseCrashlytics.getInstance().log("message");
Nutzer-IDs festlegen
Um ein Problem zu diagnostizieren, ist es oft hilfreich zu wissen, bei welchen Nutzern ein bestimmter Absturz aufgetreten ist. Crashlytics bietet eine Möglichkeit, Nutzer in Ihren Absturzberichten anonym zu identifizieren.
Wenn Sie Ihren Berichten Nutzer-IDs hinzufügen möchten, weisen Sie jedem Nutzer eine eindeutige Kennung in Form einer ID-Nummer, eines Tokens oder eines Hash-Werts zu:
Kotlin
Firebase.crashlytics.setUserId("user123456789")
Java
FirebaseCrashlytics.getInstance().setUserId("user123456789");
Wenn Sie eine Nutzer-ID nach dem Festlegen löschen möchten, setzen Sie den Wert auf einen leeren String zurück. Durch das Löschen einer Nutzer-ID werden vorhandene Crashlytics-Einträge nicht entfernt. Wenn Sie Datensätze löschen müssen, die mit einer Nutzer-ID verknüpft sind, wenden Sie sich an den Firebase-Support.
(Nur Android NDK) Metadaten zu NDK-Absturzberichten hinzufügen
Sie können optional den Header crashlytics.h in Ihren C++-Code einfügen, um NDK-Absturzberichten Metadaten hinzuzufügen, z. B. benutzerdefinierte Schlüssel, benutzerdefinierte Logs und Nutzer-IDs. Alle diese Optionen werden oben auf dieser Seite beschrieben.
crashlytics.h ist als reine Header-C++-Bibliothek im GitHub-Repository des Firebase Android SDK verfügbar.
In den Kommentaren in der Header-Datei finden Sie eine Anleitung zur Verwendung der NDK-C++-APIs.
GWP-ASan-Berichte zur Fehlerbehebung bei Speicherschäden einbeziehen
Crashlytics kann Ihnen helfen, Abstürze zu beheben, die durch native Speicherfehler verursacht werden, indem GWP-ASan-Berichte erfasst werden. Diese speicherbezogenen Fehler können mit Speicherschäden in Ihrer App zusammenhängen, die die Hauptursache für Sicherheitslücken in Apps sind.
Im Dashboard DevOps & Engagement > Crashlytics der Firebase Console können Sie mit diesen Daten Folgendes tun:
Diese Daten können Sie auf dem neuen Tab „Arbeitsspeicher-Stacktraces“ aufrufen, wenn Sie auf die Details eines Problems klicken.
Mit dem neuen Signal und Filter „GWP-ASan-Bericht“ könnt ihr euch schnell alle Probleme mit diesen Daten ansehen.
Sie können GWP-ASan-Speicherberichte erhalten, wenn Sie GWP-ASan explizit in Ihrer App aktivieren und das Crashlytics SDK für NDK v18.3.6 oder höher (Firebase BoM v31.3.0 oder höher) verwenden. Sie können Ihre GWP-ASan-Einrichtung mit dem nativen Beispielcode in der Android-Dokumentation testen.
Nicht schwerwiegende Ausnahmen melden
Crashlytics meldet nicht nur automatisch Abstürze Ihrer App, sondern ermöglicht Ihnen auch, nicht schwerwiegende Ausnahmen aufzuzeichnen und sie beim nächsten Start Ihrer App an Sie zu senden.
Verwenden Sie die Methode recordException, um nicht schwerwiegende Ausnahmen in den catch-Blöcken Ihrer App aufzuzeichnen. Beispiel:
Kotlin
try { methodThatThrows() } catch (e: Exception) { Firebase.crashlytics.recordException(e) // handle your exception here }
Java
try { methodThatThrows(); } catch (Exception e) { FirebaseCrashlytics.getInstance().recordException(e); // handle your exception here }
Außerdem können Sie benutzerdefinierte Schlüssel an die jeweilige nicht schwerwiegende Ausnahme anhängen. Beispiel:
Kotlin
try { methodThatThrows() } catch (e: Exception) { Firebase.crashlytics.recordException(e) { key("string key", "string value") key("boolean key", true) key("float key", Float.MAX_VALUE) } // handle your exception here }
Java
try { methodThatThrows(); } catch (Exception e) { CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder() .putString("string key", "string value") .putBoolean("boolean key", true) .putFloat("float key", Float.MAX_VALUE) .build(); FirebaseCrashlytics.getInstance().recordException(e, keysAndValues); // handle your exception here }
Alle aufgezeichneten Ausnahmen werden als nicht schwerwiegende Probleme im Dashboard DevOps & Engagement > Crashlytics der Firebase Console angezeigt. Die Problemzusammenfassung enthält alle Statusinformationen, die Sie normalerweise bei Abstürzen erhalten, sowie Aufschlüsselungen nach Android-Version und Hardwaregerät.
Crashlytics verarbeitet Ausnahmen in einem dedizierten Hintergrundthread, um die Auswirkungen auf die Leistung Ihrer App zu minimieren. Um den Netzwerkverkehr Ihrer Nutzer zu reduzieren, fasst Crashlytics protokollierte Ausnahmen zusammen und sendet sie beim nächsten Start der App.
Navigationspfad-Logs abrufen
Mit Navigationspfad-Logs können Sie die Interaktionen eines Nutzers mit Ihrer App vor einem Absturz, einem nicht schwerwiegenden Ereignis oder einem ANR-Ereignis besser nachvollziehen. Diese Logs können hilfreich sein, wenn Sie versuchen, ein Problem zu reproduzieren und zu beheben.
Navigationspfad-Logs werden von Google Analytics unterstützt. Wenn Sie Navigationspfad-Logs erhalten möchten, müssen Sie Google Analytics für Ihr Firebase-Projekt aktivieren und das Firebase SDK für Google Analytics zu Ihrer App hinzufügen. Sobald diese Anforderungen erfüllt sind, werden Navigationspfad-Logs automatisch in die Daten eines Ereignisses auf dem Tab Logs aufgenommen, wenn Sie die Details eines Problems aufrufen. Alle Probleme finden Sie im Dashboard DevOps & Engagement > Crashlytics der Firebase-Konsole.
Das Analytics SDK protokolliert automatisch das Ereignis screen_view, sodass in den Navigationspfad-Logs eine Liste der Bildschirme angezeigt werden kann, die vor dem Absturz, dem nicht schwerwiegenden Ereignis oder dem ANR-Ereignis aufgerufen wurden. Ein screen_view-Navigationspfad-Log enthält einen firebase_screen_class-Parameter.
Navigationspfad-Logs werden auch mit allen benutzerdefinierten Ereignissen gefüllt, die Sie manuell in der Sitzung des Nutzers protokollieren, einschließlich der Parameterdaten des Ereignisses. Anhand dieser Daten lässt sich eine Reihe von Nutzeraktionen nachvollziehen, die zu einem Absturz, einem nicht schwerwiegenden Ereignis oder einem ANR-Ereignis geführt haben.
Sie können die Erhebung und Verwendung von Google Analytics-Daten steuern, einschließlich der Daten, die in Navigationspfad-Logs eingetragen werden.
Opt-in-Berichterstellung aktivieren
Standardmäßig erfasst Crashlytics automatisch Absturzberichte für alle Nutzer Ihrer App. Wenn Sie Nutzern mehr Kontrolle über die von ihnen gesendeten Daten geben möchten, können Sie die Berichterstellung per Opt-in aktivieren. Deaktivieren Sie dazu die automatische Berichterstellung und senden Sie Daten nur dann an Crashlytics, wenn Sie dies in Ihrem Code festlegen.
Fügen Sie im
application-Block der DateiAndroidManifest.xmleinmeta-data-Tag hinzu, um die automatische Erhebung zu deaktivieren:<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />Sie können die Datenerhebung für ausgewählte Nutzer aktivieren, indem Sie die Datenerhebung Crashlytics zur Laufzeit überschreiben. Der Überschreibungswert bleibt bei allen nachfolgenden Starts Ihrer App erhalten, sodass Crashlytics automatisch Berichte für diesen Nutzer erfassen kann.
Kotlin
Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)
Java
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
Wenn der Nutzer die Datenerhebung später ablehnt, können Sie
falseals Überschreibungswert übergeben. Dieser wird beim nächsten Start der App durch den Nutzer angewendet und bleibt bei allen nachfolgenden Starts für diesen Nutzer bestehen.
Crash Insights-Daten verwalten
Crash Insights hilft Ihnen, Probleme zu beheben, indem Ihre anonymisierten Stacktraces mit Traces aus anderen Firebase-Apps verglichen werden. So können Sie feststellen, ob Ihr Problem Teil eines größeren Trends ist. Bei vielen Problemen bietet Crash Insights sogar Ressourcen, die Ihnen bei der Fehlerbehebung helfen.
In Crash Insights werden aggregierte Absturzdaten verwendet, um allgemeine Stabilitätstrends zu ermitteln. Wenn Sie die Daten Ihrer App nicht teilen möchten, können Sie Crash Insights im Menü Crash Insights oben in der Problemliste im Dashboard DevOps & Engagement > Crashlytics der Firebase Console deaktivieren.
Nächste Schritte
- Daten nach BigQuery oder Cloud Logging exportieren, um erweiterte Analysen und Funktionen zu nutzen, z. B. Daten abfragen, benutzerdefinierte Dashboards erstellen und benutzerdefinierte Benachrichtigungen einrichten.