Im Crashlytics-Dashboard können Sie auf ein Problem klicken, um einen detaillierten Ereignisbericht zu erhalten. Sie können diese Berichte anpassen, um besser nachvollziehen zu können, was in Ihrer App passiert und unter welchen Umständen Ereignisse an Crashlytics gemeldet werden.
Instrumentieren Sie Ihre App, um benutzerdefinierte Schlüssel, benutzerdefinierte Log-Nachrichten und Nutzer-IDs zu protokollieren.
Ausnahmen für Crashlytics melden
Wenn Ihre App das Firebase SDK für Google Analytics verwendet, erhalten Sie automatisch Breadcrumb-Logs. Diese Logs geben Ihnen Einblick in Nutzeraktionen, die zu einem in Ihrer App erfassten Crashlytics-Ereignis führen.
Deaktivieren Sie die automatische Absturzmeldung und aktivieren Sie die Opt-in-Berichterstellung für Ihre Nutzer. Standardmäßig werden in Crashlytics automatisch Absturzberichte für alle Nutzer Ihrer App erfasst.
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 verwenden, um in der Firebase-Konsole nach Absturzberichten zu suchen und sie zu filtern.
Im Crashlytics-Dashboard können Sie nach Problemen suchen, die einem benutzerdefinierten Schlüssel entsprechen.
Wenn Sie ein bestimmtes Problem in der Konsole untersuchen, können Sie die zugehörigen benutzerdefinierten Schlüssel für jedes Ereignis auf dem Tab Schlüssel ansehen 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
für den Parameter value
überladen ist, um ein beliebiges primitives oder String
-Argument zu akzeptieren. Hier sind einige Beispiele:
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 }
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:
val crashlytics = Firebase.crashlytics crashlytics.setCustomKeys { key("current_level", 3) key("last_UI_action", "logged_in") }
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance(); crashlytics.setCustomKey("current_level", 3); crashlytics.setCustomKey("last_UI_action", "logged_in");
Sie können Schlüssel/Wert-Paare im Bulk hinzufügen, indem Sie eine Instanz von CustomKeysAndValues
an die Instanzmethode setCustomKeys
übergeben:
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) }
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 Logmeldungen hinzufügen
Um mehr Kontext zu den Ereignissen zu erhalten, die zu einem Absturz geführt haben, können Sie Ihrer App 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 einzugrenzen. Beispiel:
Firebase.crashlytics.log("message")
FirebaseCrashlytics.getInstance().log("message");
Nutzerkennungen festlegen
Um ein Problem zu diagnostizieren, ist es oft hilfreich zu wissen, welche Ihrer Nutzer einen bestimmten Absturz erlebt haben. 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 gehashten Werts zu:
Firebase.crashlytics.setUserId("user123456789")
FirebaseCrashlytics.getInstance().setUserId("user123456789");
Wenn Sie eine Nutzer-ID löschen müssen, nachdem Sie sie festgelegt haben, setzen Sie den Wert auf einen leeren String zurück. Wenn Sie eine Nutzerkennung löschen, werden vorhandene Crashlytics-Datensätze nicht entfernt. Wenn Sie Datensätze löschen müssen, die mit einer Nutzer-ID verknüpft sind, wenden Sie sich an den Firebase-Support.
(Nur Android NDK) Metadaten zu NDK-Absturzberichten hinzufügen
Optional können Sie den Header crashlytics.h
in Ihren C++-Code einfügen, um NDK-Absturzberichten Metadaten wie benutzerdefinierte Schlüssel, benutzerdefinierte Logs und Nutzer-IDs hinzuzufügen. Alle diese Optionen werden oben auf dieser Seite beschrieben.
crashlytics.h
ist als reine Header-C++-Bibliothek im Firebase Android SDK-GitHub-Repository verfügbar.
In der Headerdatei finden Sie Kommentare mit einer Anleitung zur Verwendung der NDK C++-APIs.
GWP-ASan-Berichte zur Fehlerbehebung bei Speicherschäden einbeziehen
Crashlytics kann Ihnen helfen, Abstürze zu beheben, die durch native Speicherfehler verursacht werden, indem GWP-ASan-Berichte erfasst werden. Diese speicherbezogenen Fehler können mit Speicherschäden 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 und den neuen Filter „GWP-ASan-Bericht“ verwenden, um schnell alle Probleme mit diesen Daten aufzurufen.
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 oder höher (Firebase BoM v31.3.0 oder höher) verwenden. Sie können Ihre GWP-ASan-Einrichtung mit dem Beispiel-Nativen-Code in der Android-Dokumentation testen.
Nicht schwerwiegende Ausnahmen melden
Zusätzlich zum automatischen Melden von App-Abstürzen können Sie mit Crashlytics nicht schwerwiegende Ausnahmen aufzeichnen und sie werden Ihnen beim nächsten Start Ihrer App gesendet.
Verwenden Sie die Methode recordException
, um nicht schwerwiegende Ausnahmen in den catch
-Blöcken Ihrer App aufzuzeichnen. Beispiel:
try { methodThatThrows() } catch (e: Exception) { Firebase.crashlytics.recordException(e) // handle your exception here }
try { methodThatThrows(); } catch (Exception e) { FirebaseCrashlytics.getInstance().recordException(e); // handle your exception here }
Außerdem können Sie der jeweiligen nicht schwerwiegenden Ausnahme benutzerdefinierte Schlüssel zuweisen. Beispiel:
try { methodThatThrows() } catch (e: Exception) { Firebase.crashlytics.recordException(e) { key("string key", "string value") key("boolean key", true) key("float key", Float.MAX_VALUE) } // handle your exception here }
try { methodThatThrows(); } catch (Exception e) { CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder() .putString("string key", "string value") .putBoolean("boolean key", true) .putFloat("float key", Float.MAX_VALUE) .build(); FirebaseCrashlytics.getInstance().recordException(e, keysAndValues); // handle your exception here }
Alle aufgezeichneten Ausnahmen werden in der Firebase-Konsole als nicht schwerwiegende Probleme angezeigt. Die Problemzusammenfassung 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 Leistungseinbußen für Ihre App zu minimieren. Um den Netzwerkverkehr Ihrer Nutzer zu reduzieren, werden protokollierte Ausnahmen in Crashlytics zusammengefasst und beim nächsten Start der App gesendet.
Navigationspfad-Logs abrufen
Navigationspfadlogs geben Ihnen 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-Logs basieren auf Google Analytics. Damit Sie sie erhalten, müssen Sie Google Analytics für Ihr Firebase-Projekt aktivieren und das Firebase SDK für Google Analytics in Ihre App einfügen. Wenn diese Voraussetzungen erfüllt sind, werden Breadcrumb-Logs automatisch in die Daten eines Ereignisses auf dem Tab Logs aufgenommen, wenn Sie die Details eines Problems aufrufen.
Im Analytics SDK wird das screen_view
-Ereignis automatisch protokolliert. Dadurch kann in den Navigationspfadlogs eine Liste der Bildschirme angezeigt werden, die vor dem Absturz‑, nicht schwerwiegenden oder ANR-Ereignis aufgerufen wurden. Ein screen_view
-Breadcrumb-Log enthält einen firebase_screen_class
-Parameter.
Breadcrumb-Logs werden auch mit allen benutzerdefinierten Ereignissen gefüllt, die Sie manuell in der Sitzung des Nutzers protokollieren, einschließlich der Parameterdaten des Ereignisses. Anhand dieser Daten lässt sich eine Reihe von Nutzeraktionen nachvollziehen, die zu einem Absturz‑, nicht schwerwiegenden oder ANR-Ereignis geführt haben.
Sie können die Erhebung und Verwendung von Google Analytics-Daten steuern, einschließlich der Daten, die in Breadcrumb-Logs enthalten sind.
Berichterstellung für die Einwilligung 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 das Opt-in-Reporting aktivieren. Dazu deaktivieren Sie das automatische Reporting und senden Daten nur dann an Crashlytics, wenn Sie dies in Ihrem Code festlegen.
Fügen Sie im
application
-Block 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 Erhebung für ausgewählte Nutzer, indem Sie den Crashlytics-Überschreibungsbefehl für die Datenerhebung zur Laufzeit aufrufen. Der Überschreibungswert bleibt bei allen nachfolgenden Starts Ihrer App erhalten, sodass Crashlytics automatisch Berichte für diesen Nutzer erfassen kann.
Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
Wenn der Nutzer die Datenerhebung später deaktiviert, können Sie
false
als Überschreibungswert übergeben. Dieser wird beim nächsten Start der App durch den Nutzer angewendet und bleibt bei allen nachfolgenden Starts für diesen Nutzer bestehen.
Daten für Absturzinformationen verwalten
Mit Absturzinformationen können Sie Probleme beheben, indem Sie Ihre anonymisierten Stacktraces mit Traces aus anderen Firebase-Apps vergleichen und feststellen, ob Ihr Problem Teil eines größeren Trends ist. Bei vielen Problemen bietet Crash Insights sogar Ressourcen, die Ihnen bei der Fehlerbehebung helfen.
Crash Insights verwendet aggregierte Absturzdaten, um allgemeine Stabilitätstrends zu ermitteln. Wenn Sie die Daten Ihrer App nicht freigeben möchten, können Sie Crash Insights im Menü Crash Insights oben in der Crashlytics-Problemliste in der Firebase-Konsole deaktivieren.