Otrzymuj czytelne raporty o awariach w panelu Crashlytics


Domyślnie Firebase Crashlytics automatycznie instrumentuje projekt Fluttera, aby przesłać niezbędne pliki symboli, które zapewniają, że raporty o błędach są odszyfrowane i zrozumiałe dla człowieka.

Niestety w niektórych przypadkach może się zdarzyć, że projekt nie zostanie w pełni skonfigurowany. Z tego przewodnika dowiesz się, jak działa automatyzacja, i poznasz pierwsze kroki, które należy wykonać, aby debugować konfigurację projektu.

Platformy Apple

Sprawdź konfigurację przesyłania plików dSYM

Dodanie wtyczki Crashlytics Flutter i wykonanie polecenia flutterfire configure spowoduje próbę dodania do obszaru roboczego Xcode projektu skryptu wykonawczego, który wyszukuje i przesyła niezbędne pliki symboli dSYM do Crashlytics. Jeśli nie prześlesz tych plików, w panelu Crashlytics zobaczysz alert „Brakujące pliki dSYM”, a wyjątki zostaną wstrzymane przez backend, dopóki nie prześlesz brakujących plików.

Jeśli wystąpi ten problem, najpierw sprawdź, czy masz zainstalowany skrypt:

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

  2. Sprawdź, czy do faz kompilacji celu Runner dodano skrypt wykonawczy o nazwie [firebase_crashlytics] Crashlytics Upload Symbols.

    Aby sprawdzić, czy skrypt do wykonania nie istnieje, czy istnieje, przejdź do odpowiedniej sekcji poniżej.

Jeśli skrypt wykonania nie istnieje, możesz go dodać ręcznie:

  1. Znajdź identyfikator aplikacji Firebase dla aplikacji na urządzenia Apple. Możesz go znaleźć w 2 miejscach:

    • W konsoli Firebase kliknij > Ustawienia projektu. Przewiń w dół do karty Twoje aplikacje, a potem kliknij aplikację Firebase na urządzeniu Apple, aby wyświetlić informacje o niej, w tym identyfikator aplikacji.

    • W katalogu najwyższego poziomu projektu Flutter znajdź plik firebase_options.dart. Identyfikator aplikacji Firebase w przypadku aplikacji Apple jest oznaczony jako GOOGLE_APP_ID.

  2. Kliknij > Nowa faza uruchamiania skryptu.

    Upewnij się, że nowa faza Uruchom skrypt jest ostatnią fazą kompilacji projektu. W przeciwnym razie Crashlytics nie będzie mogła prawidłowo przetwarzać dSYM.

  3. Rozwiń nową sekcję Uruchom skrypt.

  4. W polu skryptu (znajdującym się pod etykietą Powłoka) dodaj te skrypty do wykonania.

    Te skrypty przetwarzają pliki dSYM i przesyłają je do folderu Crashlytics.

    $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: identyfikator aplikacji Firebase w Apple (nie identyfikator pakietu Apple)
      Przykład identyfikatora aplikacji Firebase w Apple: 1:1234567890:ios:321abc456def7890

    Identyfikator aplikacji Firebase możesz znaleźć na 2 sposoby:

    • W pliku GoogleService-Info.plist identyfikator aplikacji to wartość GOOGLE_APP_ID;

    • W konsoli Firebase otwórz Ustawienia projektu. Przewiń w dół do karty Twoje aplikacje, a potem kliknij wybraną aplikację Firebase, aby znaleźć jej identyfikator.

  5. W sekcji Pliki wejściowe dodaj ścieżki do lokalizacji tych plików:

    ${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 szuka tych plików wejściowych w określonych lokalizacjach, aby sprawdzić, czy pliki kompilacji są dostępne dla skryptu do wykonania. Jeśli włączona jest bezpieczna piaskownica skryptu użytkownika, Xcode zezwala tylko skryptowi do wykonania na dostęp do plików określonych w plikach wejściowych.

    • Podanie lokalizacji plików dSYM projektu umożliwia Crashlytics przetworzenie tych plików.
    • Podanie lokalizacji wygenerowanego pliku GoogleService-Info.plist aplikacji umożliwia usłudze Crashlytics powiązanie plików dSYM z Twoją aplikacją Firebase.
    • Podanie lokalizacji pliku wykonywalnego aplikacji umożliwia skryptowi zapobieganie wielokrotnemu przesyłaniu tego samego pliku dSYM. Pamiętaj, że binarnych plików aplikacji nie przesyłaj.

Jeśli skrypt do uruchomienia istnieje, zapoznaj się z przewodnikiem Apple dotyczącym rozwiązywania problemów z plikami dSYM. Jeśli zdecydujesz się przesłać pliki dSYM za pomocą opisanego procesu, musisz wykonać te dodatkowe czynności:

  1. Znajdź identyfikator aplikacji Firebase dla aplikacji na urządzenia Apple. Możesz go znaleźć w 2 miejscach:

    • W konsoli Firebase kliknij > Ustawienia projektu. Przewiń w dół do karty Twoje aplikacje, a potem kliknij aplikację Firebase na urządzeniu Apple, aby wyświetlić informacje o niej, w tym identyfikator aplikacji.

    • W katalogu najwyższego poziomu projektu Flutter znajdź plik firebase_options.dart. Identyfikator aplikacji Firebase w przypadku aplikacji Apple jest oznaczony jako GOOGLE_APP_ID.

  2. Podczas uruchamiania skryptu upload-symbols używaj wartości -ai FIREBASE_APPLE_APP_ID zamiast -gsp /path/to/GoogleService-Info.plist.

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

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

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

Android

Sprawdź konfigurację 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ą zostać zaszyfrowane, jeśli zaszyfrowanie jest włączone.

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

  • W pliku kompilacji na poziomie projektu (android/build.gradle) sprawdź, czy zawiera on 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 zawiera on 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 Fluttera używa flagi --split-debug-info (i opcjonalnie flagi --obfuscate), aby wyświetlić czytelne ścieżki stosu dla aplikacji, musisz wykonać dodatkowe czynności.

Aby przesłać symbole do debugowania Flutter, użyj interfejsu wiersza poleceń Firebase (w wersji 11.9.0 lub nowszej). Musisz przesłać symbole debugowania przed zgłoszeniem awarii w wersji kompilacji zaciemnionego 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ład identyfikatora aplikacji Firebase na Androida: 1:567383003300:android:17104a2ced0c9b9b

    Identyfikator aplikacji Firebase możesz znaleźć na 2 sposoby:

    • W pliku google-services.json identyfikator aplikacji to wartość mobilesdk_app_id;

    • W konsoli Firebase otwórz Ustawienia projektu. Przewiń w dół do karty Twoje aplikacje, a potem kliknij wybraną aplikację Firebase, aby znaleźć jej identyfikator.

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

Jeśli problemy nadal występują, zapoznaj się z przewodnikiem dotyczącym rozwiązywania problemów z zaszyfrowanymi raportami na urządzeniach z Androidem.