Passen Sie Ihre Firebase Crashlytics-Absturzberichte an

Im Crashlytics-Dashboard können Sie auf ein Problem klicken und einen detaillierten Ereignisbericht erhalten. Sie können diese Berichte anpassen, um besser zu verstehen, was in Ihrer App passiert und welche Umstände im Zusammenhang mit Ereignissen auftreten, die an Crashlytics gemeldet werden.

  • Erhalten Sie automatisch Breadcrumb-Protokolle , wenn Ihre App das Firebase SDK für Google Analytics verwendet. Diese Protokolle geben Ihnen Einblick in Benutzeraktionen, die zu einem von Crashlytics erfassten Ereignis in Ihrer App führen.

  • Deaktivieren Sie die automatische Absturzberichterstattung und aktivieren Sie die Opt-in-Berichterstattung für Ihre Benutzer. Beachten Sie, dass Crashlytics standardmäßig automatisch Absturzberichte für alle Benutzer Ihrer App sammelt.

Fügen Sie benutzerdefinierte Schlüssel hinzu

Mit benutzerdefinierten Schlüsseln können Sie den spezifischen Status Ihrer App ermitteln, der zu einem Absturz geführt hat. Sie können Ihren Absturzberichten beliebige Schlüssel/Wert-Paare zuordnen und dann die benutzerdefinierten Schlüssel zum Suchen und Filtern von Absturzberichten in der Firebase-Konsole verwenden.

  • Im Crashlytics-Dashboard können Sie nach Problemen suchen, die einem benutzerdefinierten Schlüssel entsprechen.

  • Wenn Sie ein bestimmtes Problem in der Konsole überprüfen, können Sie die zugehörigen benutzerdefinierten Schlüssel für jedes Ereignis anzeigen (Unterregisterkarte „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 überlastet ist, damit der value jedes Primitiv- oder String Argument akzeptiert. Hier sind einige Beispiele:

Kotlin+KTX

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 auf einen anderen Wert festlegen. Zum Beispiel:

Kotlin+KTX

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 in großen Mengen hinzu, indem Sie eine Instanz von CustomKeysAndValues ​​an die setCustomKeys Instanzmethode übergeben:

Kotlin+KTX

Für Kotlin ist die vorhandene Funktionalität 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);

Fügen Sie benutzerdefinierte Protokollnachrichten hinzu

Um mehr Kontext für die Ereignisse zu erhalten, die zu einem Absturz geführt haben, können Sie Ihrer App benutzerdefinierte Crashlytics-Protokolle hinzufügen. Crashlytics verknüpft die Protokolle mit Ihren Absturzdaten und zeigt sie auf der Crashlytics-Seite der Firebase-Konsole unter der Registerkarte „Protokolle“ an.

Verwenden Sie log , um Probleme zu lokalisieren. Zum Beispiel:

Kotlin+KTX

Firebase.crashlytics.log("message")

Java

FirebaseCrashlytics.getInstance().log("message");

Legen Sie Benutzerkennungen fest

Um ein Problem zu diagnostizieren, ist es oft hilfreich zu wissen, bei welchem ​​Ihrer Benutzer ein bestimmter Absturz aufgetreten ist. Crashlytics bietet eine Möglichkeit, Benutzer in Ihren Absturzberichten anonym zu identifizieren.

Um Ihren Berichten Benutzer-IDs hinzuzufügen, weisen Sie jedem Benutzer eine eindeutige Kennung in Form einer ID-Nummer, eines Tokens oder eines Hash-Werts zu:

Kotlin+KTX

Firebase.crashlytics.setUserId("user123456789")

Java

FirebaseCrashlytics.getInstance().setUserId("user123456789");

Wenn Sie jemals eine Benutzerkennung löschen müssen, nachdem Sie sie festgelegt haben, setzen Sie den Wert auf eine leere Zeichenfolge zurück. Durch das Löschen einer Benutzerkennung werden vorhandene Crashlytics-Datensätze nicht entfernt. Wenn Sie mit einer Benutzer-ID verknüpfte Datensätze löschen müssen, wenden Sie sich an den Firebase-Support .

(Nur Android NDK) Fügen Sie Metadaten zu NDK-Absturzberichten hinzu

Sie können optional den Header crashlytics.h in Ihren C++-Code einbinden, um Metadaten zu NDK-Absturzberichten hinzuzufügen, z. B. benutzerdefinierte Schlüssel , benutzerdefinierte Protokolle und Benutzerkennungen . Alle diese Optionen sind auf dieser Seite oben beschrieben.

crashlytics.h ist als reine Header-C++-Bibliothek im Firebase Android SDK GitHub Repository verfügbar.

Lesen Sie die Kommentare in der Header-Datei, um Anweisungen zur Verwendung der NDK C++-APIs zu erhalten.

Fügen Sie GWP-ASan-Berichte hinzu, um Speicherbeschädigungsprobleme zu beheben

