Otrzymuj czytelne raporty o awariach w panelu Crashlytics


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:

  1. Kliknij kartę Fazy kompilacji, a potem rozwiń sekcję Uruchom skrypt.

  2. 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)
    Jeśli w ustawieniach kompilacji projektu masz ENABLE_USER_SCRIPT_SANDBOXING=YESENABLE_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:

  1. Otwórz projekt w Xcode, a następnie wybierz plik projektu w Nawigatorze Xcode.

  2. Wybierz główny cel kompilacji.

  3. Otwórz kartę Ustawienia kompilacji projektu docelowego, a następnie kliknij Wszystkie.

  4. Wyszukaj: debug information format

  5. W przypadku wszystkich typów kompilacji ustaw Format informacji o debugowaniu na DWARF z plikiem dSYM.

  6. 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:

  1. W Xcode otwórz okno Organizer, a następnie wybierz aplikację z listy. Xcode wyświetli listę archiwów projektu.

  2. 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.

  3. .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ć skrypt upload-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.