Domyślnie Firebase Crashlytics automatycznie przetwarza pliki symboli debugowania (dSYM), aby generować raporty o awariach, które są czytelne i nie zawierają zaciemnionego kodu. Zwykle konfigurujesz to zachowanie podczas wstępnej konfiguracji Crashlytics w aplikacji, a konkretnie przez dodanie skryptu uruchamiania, który automatycznie przesyła pliki dSYM podczas fazy kompilacji aplikacji.
Niestety w kilku przypadkach automatyczne przesyłanie plików dSYM może się nie powieść. W tym przewodniku znajdziesz kilka sposobów rozwiązania problemu, gdy Crashlytics nie może znaleźć plików dSYM aplikacji.
Sprawdź, czy Xcode może automatycznie przetwarzać pliki dSYM i przesyłać je.
Podczas konfigurowania Crashlytics w aplikacji skonfigurowano skrypt uruchamiania, który automatycznie przetwarza dSYMs i przesyła pliki.
Upewnij się, że konfiguracja skryptu Crashlytics jest zgodna z nowymi wymaganiami, które obowiązują od Xcode 15. Jeśli konfiguracja jest nieaktualna, 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 wersje wymagają podania bardziej kompletnego zestawu lokalizacji plików. W przypadku Crashlytics uruchom skryptfirebase-ios-sdk/Crashlytics/run
upewnij się, że masz skonfigurowane te elementy:
Kliknij kartę Fazy 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
Jeśli w ustawieniach kompilacji projektu masz$(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)
ENABLE_USER_SCRIPT_SANDBOXING=YES
iENABLE_DEBUG_DYLIB=YES
, uwzględnij te elementy:${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}.debug.dylib
Sprawdzanie, czy Xcode generuje pliki dSYM
Pliki dSYM najczęściej znikają, ponieważ Xcode po prostu ich nie generuje. Gdy przesyłanie się nie powiedzie, Crashlytics wyświetli w Firebase konsoli alert „Brak pliku dSYM”. Jeśli otrzymasz ten alert, najpierw sprawdź, czy Xcode generuje prawidłowy plik dSYM dla każdej kompilacji:
Otwórz projekt w Xcode, a następnie wybierz plik projektu w Nawigatorze Xcode.
Wybierz główny cel kompilacji.
Otwórz kartę Ustawienia kompilacji projektu docelowego, a następnie kliknij Wszystkie.
Wyszukaj:
debug information format
W przypadku wszystkich typów kompilacji ustaw Format informacji o debugowaniu na DWARF z plikiem dSYM.
Przebuduj aplikację.
Raporty o awariach powinny teraz pojawić się w Crashlyticspanelu. Jeśli problem będzie się powtarzał lub wystąpią inne błędy, spróbuj zlokalizować pliki dSYM i przesłać je do Crashlytics ręcznie.
Znajdź pliki dSYM na komputerze lokalnym
Aby wyświetlić wszystkie identyfikatory UUID plików dSYM na komputerze i wyszukać brakujący plik dSYM, uruchom to polecenie:
mdfind -name .dSYM | while read -r line; do dwarfdump -u "$line"; done
Gdy znajdziesz plik dSYM, prześlij go ręcznie do Crashlytics.
Jeśli polecenie mdfind
nie zwróci żadnych wyników, możesz poszukać pliku w katalogu Products
, w którym znajduje się plik .app
(domyślnie katalog Products
znajduje się w Derived Data
). Jeśli aplikacja została opublikowana w wersji produkcyjnej, możesz też poszukać pliku dSYM w katalogu .xcarchive
na dysku:
W Xcode otwórz okno Organizer, a następnie wybierz aplikację z listy. Xcode wyświetli listę archiwów projektu.
Kliknij archiwum z naciśniętym klawiszem Control, aby wyświetlić je w Finderze. Ponownie kliknij go z naciśniętym klawiszem Control, a następnie kliknij Pokaż zawartość pakietu.
W
.xcarchive
znajduje się katalog dSYMs, który zawiera pliki dSYM wygenerowane w ramach procesu archiwizacji Xcode.
Przesyłanie plików dSYM
Crashlytics obsługuje kilka sposobów przesyłania plików dSYM – automatycznie lub ręcznie.
(Zalecane) Automatyczne przetwarzanie plików dSYM i przesyłanie plików
Podczas wstępnej konfiguracji Crashlytics najprawdopodobniej skonfigurowano automatyczne przesyłanie danych o 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 jednej z tych opcji.
Opcja 1: użyj opcji „Przeciągnij i upuść” w konsoli, aby przesłać plik ZIP zawierający pliki dSYM (otwórz Firebase konsolę > kartę Crashlytics > dSYM).
Opcja 2: użyj skryptu
upload-symbols
, który możesz wywołać z dowolnego miejsca w procesie kompilacji, aby ręcznie przesłać pliki dSYM. Aby uruchomić skryptupload-symbols
, użyj jednej z tych opcji:Opcja A: w procesie kompilacji umieść ten wiersz:
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 wyświetlić uwagi dotyczące użycia i dodatkowe instrukcje dotyczące tego skryptu, uruchom polecenie
upload-symbols
z parametrem--help
.