Czytelne raporty o awariach w panelu Crashlytics (platformy Apple)

Wybierz platformę: iOS+ Android Flutter Unity


Domyślnie Firebase Crashlytics automatycznie przetwarza pliki symboli debugowania (dSYM), aby generować raporty o awariach, które są czytelne dla człowieka. Zwykle konfigurujesz to zachowanie podczas wstępnej konfiguracji Crashlytics w aplikacji, w szczególności przez dodanie skryptu uruchamiającego 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 udać. W tym przewodniku znajdziesz kilka sposobów rozwiązywania problemów, gdy Crashlytics nie może znaleźć plików dSYM aplikacji.

Sprawdź, czy Xcode może automatycznie przetwarzać pliki dSYM i je przesyłać

Podczas konfigurowania Crashlytics w aplikacji skonfigurowano skrypt uruchamiający, który automatycznie przetwarza pliki dSYM i je przesyła.

Upewnij się, że konfiguracja skryptu uruchamiającego Crashlytics jest zgodna z nowymi wymaganiami, które zaczęły obowiązywać w 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 ....

Xcode 15 i nowsze wersje wymagają podania pełniejszego zestawu lokalizacji plików. W przypadku skryptu uruchamiającego Crashlyticsrun script (firebase-ios-sdk/Crashlytics/run) upewnij się, że masz skonfigurowane te ustawienia: setup:

  1. Kliknij kartę Build Phases (Fazy kompilacji), a następnie rozwiń sekcję Run Script (Uruchom skrypt).

  2. W sekcji Input Files (Pliki wejściowe) upewnij się, że 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=YES i ENABLE_DEBUG_DYLIB=YES, dodaj te ustawienia:
    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}.debug.dylib

Sprawdź, czy Xcode generuje pliki dSYM

Najczęściej pliki dSYM znikają, ponieważ Xcode ich nie generuje. Gdy przesyłanie się nie powiedzie, Crashlytics wyświetli w konsoli Firebase alert „Brak pliku dSYM”. Jeśli zobaczysz 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ę Build Settings (Ustawienia kompilacji) celu, a następnie kliknij All (Wszystkie).

  4. Wyszukaj debug information format.

  5. Ustaw Debug Information Format (Format informacji debugowania) na DWARF with dSYM File (DWARF z plikiem dSYM) dla wszystkich typów kompilacji.

  6. Ponownie skompiluj aplikację.

Raporty o awariach powinny teraz pojawiać się na Crashlytics panelu. Jeśli problem będzie się powtarzał lub wystąpią inne błędy, spróbuj znaleźć pliki dSYM i przesłać je do Crashlytics ręcznie.

Znajdź pliki dSYM na komputerze lokalnym

Uruchom to polecenie, aby wyświetlić wszystkie identyfikatory UUID plików dSYM na komputerze i wyszukać brakujący plik dSYM:

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ć w katalogu Products (Produkty), w którym znajduje się plik .app (domyślnie katalog Products znajduje się w katalogu Derived Data (Dane pochodne)). Jeśli aplikacja została opublikowana w wersji produkcyjnej, możesz też poszukać jej pliku dSYM w katalogu .xcarchive na dysku:

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

  2. Kliknij archiwum z wciśniętym klawiszem Control, aby wyświetlić je w Finderze. Ponownie kliknij je z wciśniętym klawiszem Control, a następnie kliknij Show Package Contents (Pokaż zawartość pakietu).

  3. W katalogu .xcarchive znajduje się katalog dSYMs, który zawiera pliki dSYM wygenerowane w ramach procesu archiwizacji Xcode.

Prześlij pliki dSYM

Crashlytics obsługuje kilka sposobów przesyłania plików dSYM – automatycznie lub ręcznie.

(Zalecane) Automatyczne przetwarzanie plików dSYM i ich przesyłanie

Podczas wstępnej konfiguracji Crashlytics najprawdopodobniej skonfigurowano to automatyczne przesyłanie plików dSYM w aplikacji. Jeśli jednak automatyczne przesyłanie się nie powiedzie, sprawdź, czy konfiguracja jest prawidłowa.

Ręczne przesyłanie plików dSYM

Jeśli automatyczne przesyłanie się nie powiedzie, 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ę > Crashlytics > dSYMs kartę).

  • 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: 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

    Uwagi dotyczące użycia i dodatkowe instrukcje dotyczące tego skryptu znajdziesz, uruchamiając upload-symbols z parametrem --help.