Im Crashlytics-Dashboard sind lesbare Absturzberichte verfügbar.


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:

  1. Suchen Sie die Xcode-Arbeitsbereichsdatei im iOS-Verzeichnis Ihres Projekts (FLUTTER_PROJECT_NAME/ios/Runner.xcworkspace) und öffnen Sie sie.

  2. 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.

Wenn dieses Ausführungsskript nicht vorhanden ist, können Sie es manuell hinzufügen:

  1. Suchen Sie die Firebase App-ID für Ihre Apple-App. Sie finden diese ID an zwei Stellen:

    • Rufen Sie in der Firebase Console > Projekteinstellungen 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.

    • Suchen Sie im übergeordneten Verzeichnis Ihres Flutter-Projekts nach der Datei firebase_options.dart. Die Firebase App-ID Ihrer Apple-App ist mit GOOGLE_APP_ID gekennzeichnet.

  2. 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.

  3. Maximieren Sie den neuen Bereich Script ausführen.

  4. 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

    So finden Sie Ihre Firebase App-ID:

    • In Ihrer GoogleService-Info.plist-Datei ist Ihre App-ID der Wert GOOGLE_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.

  5. 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)

    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.

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:

  1. Suchen Sie die Firebase App-ID für Ihre Apple-App. Sie finden diese ID an zwei Stellen:

    • Rufen Sie in der Firebase Console > Projekteinstellungen 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.

    • Suchen Sie im übergeordneten Verzeichnis Ihres Flutter-Projekts nach der Datei firebase_options.dart. Die Firebase App-ID Ihrer Apple-App ist mit GOOGLE_APP_ID gekennzeichnet.

  2. Verwenden Sie beim Ausführen des upload-symbols-Scripts -ai FIREBASE_APPLE_APP_ID anstelle von -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

    So finden Sie Ihre Firebase App-ID:

    • In Ihrer google-services.json-Datei ist Ihre App-ID der Wert mobilesdk_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.