Lesbare Absturzberichte im Crashlytics-Dashboard abrufen (Flutter)

Plattform auswählen: iOS+ Android Flutter Unity


Standardmäßig instrumentiert Firebase Crashlytics Ihr Flutter-Projekt automatisch, um die erforderlichen Symboldateien hochzuladen, damit Absturzberichte deobfuskiert und menschenlesbar sind.

Leider gibt es Fälle, in denen das Projekt nicht vollständig konfiguriert werden kann. In diesem Leitfaden wird beschrieben, was die Automatisierung bewirkt, und es werden erste Schritte zur Fehlerbehebung bei der Projekteinrichtung erläutert.

Apple-Plattformen

Konfiguration für das Hochladen von dSYM-Dateien prüfen

Wenn Sie das Flutter-Plug-in Crashlytics 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 Meldung „Fehlende dSYM“ angezeigt und Ausnahmen werden vom Back-End zurückgehalten, bis die fehlenden Dateien hochgeladen wurden.

Wenn dieses Problem auftritt, prüfen Sie zuerst, ob das Ausführungsskript installiert ist:

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

  2. Prüfen Sie, ob den Build-Phasen des Runner-Ziels ein Ausführungsskript mit dem Titel [firebase_crashlytics] Crashlytics Upload Symbols hinzugefügt wurde.

    Im entsprechenden Abschnitt unten erfahren Sie, ob das Ausführungsskript nicht vorhanden ist oder das Ausführungsskript vorhanden ist.

Prüfen Sie die Versionskonfiguration für Flutter und Crashlytics (wenn Sie das Flag --split-debug-info verwenden).

Wenn Ihr Flutter-Projekt das Flag --split-debug-info (und optional auch das Flag --obfuscate) verwendet, sind zusätzliche Schritte erforderlich, um lesbare Stacktraces für Ihre App anzuzeigen.

Achten Sie darauf, dass in Ihrem Projekt die empfohlene Versionskonfiguration (Flutter 3.12.0 oder höher und Crashlytics Flutter-Plug-in 3.3.4 oder höher) verwendet wird, damit Flutter-Symbole (dSYM-Dateien) automatisch generiert und in Crashlytics hochgeladen werden können.

Android

Abhängigkeitskonfiguration prüfen

Mit dem Befehl flutterfire configure wird versucht, den Gradle-Build-Dateien Ihres Projekts die erforderlichen Abhängigkeiten hinzuzufügen. 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 Anwendungsebene (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 CLI zum Hochladen von Flutter-Symbolen verwenden (wenn Sie das Flag --split-debug-info verwenden).

Wenn Ihr Flutter-Projekt das Flag --split-debug-info (und optional auch das Flag --obfuscate) verwendet, sind zusätzliche Schritte erforderlich, um lesbare Stacktraces für Ihre App anzuzeigen.

Verwenden Sie die Firebase-Befehlszeile (v.11.9.0+), um Flutter-Debugging-Symbole hochzuladen. Du musst die Debug-Symbole hochladen, bevor du einen Absturz aus einem Build mit verschleiertem Code meldest.

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 der Paketname)
    Beispiel für eine Firebase-Android-App-ID: 1:567383003300:android:17104a2ced0c9b9b

  • PATH/TO/symbols: Das Verzeichnis, das Sie beim Erstellen der Anwendung an das Flag --split-debug-info übergeben.

Wenn die Probleme weiterhin bestehen, lesen Sie den Android-spezifischen Leitfaden zur Fehlerbehebung bei verschleierten Berichten.