Standardmäßig instrumentiert Firebase Crashlytics Ihr Flutter-Projekt automatisch, um die erforderlichen Symboldateien hochzuladen, die dafür sorgen, dass Absturzberichte deobfusciert und für Menschen lesbar sind.
Leider kann es vorkommen, dass das Projekt nicht vollständig konfiguriert wird. In diesem Leitfaden wird beschrieben, was die Automatisierung bewirkt, und es werden erste Schritte zur Fehlerbehebung bei der Projekteinrichtung beschrieben.
Apple-Plattformen
Konfiguration für den Upload von dSYM-Dateien prüfen
Wenn Sie das Crashlytics-Flutter-Plug-in hinzufügen und den Befehl flutterfire configure
ausführen, wird versucht, dem Xcode-Arbeitsbereich Ihres Projekts ein Ausführungsskript hinzuzufügen, das die erforderlichen dSYM-Symboldateien findet und in Crashlytics hochlädt. Ohne diese Dateien wird im Crashlytics-Dashboard die Warnung „Fehlende dSYM-Datei“ angezeigt und Ausnahmen werden vom Backend zurückgehalten, bis die fehlenden Dateien hochgeladen wurden.
Wenn dieses Problem auftritt, prüfen Sie zuerst, ob das Run-Script installiert ist:
Suchen Sie die Xcode-Arbeitsbereichsdatei im iOS-Verzeichnis Ihres Projekts (
FLUTTER_PROJECT_NAME/ios/Runner.xcworkspace
) und öffnen Sie sie.Prüfen Sie, ob der Build-Phasen des Runners ein Ausführungsskript mit dem Namen
[firebase_crashlytics] Crashlytics Upload Symbols
hinzugefügt wurde.Im entsprechenden Abschnitt unten erfahren Sie, ob das Script zum Ausführen nicht vorhanden oder vorhanden ist.
Das Script zum automatischen Hochladen von dSYMs existiert nicht
Wenn dieses Ausführungsskript nicht vorhanden ist, können Sie es manuell hinzufügen:
Suchen Sie die Firebase App-ID für Ihre Apple-App. Sie finden diese ID an zwei Stellen:
Rufen Sie in der Firebase Console
auf. Scrollen Sie nach unten zur Karte Meine Apps und klicken Sie auf Ihre Firebase-Apple-App, um die Informationen zur App aufzurufen, einschließlich der App-ID. > Projekteinstellungen Suchen Sie im übergeordneten Verzeichnis Ihres Flutter-Projekts nach der Datei
firebase_options.dart
. Die Firebase App-ID Ihrer Apple-App ist mitGOOGLE_APP_ID
gekennzeichnet.
Klicken Sie auf
> Neue Phase für das Ausführen von Scripts.Achten Sie darauf, dass diese neue Phase Script ausführen die letzte Buildphase Ihres Projekts ist. Andernfalls kann Crashlytics dSYM-Dateien nicht richtig verarbeiten.
Maximieren Sie den neuen Bereich Script ausführen.
Fügen Sie im Script-Feld (unter dem Label Shell) die folgenden Ausführungsscripts hinzu.
Diese Skripts verarbeiten Ihre dSYM-Dateien und laden sie auf Crashlytics hoch.
$PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase --validate -ai
FIREBASE_APP_ID -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM$PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase -ai
FIREBASE_APP_ID -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM- FIREBASE_APP_ID: Ihre Firebase-App-ID für Apple (nicht Ihre Apple-Paket-ID)
Beispiel für eine Firebase-App-ID für Apple:1:1234567890:ios:321abc456def7890
Sie benötigen Ihre Firebase App-ID?
So finden Sie Ihre Firebase App-ID:
In Ihrer
GoogleService-Info.plist
-Datei ist Ihre App-ID der WertGOOGLE_APP_ID
.Rufen Sie in der Firebase Console die Projekteinstellungen auf. Scrollen Sie nach unten zur Karte Meine Apps und klicken Sie auf die gewünschte Firebase-App, um die App-ID zu sehen.
- FIREBASE_APP_ID: Ihre Firebase-App-ID für Apple (nicht Ihre Apple-Paket-ID)
Fügen Sie im Bereich Eingabedateien die Pfade zu den Speicherorten der folgenden Dateien hinzu:
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist
$(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/GoogleService-Info.plist
$(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)
Erläuterung, warum die Speicherorte dieser Dateien erforderlich sind
Xcode sucht an den angegebenen Speicherorten nach diesen Eingabedateien, um sicherzustellen, dass die Build-Dateien für das Ausführungsskript verfügbar sind. Wenn die Sandbox für Nutzerscripts aktiviert ist, erlaubt Xcode dem Run-Script nur den Zugriff auf Dateien, die in den Eingabedateien angegeben sind.
- Wenn Sie den Speicherort der dSYM-Dateien Ihres Projekts angeben, kann Crashlytics dSYMs verarbeiten.
- Wenn Sie den Speicherort der erstellten
GoogleService-Info.plist
-Datei Ihrer App angeben, kann Crashlytics die dSYMs mit Ihrer Firebase-App verknüpfen. - Wenn Sie den Speicherort der ausführbaren Datei Ihrer App angeben, kann das Run-Script doppelte Uploads desselben dSYM verhindern. App-Binärdateien werden nicht hochgeladen.
Script zum automatischen Hochladen von dSYMs existiert
Wenn das Run-Script vorhanden ist, lesen Sie den Apple-spezifischen Leitfaden zur Fehlerbehebung bei dSYM-Problemen. Wenn Sie Ihre dSYM-Dateien auf die beschriebene Weise hochladen, müssen Sie die folgenden zusätzlichen Schritte ausführen:
Suchen Sie die Firebase App-ID für Ihre Apple-App. Sie finden diese ID an zwei Stellen:
Rufen Sie in der Firebase Console
auf. Scrollen Sie nach unten zur Karte Meine Apps und klicken Sie auf Ihre Firebase-Apple-App, um die Informationen zur App aufzurufen, einschließlich der App-ID. > Projekteinstellungen Suchen Sie im übergeordneten Verzeichnis Ihres Flutter-Projekts nach der Datei
firebase_options.dart
. Die Firebase App-ID Ihrer Apple-App ist mitGOOGLE_APP_ID
gekennzeichnet.
Verwenden Sie beim Ausführen des
upload-symbols
-Scripts
anstelle von-ai FIREBASE_APPLE_APP_ID .-gsp /path/to/GoogleService-Info.plist
Prüfen Sie die Versionskonfiguration für Flutter und Crashlytics (falls das Flag --split-debug-info
verwendet wird)
Wenn in Ihrem Flutter-Projekt das Flag --split-debug-info
(und optional auch das Flag --obfuscate
) verwendet wird, sind zusätzliche Schritte erforderlich, um lesbare Stack-Traces für Ihre App anzuzeigen.
Achten Sie darauf, dass in Ihrem Projekt die empfohlene Versionskonfiguration verwendet wird (Flutter 3.12.0 oder höher und Crashlytics Flutter-Plug-in 3.3.4 oder höher), damit Flutter-Symbole (dSYM-Dateien) automatisch generiert und in Crashlytics hochgeladen werden können.
Android
Abhängigkeitskonfiguration prüfen
Mit dem Befehl flutterfire configure
werden die erforderlichen Abhängigkeiten den Gradle-Builddateien Ihres Projekts hinzugefügt. Ohne diese Abhängigkeiten werden Absturzberichte in der Firebase-Konsole möglicherweise verschleiert, wenn die Verschleierung aktiviert ist.
Achten Sie darauf, dass die folgenden Zeilen in der build.gradle
auf Projektebene und in der build.gradle
auf App-Ebene vorhanden sind:
Suchen Sie in der Build-Datei auf Projektebene (
android/build.gradle
) nach der folgenden Zeile:dependencies { // ... other dependencies classpath 'com.google.gms:google-services:4.3.5' classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1' }
Suchen Sie in der Build-Datei auf App-Ebene (
android/app/build.gradle
) nach der folgenden Zeile:// ... other imports android { // ... your android config } dependencies { // ... your dependencies } // This section must appear at the bottom of the file apply plugin: 'com.google.gms.google-services' apply plugin: 'com.google.firebase.crashlytics'
Prüfen Sie, ob Sie die Befehlszeile zum Hochladen von Flutter-Symbolen verwenden (wenn Sie das Flag --split-debug-info
verwenden).
Wenn in Ihrem Flutter-Projekt das Flag --split-debug-info
(und optional auch das Flag --obfuscate
) verwendet wird, sind zusätzliche Schritte erforderlich, um lesbare Stack-Traces für Ihre App anzuzeigen.
Verwenden Sie die Firebase CLI (Version 11.9.0 und höher), um Flutter-Debugsymbole hochzuladen. Sie müssen die Debugsymbole vor dem Melden eines Absturzes aus einem Build mit verschleiertem Code hochladen.
Führen Sie im Stammverzeichnis Ihres Flutter-Projekts den folgenden Befehl aus:
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO /symbols
FIREBASE_APP_ID: Ihre Firebase-Android-App-ID (nicht Ihr Paketname)
Beispiel für eine Firebase-Android-App-ID:1:567383003300:android:17104a2ced0c9b9b
Sie benötigen Ihre Firebase App-ID?
So finden Sie Ihre Firebase App-ID:
In Ihrer
google-services.json
-Datei ist Ihre App-ID der Wertmobilesdk_app_id
.Rufen Sie in der Firebase Console die Projekteinstellungen auf. Scrollen Sie nach unten zur Karte Meine Apps und klicken Sie auf die gewünschte Firebase-App, um die App-ID zu sehen.
PATH/TO/symbols
: Das Verzeichnis, das Sie beim Erstellen der Anwendung an das--split-debug-info
-Flag übergeben
Wenn die Probleme weiterhin auftreten, lesen Sie den Android-spezifischen Leitfaden zur Fehlerbehebung bei verschleierten Berichten.