Firebase is back at Google I/O on May 10! Register now

Passen Sie Ihre Firebase Crashlytics-Absturzberichte an

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

In dieser Anleitung wird beschrieben, wie Sie Ihre Absturzberichte mit dem Firebase Crashlytics SDK anpassen. Standardmäßig sammelt Crashlytics automatisch Absturzberichte für alle Benutzer Ihrer App (Sie können die automatischen Absturzberichte deaktivieren und stattdessen die Opt-in-Berichte für Ihre Benutzer aktivieren ). Crashlytics bietet standardmäßig vier Protokollierungsmechanismen: benutzerdefinierte Schlüssel , benutzerdefinierte Protokolle , Benutzerkennungen und abgefangene Ausnahmen .

Fügen Sie benutzerdefinierte Schlüssel hinzu

Benutzerdefinierte Schlüssel helfen Ihnen dabei, den spezifischen Zustand Ihrer App zu 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 verwenden, um Absturzberichte in der Firebase-Konsole zu suchen und zu filtern.

  • 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ö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 setCustomKey Instanzmethode, um Schlüssel/Wert-Paare festzulegen. Beachten Sie, dass setCustomKey für den value Parameter überladen ist, um alle primitiven oder String Argumente 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 den Wert eines vorhandenen Schlüssels auch ändern, indem Sie den Schlüssel aufrufen und auf einen anderen Wert setzen. 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 Instanzmethode setCustomKeys ü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 Protokollmeldungen hinzu

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

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

Kotlin+KTX

Firebase.crashlytics.log("message")

Java

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

Benutzer-IDs festlegen

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

Um Benutzer-IDs zu Ihren Berichten 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

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

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

Lesen Sie die Kommentare in der Header-Datei für Anweisungen zur Verwendung der NDK C++-APIs.

Melden Sie nicht schwerwiegende Ausnahmen

Zusätzlich zum automatischen Melden der Abstürze Ihrer App können Sie mit Crashlytics nicht schwerwiegende Ausnahmen aufzeichnen und Ihnen diese beim nächsten Start Ihrer App zusenden.

Verwenden Sie die recordException Methode, 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 Problemzusammenfassung enthält alle Zustandsinformationen, die Sie normalerweise bei Abstürzen erhalten, zusammen mit 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 Benutzer zu reduzieren, fasst Crashlytics protokollierte Ausnahmen zusammen und sendet sie beim nächsten Start der App.

Opt-in-Berichterstellung aktivieren

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 nur dann Daten an Crashlytics senden, wenn Sie dies in Ihrem Code wünschen:

  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 Außerkraftsetzung der Crashlytics-Datenerfassung aufrufen. Der Überschreibungswert bleibt beim Start Ihrer App bestehen, sodass Crashlytics automatisch Berichte sammeln kann. Um die automatische Absturzmeldung zu deaktivieren, übergeben Sie als Überschreibungswert false . Bei Festlegung auf false gilt der neue Wert erst bei der nächsten Ausführung der App.

    Kotlin+KTX

    Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)

    Java

    FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);

Crash Insights-Daten verwalten

Crash Insights hilft Ihnen bei der Lösung von Problemen, indem es Ihre anonymisierten Stack-Traces mit Traces aus anderen Firebase-Apps vergleicht und Sie darüber informiert, ob Ihr Problem Teil eines größeren Trends ist. Bei vielen Problemen stellt Crash Insights sogar Ressourcen bereit, die Ihnen beim Debuggen des Absturzes helfen.

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