Firebase Crashlytics-Absturzberichte anpassen


Im Dashboard Crashlytics können Sie auf ein Problem klicken, um einen detaillierten Ereignisbericht aufzurufen. 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 das Firebase SDK für Google Analytics verwendet. Diese Logs geben Aufschluss über Nutzeraktionen, die zu einem von Crashlytics erfassten Ereignis in Ihrer App geführt haben.

  • Deaktivieren Sie die automatische Absturzberichterstattung und aktivieren Sie die Meldefunktion für Ihre Nutzer. Standardmäßig erhebt 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 verwenden.

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

  • Wenn Sie sich ein bestimmtes Problem in der Console ansehen, können Sie sich die zugehörigen benutzerdefinierten Schlüssel für jedes Ereignis ansehen (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. setCustomKey ist für den Parameter value überlastet, um ein primitives oder String-Argument zu akzeptieren. 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 einen anderen Wert festlegen. 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 gleichzeitig hinzufügen, indem Sie eine Instanz von CustomKeysAndValues an die setCustomKeys-Instanzmethode übergeben:

Kotlin+KTX

Für 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 für die Ereignisse erhalten möchten, die zu einem Absturz geführt haben, können Sie Ihrer Anwendung benutzerdefinierte Crashlytics-Logs hinzufügen. Crashlytics verknüpft die Logs mit Ihren Absturzdaten und zeigt sie auf der Seite Crashlytics der Firebase-Konsole auf dem Tab Logs an.

Verwenden Sie log, um Probleme zu ermitteln. Beispiel:

Kotlin+KTX

Firebase.crashlytics.log("message")

Java

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

Nutzerkennungen festlegen

Zur Diagnose eines Problems 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 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 einschließen, um Probleme mit Speicherbeschädigungen zu beheben

Crashlytics kann Ihnen beim Beheben von Abstürzen helfen, die durch native Speicherfehler verursacht wurden. Dazu werden GWP-ASan-Berichte erfasst. 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 auf dem neuen Tab „Speicher-Stacktraces“ ansehen, wenn Sie im Crashlytics-Dashboard auf die Details eines Problems klicken.

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

Sie können GWP-ASan-Speicherberichte erhalten, wenn Sie GWP-ASan in Ihrer App explizit 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 Beispiel für nativen Code in der Android-Dokumentation testen.

Nicht schwerwiegende Ausnahmen melden

Mit Crashlytics lassen sich nicht schwerwiegende Ausnahmen nicht nur automatisch melden, sondern auch nicht schwerwiegende Ausnahmen erfassen und beim nächsten Start der App an dich senden.

Verwenden Sie die Methode recordException, um nicht fatale Ausnahmen in den catch-Blöcken Ihrer App zu erfassen. 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 kritische 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 speziellen Hintergrund-Thread, um die Leistungseinbußen für Ihre App zu minimieren. Um den Netzwerkverkehr Ihrer Nutzer zu reduzieren, fasst Crashlytics aufgezeichnete Ausnahmen zusammen und sendet sie beim nächsten Starten der App.

Navigationspfadlogs abrufen

Mit Navigationspfadlogs erhalten Sie einen besseren Einblick in die Interaktionen eines Nutzers mit Ihrer App, die zu einem Absturz-, nicht schwerwiegenden oder ANR-Ereignis geführt haben. Diese Protokolle können hilfreich sein, wenn Sie versuchen, ein Problem zu reproduzieren und zu beheben.

Breadcrumb-Protokolle werden von Google Analytics unterstützt. Wenn Sie also Breadcrumb-Protokolle erhalten möchten, müssen Sie Google Analytics für Ihr Firebase-Projekt aktivieren und Ihrer App das Firebase SDK für Google Analytics hinzufügen. Sobald diese Anforderungen erfüllt sind, werden Breadcrumb-Protokolle automatisch in den Daten eines Ereignisses auf dem Tab Protokolle angezeigt, wenn Sie sich die Details eines Problems ansehen.

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

In Breadcrumb-Protokollen werden auch alle benutzerdefinierten Ereignisse erfasst, die Sie manuell in der Sitzung des Nutzers erfassen, einschließlich der Parameterdaten des Ereignisses. Anhand dieser Daten können Sie 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. 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 von ihnen gesendeten Daten zu geben, können Sie die Funktion „Opt-in-Berichte“ aktivieren. Dazu deaktivieren Sie die automatische Berichterstellung und senden Daten nur dann an Crashlytics, wenn Sie dies in Ihrem Code angeben:

  1. Fügen Sie im Block application der Datei AndroidManifest.xml ein meta-data-Tag hinzu, 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 Datenerhebungsüberschreibung Crashlytics zur Laufzeit aufrufen. Der Überschreibungswert bleibt bei jedem Start Ihrer App erhalten, damit Crashlytics automatisch Berichte erfassen kann. Wenn Sie automatische Absturzberichte deaktivieren möchten, übergeben Sie false als Überschreibungswert. 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 Absturzinformationen können Sie Probleme beheben, indem Sie Ihre anonymisierten Stacktraces mit Traces aus anderen Firebase-Apps vergleichen. Außerdem erfahren Sie, ob Ihr Problem Teil eines größeren Trends ist. Bei vielen Problemen finden Sie in Crash Insights sogar Ressourcen, mit denen Sie den Absturz beheben können.

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 in der Firebase-Konsole im Menü Crash Insights oben in der Crashlytics-Problemliste deaktivieren.