Domyślnie Firebase Crashlytics automatycznie przetwarza pliki symboli debugowania (dSYM), aby generować czytelne dla człowieka raporty o awariach. Zwykle konfigurujesz to zachowanie podczas początkowej konfiguracji Crashlytics w aplikacji, a w szczególności przez dodanie skryptu wykonawczego, który automatycznie przesyła pliki dSYM podczas kompilacji aplikacji.
Niestety, automatyczne przesyłanie plików dSYM może się nie udać z kilku powodów. W tym przewodniku znajdziesz kilka sposobów na rozwiązanie problemów, gdy Crashlytics nie może znaleźć plików dSYM Twojej aplikacji.
Upewnij się, że Xcode może automatycznie przetwarzać pliki dSYM i przesyłać je na serwer.
Podczas konfigurowania Crashlytics w aplikacji skonfigurowano skrypt wykonania, aby automatycznie przetwarzać dSYM-y i przesyłać pliki.
Sprawdź, czy konfiguracja skryptu Crashlytics jest zgodna z nowymi wymaganiami wprowadzonymi w wersji Xcode 15. Jeśli konfiguracja nie jest aktualna, może pojawić się ten błąd:
error: Info.plist Error Unable to process Info.plist at path ...
.
W szczególności Xcode 15 i nowsze wymagają podania pełnego zestawu lokalizacji plików. W przypadku skryptu Crashlytics (firebase-ios-sdk/Crashlytics/run
) sprawdź, czy masz taką konfigurację:
Kliknij kartę Etapy kompilacji, a potem rozwiń sekcję Uruchom skrypt.
W sekcji Pliki wejściowe sprawdź, czy masz ś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)
Sprawdzanie, czy Xcode generuje pliki dSYM
W większości przypadków pliki dSYM są nieobecne, ponieważ Xcode ich po prostu nie generuje. Gdy przesyłanie się nie powiedzie, Crashlytics wyświetli w konsoli Firebase alert „Brak pliku dSYM”. Jeśli pojawi się ten alert, najpierw sprawdź, czy Xcode generuje prawidłowe pliki dSYM dla każdej kompilacji:
Otwórz projekt w Xcode, a potem w pliku Navigatora Xcode wybierz plik projektu.
Wybierz główny cel kompilacji.
Otwórz kartę Ustawienia kompilacji celu i kliknij Wszystko.
Wyszukaj:
debug information format
Dla wszystkich typów kompilacji ustaw Format informacji debugowania na DWARF z plikiem dSYM.
Utwórz ponownie aplikację.
Raporty o wypadkach powinny teraz pojawiać się w panelu Crashlytics. Jeśli problem będzie się powtarzał lub wystąpią inne błędy, znajdź dSYM-y i prześlij je do Crashlytics ręcznie.
Zlokalizowanie plików dSYM na komputerze lokalnym
Aby wyświetlić na komputerze wszystkie identyfikatory UUID wszystkich dSYM-ów i odnaleźć brakujący dSYM, uruchom to polecenie:
mdfind -name .dSYM | while read -r line; do dwarfdump -u "$line"; done
Po znalezieniu pliku dSYM prześlij go ręcznie do Crashlytics.
Jeśli polecenie mdfind
nie zwróci żadnych wyników, możesz sprawdzić katalog Products
, w którym znajduje się .app
(domyślnie katalog Products
znajduje się w katalogu Derived Data
). Jeśli aplikacja została wydana w wersji produkcyjnej, możesz też poszukać pliku dSYM w katalogu .xcarchive
na dysku:
W Xcode otwórz okno Organizer, a potem wybierz aplikację z listy. Xcode wyświetla listę archiwów projektu.
Aby wyświetlić archiwum w Finderze, kliknij je, przytrzymując klawisz Control. Ponownie naciśnij Ctrl i kliknij, a następnie kliknij Pokaż zawartość pakietu.
W katalogu
.xcarchive
znajduje się katalog dSYMs zawierający pliki dSYM wygenerowane w ramach procesu archiwizacji Xcode.
Przesyłanie plików dSYM
Crashlytics obsługuje wiele sposobów przesyłania plików dSYM: automatycznie lub ręcznie.
(zalecane) Przetwarzaj automatycznie pliki dSYM i przesyłaj je
Podczas początkowej konfiguracji Crashlytics najprawdopodobniej skonfigurowano automatyczne przesyłanie danych do Twojej aplikacji. Jeśli jednak automatyczne przesyłanie nie działa, sprawdź, czy konfiguracja jest prawidłowa.
Ręczne przesyłanie plików dSYM
Jeśli automatyczne przesyłanie nie działa, możesz ręcznie przesłać pliki dSYM, korzystając z jednego z tych sposobów.
Opcja 1: użyj opcji „przeciągnij i upuść” w konsoli, aby przesłać plik ZIP zawierający pliki dSYM (wejdź do konsoli Firebase > Crashlytics > karta dSYMs).
Opcja 2: użyj skryptu
upload-symbols
, który możesz wywołać w dowolnym miejscu w procesie kompilacji, aby ręcznie przesłać pliki dSYM. Aby uruchomić skryptupload-symbols
, użyj jednej z tych opcji:Opcja A: dodaj ten wiersz do procesu kompilacji:
find dSYM_DIRECTORY -name "*.dSYM" | xargs -I \{\} $PODS_ROOT/FirebaseCrashlytics/upload-symbols -gsp /PATH/TO/GoogleService-Info.plist -p PLATFORM \{\}
Opcja B: uruchom skrypt bezpośrednio z terminala:
/PATH/TO/PODS/DIRECTORY/FirebaseCrashlytics/upload-symbols -gsp /PATH/TO/GoogleService-Info.plist -p ios /PATH/TO/dSYMs
Aby uzyskać informacje o użyciu i dodatkowe instrukcje dotyczące tego skryptu, uruchom
upload-symbols
z parametrem--help
.