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:
Fügen Sie im
application
IhrerAndroidManifest.xml
Datei einmeta-data
Tag hinzu, um die automatische Erfassung zu deaktivieren:<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
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 auffalse
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.