Otrzymuj czytelne raporty o awariach w panelu Crashlytics


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 fazy 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ę:

  1. Kliknij kartę Etapy 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)

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:

  1. Otwórz projekt w Xcode, a potem wybierz plik projektu w przewodniku Xcode.

  2. Wybierz główny cel kompilacji.

  3. Otwórz kartę Ustawienia kompilacji celu i kliknij Wszystko.

  4. Wyszukaj: debug information format

  5. Dla wszystkich typów kompilacji ustaw Format informacji debugowania na DWARF z plikiem dSYM.

  6. 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-yprześ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 opublikowana w wersji produkcyjnej, możesz też poszukać pliku dSYM w katalogu .xcarchive na dysku:

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

  2. Aby wyświetlić archiwum w Finderze, kliknij je, przytrzymując klawisz Control. Ponownie naciśnij Ctrl i kliknij, a następnie wybierz Pokaż zawartość pakietu.

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

    Aby uzyskać informacje o użyciu i dodatkowe instrukcje dotyczące tego skryptu, uruchom upload-symbols z parametrem --help.