Firebase Crashlytics-Absturzberichte anpassen


Im Crashlytics-Dashboard können Sie auf ein Problem klicken, um eine detaillierte Ereignisbericht. Sie können diese Berichte anpassen, um besser nachvollziehen zu können, was in Ihrer App passiert und welche Umstände zu den bei Crashlytics gemeldeten Ereignissen geführt haben.

  • Rufen Sie automatisch Navigationspfade ab, wenn Ihre App die Firebase SDK für Google Analytics Diese Logs geben Ihnen Einblick in Nutzeraktionen, die zu einem von Crashlytics erfassten Ereignis in Ihrer App führen.

  • Deaktivieren Sie die automatischen Absturzberichte und Aktivieren Sie Opt-in-Berichte für Ihre Nutzer. Standardmäßig erfasst Crashlytics automatisch Absturzberichte für alle Nutzer Ihrer App.

Benutzerdefinierte Schlüssel hinzufügen

Mit benutzerdefinierten Schlüsseln können Sie den spezifischen Status Ihrer App abrufen, der zu einem Absturz führte. 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.

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

  • Wenn Sie ein bestimmtes Problem in der Konsole überprüfen, können Sie die zugehöriger benutzerdefinierter Schlüssel für jedes Ereignis (Unter-Tab Schlüssel) und filtern Sie sogar Ereignisse nach benutzerdefinierten Schlüsseln ändern (Menü Filter oben auf der Seite).

Verwenden Sie die Instanzmethode setCustomKey, um Schlüssel/Wert-Paare festzulegen. Hinweis: setCustomKey ist für den Parameter value überladen, sodass beliebige primitive oder String-Argumente akzeptiert werden. 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 auch den Wert eines vorhandenen Schlüssels ändern, indem Sie den Schlüssel aufrufen und die Einstellung auf einen anderen Wert. 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");

Sie können mehrere Schlüssel/Wert-Paare im Bulk-Verfahren hinzufügen, indem Sie eine Instanz von CustomKeysAndValues an die Instanzmethode setCustomKeys:

Kotlin+KTX

Bei 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 Protokollmeldungen hinzufügen

Wenn Sie mehr Kontext zu den Ereignissen erhalten möchten, 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 auf dem Tab Protokolle an.

Verwende log, um Probleme zu lokalisieren. Beispiel:

Kotlin+KTX

Firebase.crashlytics.log("message")

Java

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

Nutzerkennungen festlegen

Um ein Problem zu diagnostizieren, ist es oft hilfreich zu wissen, welche Nutzer eines bestimmten Absturzes. Crashlytics bietet eine Möglichkeit, Nutzer in Ihren Absturzberichten anonym zu identifizieren.

Wenn Sie Ihren Berichten User-IDs hinzufügen möchten, weisen Sie jedem Nutzer eine eindeutige Kennung in Form einer ID-Nummer, eines Tokens oder eines Hashwerts zu:

Kotlin+KTX

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 Einträge löschen möchten, die mit einer Nutzer-ID verknüpft sind, wenden Sie sich an den Firebase-Support.

(Nur Android NDK) NDK-Absturzberichten Metadaten hinzufügen

Sie können den crashlytics.h-Header optional in Ihren C++-Code einfügen, um NDK-Absturzberichten Metadaten hinzuzufügen, z. B. benutzerdefinierte Schlüssel, benutzerdefinierte Protokolle oder Nutzer-IDs. Alle diese Optionen werden oben auf dieser Seite beschrieben.

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

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

GWP-ASan-Berichte zur Behebung von Speicherschäden hinzufügen

Crashlytics kann Ihnen beim Beheben von Abstürzen helfen, die durch native Arbeitsspeicherfehler verursacht wurden, indem GWP-ASan-Berichte erfasst werden. Diese speicherbezogenen Fehler können mit Speicherbeschädigungen in Ihrer App zusammenhängen, die die Hauptursache für Sicherheitslücken in Apps sind.

  • Sie können diese Daten im neuen „Speicher-Stacktraces“ ansehen wenn Sie auf die Schaltfläche in die Details eines Problems Crashlytics-Dashboard.

  • Ihr könnt auch den neuen GWP-ASan-Bericht und filtern Sie sie, um schnell alle Probleme mit diesen Daten.

