Uzyskiwanie czytelnych raportów o awariach w panelu Crashlytics (Flutter)

Wybierz platformę: iOS+ Android Flutter Unity


Domyślnie Firebase Crashlytics automatycznie instrumentuje projekt Flutter, aby przesyłać niezbędne pliki symboli, które zapewniają, że raporty o awariach są czytelne dla człowieka i nie mają zaciemnionego kodu.

Niestety w niektórych przypadkach projekt może nie zostać w pełni skonfigurowany. W tym przewodniku opisujemy, co robi automatyzacja, i podajemy pierwsze kroki, które należy wykonać, aby debugować konfigurację projektu.

Platformy Apple

Sprawdzanie konfiguracji przesyłania plików dSYM

Dodanie wtyczki Crashlytics Flutter i uruchomienie polecenia flutterfire configure spowoduje próbę dodania skryptu uruchamiania do obszaru roboczego Xcode projektu, który znajduje i przesyła niezbędne pliki symboli dSYM do Crashlytics. Bez tych plików w panelu Crashlytics zobaczysz alert „Brak dSYM”, a wyjątki będą przechowywane przez backend do momentu przesłania brakujących plików.

Jeśli występuje ten problem, najpierw upewnij się, że masz zainstalowany skrypt uruchamiania:

  1. Znajdź i otwórz plik obszaru roboczego Xcode w katalogu iOS projektu (FLUTTER_PROJECT_NAME/ios/Runner.xcworkspace).

  2. Sprawdź, czy do faz kompilacji celu Runner został dodany skrypt uruchamiania o nazwie [firebase_crashlytics] Crashlytics Upload Symbols.

    W odpowiedniej sekcji poniżej znajdziesz informacje o tym, czy skrypt uruchamiania nie istnieje lub istnieje.

Sprawdź konfigurację wersji Flutter i Crashlytics (jeśli używasz flagi --split-debug-info).

Jeśli Twój projekt Flutter używa flagi --split-debug-info (i opcjonalnie flagi --obfuscate), musisz wykonać dodatkowe czynności, aby wyświetlać czytelne zrzuty stosu aplikacji.

Upewnij się, że Twój projekt używa zalecanej konfiguracji wersji (Flutter 3.12.0 lub nowszy i Crashlyticswtyczka Flutter 3.3.4 lub nowsza), aby mógł automatycznie generować i przesyłać symbole Flutter (pliki dSYM) do Crashlytics.

Android

Sprawdzanie konfiguracji zależności

Polecenie flutterfire configure próbuje dodać niezbędne zależności do plików kompilacji Gradle projektu. Bez tych zależności raporty o awariach w konsoli Firebase mogą być zaciemnione, jeśli zaciemnianie jest włączone.

Upewnij się, że w pliku build.gradle na poziomie projektu i w pliku build.gradle na poziomie aplikacji znajdują się te wiersze:

  • W pliku kompilacji na poziomie projektu (android/build.gradle) sprawdź, czy znajduje się ten wiersz:

    dependencies {
    // ... other dependencies
    
    classpath 'com.google.gms:google-services:4.3.5'
    classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1'
    }
  • W pliku kompilacji na poziomie aplikacji (android/app/build.gradle) sprawdź, czy znajduje się ten wiersz:

    // ... 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'

Sprawdź, czy do przesyłania symboli Flutter używasz interfejsu wiersza poleceń (jeśli używasz flagi --split-debug-info).

Jeśli Twój projekt Flutter używa flagi --split-debug-info (i opcjonalnie flagi --obfuscate), musisz wykonać dodatkowe czynności, aby wyświetlać czytelne zrzuty stosu aplikacji.

Użyj interfejsu wiersza poleceń Firebase (w wersji 11.9.0 lub nowszej), aby przesłać symbole debugowania Flutter. Symbole debugowania musisz przesłać przed zgłoszeniem awarii z zaciemnionej kompilacji kodu.

W katalogu głównym projektu Flutter uruchom to polecenie:

firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
  • FIREBASE_APP_ID: identyfikator aplikacji Firebase na Androida (nie nazwa pakietu)
    Przykładowy identyfikator aplikacji Firebase na Androida: 1:567383003300:android:17104a2ced0c9b9b

  • PATH/TO/symbols: ten sam katalog, który przekazujesz do flagi --split-debug-info podczas tworzenia aplikacji.

Jeśli problemy nie ustąpią, zapoznaj się z przewodnikiem po rozwiązywaniu problemów z zaciemnionymi raportami na Androidzie.