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:
W katalogu iOS projektu odszukaj i otwórz plik obszaru roboczego Xcode (
FLUTTER_PROJECT_NAME/ios/Runner.xcworkspace
).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.
Skrypt do automatycznego przesyłania plików dSYM nie istnieje.
Jeśli skrypt wykonania nie istnieje, możesz go dodać ręcznie:
Znajdź identyfikator aplikacji Firebase dla aplikacji na urządzenia Apple. Możesz go znaleźć w 2 miejscach:
W konsoli Firebase kliknij
. 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. > Ustawienia projektu W katalogu najwyższego poziomu projektu Flutter znajdź plik
firebase_options.dart
. Identyfikator aplikacji Firebase w przypadku aplikacji Apple jest oznaczony jakoGOOGLE_APP_ID
.
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.
Rozwiń nową sekcję Uruchom skrypt.
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
Nie wiesz, jak znaleźć identyfikator aplikacji Firebase?
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.
- FIREBASE_APP_ID: identyfikator aplikacji Firebase w Apple (nie identyfikator pakietu Apple)
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)
Dlaczego potrzebne są lokalizacje tych plików
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.
Uruchom skrypt do automatycznego przesyłania plików dSYM.
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:
Znajdź identyfikator aplikacji Firebase dla aplikacji na urządzenia Apple. Możesz go znaleźć w 2 miejscach:
W konsoli Firebase kliknij
. 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. > Ustawienia projektu W katalogu najwyższego poziomu projektu Flutter znajdź plik
firebase_options.dart
. Identyfikator aplikacji Firebase w przypadku aplikacji Apple jest oznaczony jakoGOOGLE_APP_ID
.
Podczas uruchamiania skryptu
upload-symbols
używaj wartości
zamiast-ai FIREBASE_APPLE_APP_ID .-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
Nie wiesz, jak znaleźć identyfikator aplikacji Firebase?
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.