Sie können GWP-ASan-Speicherberichte abrufen, wenn Sie GWP-ASan explizit aktivieren in deiner App und verwende das Crashlytics SDK for NDK v18.3.6+ (Firebase BoM ab Version 31.3.0). Sie können Ihre GWP-ASan-Einrichtung mit dem Beispiel für nativen Code in der Android-Dokumentation

Nicht schwerwiegende Ausnahmen melden

Mit Crashlytics kannst du nicht nur automatisch App-Abstürze melden, nicht schwerwiegende Ausnahmen aufzeichnen und sie Ihnen senden, wenn Ihre App das nächste Mal Markteinführungen.

Verwenden Sie die Methode recordException, um nicht schwerwiegende Ausnahmen im catch Blöcke. 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 Aufschlüsselungen nach Android-Version und Hardwaregerät.

Crashlytics verarbeitet Ausnahmen in einem dedizierten Hintergrundthread, um die Leistung Ihrer App zu minimieren. Um das Netzwerk Ihrer Nutzer zu verkleinern Traffic, fasst Crashlytics protokollierte Ausnahmen zusammen und sendet ihnen den beim nächsten Start der App.

Navigationspfad-Logs abrufen

In Navigationspfadlogs erhalten Sie einen besseren Überblick über die Interaktionen, die zu einem Absturz, nicht schwerwiegenden oder ANR-Ereignis geführt haben. Diese Logs können wenn Sie versuchen, ein Problem zu reproduzieren und zu beheben.

Navigationspfade basieren auf Google Analytics. muss Google Analytics aktivieren für Ihr Firebase-Projekt und Firebase SDK für Google Analytics hinzufügen zu Ihrer App hinzufügen. Wenn diese Anforderungen erfüllt sind, werden Navigationspfadlogs automatisch die in den Daten eines Ereignisses auf dem Tab Protokolle enthalten sind, wenn Sie die Details aufrufen eines Problems.

Das Analytics-SDK protokolliert automatisch das screen_view-Ereignis Dadurch können in den Navigationspfadlogs eine Liste der Bildschirme angezeigt werden, die vor dem Aufruf nicht schwerwiegenden Absturz-, nicht schwerwiegenden oder ANR-Ereignisses. Ein screen_view-Navigationspfad-Log enthält einen firebase_screen_class-Parameter.

In Navigationspfadlogs benutzerdefinierten Ereignissen, die Sie manuell im Sitzung, einschließlich der Ereignisparameterdaten. Anhand dieser Daten kann eine Reihe von Nutzeraktionen, die zu einem Absturz, nicht schwerwiegenden oder ANR-Ereignis geführt haben.

Sie können die Erhebung und Verwendung von Google Analytics-Daten steuern. Dazu gehören auch die Daten, die in Breadcrumb-Logs eingefügt werden.

Opt-in-Berichte aktivieren

Standardmäßig erfasst Crashlytics automatisch Absturzberichte für alle Nutzer Ihrer App. Um Nutzern mehr Kontrolle über die gesendeten Daten zu geben, können Sie indem Sie die automatische Berichterstellung deaktivieren und Daten nur an Crashlytics, wenn Sie Folgendes im Code auswählen:

  1. Fügen Sie im Block application der Datei AndroidManifest.xml meta-data-Tag verwenden, um die automatische Erhebung zu deaktivieren:

    <meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="false" />
    
  2. Aktivieren Sie die Erhebung für ausgewählte Nutzer, indem Sie die Crashlytics-Daten aufrufen Sammlungsüberschreibung während der Laufzeit. Der Wert der Überschreibung bleibt bei jedem Start bestehen deiner App, damit Crashlytics automatisch Berichte erfassen kann. Deaktivieren der automatischen Absturzberichte geben Sie false als Überschreibungswert an. Wenn der Wert auf false gesetzt ist, 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);

Crash Insights-Daten verwalten

Mit Crash Insights können Sie Ihren anonymisierten Stack vergleichen und Probleme beheben zu Traces von anderen Firebase-Apps und teilen Ihnen mit, ob das Problem Teil eines größeren Trends sind. Bei vielen Problemen finden Sie in Crash Insights sogar Ressourcen, die Ihnen bei der Fehlerbehebung helfen.

In Crash Insights werden aggregierte Absturzdaten verwendet, um häufige Stabilitätstrends zu identifizieren. Wenn Sie die Daten Ihrer App nicht freigeben möchten, können Sie Crash Insights oben in der Liste der Crashlytics-Probleme in der Firebase-Konsole im Menü Crash Insights deaktivieren.