Crashlytics kann Ihnen dabei helfen, durch native Speicherfehler verursachte Abstürze zu beheben, indem es GWP-ASan-Berichte sammelt. Diese speicherbezogenen Fehler können mit einer Speicherbeschädigung in Ihrer App zusammenhängen, die die Hauptursache für Sicherheitslücken in der App darstellt.

  • Sie können diese Daten in einer neuen Registerkarte „Memory Stack Traces“ anzeigen, wenn Sie im Crashlytics-Dashboard auf die Details eines Problems klicken.

  • Sie können auch das neue Signal und den Filter „GWP-ASan-Bericht“ verwenden, um alle Probleme mit diesen Daten schnell anzuzeigen.

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+ (Firebase BoM v31.3.0+) verwenden. Sie können Ihr GWP-ASan-Setup anhand des nativen Beispielcodes in der Android-Dokumentation testen.

Melden Sie nicht schwerwiegende Ausnahmen

Zusätzlich zur automatischen Meldung der Abstürze Ihrer App können Sie mit Crashlytics nicht schwerwiegende Ausnahmen aufzeichnen und diese beim nächsten Start Ihrer App an Sie senden.

Verwenden Sie die Methode recordException , um nicht schwerwiegende Ausnahmen in catch Blöcken Ihrer App aufzuzeichnen. Zum Beispiel:

Kotlin+KTX

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
}

Alle aufgezeichneten Ausnahmen werden in der Firebase-Konsole als nicht schwerwiegende Probleme angezeigt. Die Problemübersicht enthält alle Statusinformationen, die Sie normalerweise bei Abstürzen erhalten, sowie eine Aufschlüsselung 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 Benutzer zu reduzieren, fasst Crashlytics protokollierte Ausnahmen stapelweise zusammen und sendet sie beim nächsten Start der App.

Holen Sie sich Breadcrumb-Protokolle

Mithilfe von Breadcrumb-Protokollen erhalten Sie ein besseres Verständnis der Interaktionen, die ein Benutzer mit Ihrer App hatte und die zu einem Absturz, einem nicht schwerwiegenden Ereignis oder einem ANR-Ereignis führten. Diese Protokolle können hilfreich sein, wenn Sie versuchen, ein Problem zu reproduzieren und zu debuggen.

Breadcrumb-Protokolle werden von Google Analytics unterstützt. Um Breadcrumb-Protokolle zu erhalten, 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 Breadcrumb-Protokolle automatisch in die Daten eines Ereignisses auf der Registerkarte „Protokolle“ eingefügt, wenn Sie die Details eines Problems anzeigen.

Das Analytics SDK protokolliert automatisch das Ereignis screen_view , wodurch in den Breadcrumb-Protokollen eine Liste der Bildschirme angezeigt werden kann, die vor dem Absturz, dem nicht schwerwiegenden Ereignis oder dem ANR-Ereignis angezeigt wurden. Ein screen_view Breadcrumb-Protokoll enthält einen firebase_screen_class -Parameter.

Breadcrumb-Protokolle werden auch mit allen benutzerdefinierten Ereignissen gefüllt, die Sie manuell innerhalb der Benutzersitzung protokollieren, einschließlich der Parameterdaten des Ereignisses. Diese Daten können dabei helfen, eine Reihe von Benutzeraktionen aufzuzeigen, die zu einem Absturz, einem nicht schwerwiegenden oder einem ANR-Ereignis führen.

Beachten Sie, dass Sie die Erfassung und Verwendung von Google Analytics-Daten steuern können, einschließlich der Daten, die in Breadcrumb-Protokollen eingetragen werden.

Aktivieren Sie die Opt-in-Berichterstellung

Standardmäßig sammelt Crashlytics automatisch Absturzberichte für alle Benutzer Ihrer App. Um Benutzern mehr Kontrolle über die von ihnen gesendeten Daten zu geben, können Sie die Opt-in-Berichterstellung aktivieren, indem Sie die automatische Berichterstellung deaktivieren und Daten nur dann an Crashlytics senden, wenn Sie dies in Ihrem Code festlegen:

  1. Fügen Sie im application Ihrer AndroidManifest.xml Datei ein meta-data Tag hinzu, um die automatische Erfassung zu deaktivieren:

    <meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="false" />
    
  2. Aktivieren Sie die Erfassung für ausgewählte Benutzer, indem Sie zur Laufzeit die Crashlytics-Datenerfassungsüberschreibung aufrufen. Der Überschreibungswert bleibt über alle Starts Ihrer App hinweg bestehen, sodass Crashlytics automatisch Berichte sammeln kann. Um die automatische Absturzberichterstattung zu deaktivieren, übergeben Sie false als Überschreibungswert. Bei Festlegung auf false wird der neue Wert erst bei der nächsten Ausführung der App angewendet.

    Kotlin+KTX

    Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)

    Java

    FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);

Verwalten Sie Crash Insights-Daten

Crash Insights hilft Ihnen bei der Lösung von Problemen, indem es Ihre anonymisierten Stack-Traces mit Traces von anderen Firebase-Apps vergleicht und Sie darüber informiert, ob Ihr Problem Teil eines größeren Trends ist. Für viele Probleme stellt Crash Insights sogar Ressourcen zur Verfügung, die Sie beim Debuggen des Absturzes unterstützen.

Crash Insights verwendet aggregierte Absturzdaten, um allgemeine Stabilitätstrends zu identifizieren. Wenn Sie die Daten Ihrer App nicht weitergeben möchten, können Sie Crash Insights über das Crash Insights- Menü oben in Ihrer Crashlytics-Problemliste in der Firebase-Konsole deaktivieren.