| Plattform auswählen : | iOS+ Android Flutter Unity |
Sie können auf ein Problem klicken und einen detaillierten Ereignisbericht im DevOps & Engagement > Crashlytics Dashboard der Firebase Console aufrufen. Sie können diese Berichte anpassen, um besser zu verstehen, was in Ihrer App passiert und welche Umstände zu Ereignissen geführt haben, die an Crashlytics gemeldet wurden.
Melden Sie nicht abgefangene Ausnahmen und abgefangene Ausnahmen an Crashlytics.
Instrumentieren Sie Ihre App, um benutzerdefinierte Schlüssel, benutzerdefinierte Logmeldungen, und Nutzerkennungen zu protokollieren.
Rufen Sie automatisch Navigationspfadlogs ab, wenn Ihre App das Firebase SDK für Google Analytics verwendet. Diese Protokolle geben Ihnen Einblick in Nutzeraktionen, die zu einem Crashlytics-erfassten Ereignis in Ihrer App geführt haben.
Deaktivieren Sie die automatische Absturzmeldung und aktivieren Sie die Opt-in-Meldung für Ihre Nutzer. Standardmäßig erfasst Crashlytics automatisch plattformnative Absturzberichte für alle Nutzer Ihrer App.
Ausnahmen melden
Nicht abgefangene Ausnahmen melden
Sie können alle schwerwiegenden Fehler, die im Flutter-Framework auftreten, automatisch abfangen, indem Sie FlutterError.onError mit FirebaseCrashlytics.instance.recordFlutterFatalError überschreiben. Wenn Sie auch nicht schwerwiegende Ausnahmen abfangen möchten, überschreiben Sie FlutterError.onError mit FirebaseCrashlytics.instance.recordFlutterError:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
bool weWantFatalErrorRecording = true;
FlutterError.onError = (errorDetails) {
if(weWantFatalErrorRecording){
FirebaseCrashlytics.instance.recordFlutterFatalError(errorDetails);
} else {
FirebaseCrashlytics.instance.recordFlutterError(errorDetails);
}
};
runApp(MyApp());
}
Asynchrone Fehler
Asynchrone Fehler werden nicht vom Flutter-Framework abgefangen:
ElevatedButton(
onPressed: () async {
throw Error();
}
...
)
Um solche Fehler abzufangen, können Sie den Handler PlatformDispatcher.instance.onError verwenden:
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
FlutterError.onError = (errorDetails) {
FirebaseCrashlytics.instance.recordFlutterFatalError(errorDetails);
};
// Pass all uncaught asynchronous errors that aren't handled by the Flutter framework to Crashlytics
PlatformDispatcher.instance.onError = (error, stack) {
FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
return true;
};
runApp(MyApp());
}
Fehler außerhalb von Flutter
Wenn Sie Fehler abfangen möchten, die außerhalb des Flutter-Kontexts auftreten, installieren Sie einen Fehlerlistener für das aktuelle Isolate:
Isolate.current.addErrorListener(RawReceivePort((pair) async {
final List<dynamic> errorAndStacktrace = pair;
await FirebaseCrashlytics.instance.recordError(
errorAndStacktrace.first,
errorAndStacktrace.last,
fatal: true,
);
}).sendPort);
Abgefangene Ausnahmen melden
Crashlytics meldet nicht nur automatisch Abstürze Ihrer App, Crashlytics sondern erfasst auch nicht schwerwiegende Ausnahmen und sendet sie Ihnen, wenn das nächste schwerwiegende Ereignis gemeldet wird oder wenn die App neu gestartet wird.
Verwenden Sie die Methode recordError, um nicht schwerwiegende Ausnahmen in den Catch-Blöcken Ihrer App zu erfassen. Beispiel:
await FirebaseCrashlytics.instance.recordError(
error,
stackTrace,
reason: 'a non-fatal error'
);
// Or you can use:
await FirebaseCrashlytics.instance.recordFlutterError(errorDetails);
Sie können auch weitere Informationen zum Fehler protokollieren. Dazu verwenden Sie die Eigenschaft information:
await FirebaseCrashlytics.instance.recordError(
error,
stackTrace,
reason: 'a non-fatal error',
information: ['further diagnostic information about the error', 'version 2.0'],
);
Diese Ausnahmen werden im DevOps & Engagement > Crashlytics Dashboard 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 Version und Hardwaregerät.
Crashlytics verarbeitet Ausnahmen in einem separaten Hintergrundthread, um die Leistung Ihrer App so wenig wie möglich zu beeinträchtigen. Um den Netzwerkverkehr Ihrer Nutzer zu reduzieren, Crashlytics begrenzt bei Bedarf die Anzahl der Berichte, die vom Gerät gesendet werden.
Benutzerdefinierte Schlüssel hinzufügen
Mit benutzerdefinierten Schlüsseln können Sie den spezifischen Status Ihrer App abrufen, der zu einem Absturz geführt hat. Sie können Ihren Absturzberichten beliebige Schlüssel/Wert-Paare zuordnen und dann mit den benutzerdefinierten Schlüsseln im DevOps & Engagement > Crashlytics Dashboard der Firebase Console nach Absturzberichten suchen und sie filtern.
Im Dashboard können Sie nach Problemen suchen, die einem benutzerdefinierten Schlüssel entsprechen.
Wenn Sie ein bestimmtes Problem im Dashboard untersuchen, können Sie die zugehörigen benutzerdefinierten Schlüssel für jedes Ereignis auf dem Untertab Schlüssel aufrufen 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. Beispiele:
// Set a key to a string.
FirebaseCrashlytics.instance.setCustomKey('str_key', 'hello');
// Set a key to a boolean.
FirebaseCrashlytics.instance.setCustomKey("bool_key", true);
// Set a key to an int.
FirebaseCrashlytics.instance.setCustomKey("int_key", 1);
// Set a key to a long.
FirebaseCrashlytics.instance.setCustomKey("int_key", 1L);
// Set a key to a float.
FirebaseCrashlytics.instance.setCustomKey("float_key", 1.0f);
// Set a key to a double.
FirebaseCrashlytics.instance.setCustomKey("double_key", 1.0);
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 dem Tab Logs an, wenn Sie die Details eines Problems aufrufen. Alle Probleme finden Sie im Dashboard DevOps & Engagement > Crashlytics dashboard der Firebase console.
Verwenden Sie log, um Probleme zu lokalisieren. Beispiel:
FirebaseCrashlytics.instance.log("Higgs-Boson detected! Bailing out");
Nutzerkennungen festlegen
Um ein Problem zu diagnostizieren, 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 Nutzer-IDs hinzufügen möchten, weisen Sie jedem Nutzer eine eindeutige Kennung in Form einer ID-Nummer, eines Tokens oder eines gehashten Werts zu:
FirebaseCrashlytics.instance.setUserIdentifier("12345");
Wenn Sie eine Nutzerkennung nach dem Festlegen löschen müssen, setzen Sie den Wert auf einen leeren String zurück. Durch das Löschen einer Nutzerkennung werden keine vorhandenen Crashlytics Einträge entfernt. Wenn Sie Einträge löschen müssen, die mit einer Nutzer ID verknüpft sind, wenden Sie sich an den Firebase-Support.
Navigationspfadlogs abrufen
Navigationspfadlogs geben Ihnen ein besseres Verständnis der Interaktionen eines Nutzers mit Ihrer App, die zu einem Absturz‑, nicht schwerwiegenden oder ANR-Ereignis geführt haben. Diese Logs können hilfreich sein, wenn Sie ein Problem reproduzieren und debuggen möchten.
Navigationspfadlogs werden von Google Analytics unterstützt. Um sie zu erhalten, müssen Sie Google Analytics für Ihr Firebase-Projekt aktivieren und das Firebase SDK für Google Analytics zu Ihrer App hinzufügen. Sobald diese Voraussetzungen erfüllt sind, werden Navigationspfadlogs automatisch in die Daten eines Ereignisses auf dem Tab **Logs** aufgenommen, wenn Sie die Details eines Problems aufrufen. Alle Probleme finden Sie im Dashboard **DevOps & Engagement** > **Crashlytics** der Firebase Console.Google AnalyticsCrashlyticsFirebase
Das Analytics SDK
protokolliert automatisch das Ereignis screen_view
Dadurch können in den Navigationspfadlogs eine Liste der Bildschirme angezeigt werden, die vor dem
Absturz‑, nicht schwerwiegenden oder ANR-Ereignis aufgerufen wurden. Ein Navigationspfadlog vom Typ screen_view enthält einen Parameter firebase_screen_class.
Navigationspfadlogs werden auch mit allen benutzerdefinierten Ereignissen gefüllt, die Sie manuell in der Sitzung des Nutzers protokollieren, einschließlich der Parameterdaten des Ereignisses. Diese Daten können eine Reihe von Nutzeraktionen zeigen, 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 Navigationspfadlogs verwendet werden.
Opt-in-Meldung aktivieren
Standardmäßig erfasst Crashlytics automatisch Absturzberichte für alle Nutzer Ihrer App. Wenn Sie Nutzern mehr Kontrolle über die von ihnen gesendeten Daten geben möchten, können Sie die Opt-in-Meldung aktivieren, indem Sie die automatische Meldung deaktivieren und Daten nur dann an Crashlytics senden, wenn Sie dies in Ihrem Code festlegen.
Deaktivieren Sie die automatische Erhebung nativ:
Apple-Plattformen
Fügen Sie Ihrer Datei
Info.plisteinen neuen Schlüssel hinzu:- Schlüssel:
FirebaseCrashlyticsCollectionEnabled - Wert:
false
Android
Fügen Sie im Block
applicationIhrer DateiAndroidManifest.xmleinmeta-data-Tag hinzu, um die automatische Erhebung zu deaktivieren:<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />- Schlüssel:
Aktivieren Sie die Erhebung für ausgewählte Nutzer, indem Sie die Crashlytics Daten erhebungsüberschreibung zur Laufzeit aufrufen. Der Überschreibungswert bleibt bei allen nachfolgenden Starts Ihrer App bestehen, sodass Crashlytics automatisch Berichte für diesen Nutzer erheben kann.
FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);Wenn der Nutzer die Datenerhebung später deaktiviert, können Sie
falseals Überschreibungswert übergeben. Dieser Wert wird beim nächsten Start der App angewendet und bleibt bei allen nachfolgenden Starts für diesen Nutzer bestehen.
Daten von Crash Insights verwalten
Crash Insights hilft Ihnen, Probleme zu beheben, indem es Ihre anonymisierten Stacktraces mit Traces aus anderen Firebase-Apps vergleicht und Sie darüber informiert, ob Ihr Problem Teil eines größeren Trends ist. Für viele Probleme bietet Crash Insights sogar Ressourcen, die Ihnen beim Debuggen des Absturzes helfen.
Crash Insights verwendet aggregierte Absturzdaten, um häufige 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 Problemliste im DevOps & Engagement > Crashlytics Dashboard der Firebase Konsole deaktivieren.
Nächste Schritte
- Exportieren Sie Ihre Daten nach BigQuery oder Cloud Logging um erweiterte Analysen durchzuführen und Funktionen wie das Abfragen Ihrer Daten, das Erstellen benutzerdefinierter Dashboards und das Einrichten benutzerdefinierter Benachrichtigungen zu nutzen.