Symbolizacja systemu iOS

Ważne

Program Visual Studio App Center ma zostać wycofany 31 marca 2025 r. Mimo że możesz nadal używać programu Visual Studio App Center do momentu jej pełnego wycofania, istnieje kilka zalecanych alternatyw, do których można rozważyć migrację.

Dowiedz się więcej o osiach czasu pomocy technicznej i alternatywach.

Raporty awarii systemu macOS, tvOS i iOS pokazują ślady stosu dla wszystkich uruchomionych wątków aplikacji w momencie wystąpienia awarii. Ślady stosu zawierają tylko adresy pamięci; nie nazwy klas, metod, nazw plików lub numerów wierszy potrzebnych do zrozumienia awarii.

Aby uzyskać przetłumaczone adresy pamięci, należy przekazać pakiet dSYM do usługi App Center, który zawiera wszystkie informacje wymagane do obsługi symbolicznej. Więcej informacji na temat symbolicznych informacji można uzyskać w oficjalnej dokumentacji dewelopera firmy Apple.

Usługa kompilacji i dystrybucji centrum aplikacji może automatycznie wygenerować prawidłowy plik dSYM i plik mapy .zip źródłowej oraz przekazać plik do usługi diagnostyki. Jeśli używasz usługi App Center do kompilowania i automatycznego dystrybuowania aplikacji do użytkowników końcowych, nie musisz ręcznie uzyskiwać i przekazywać plików symboli.

Niesymbolicowane awarie

Niesymbolicowane awarie są wyświetlane w sekcji Diagnostyka centrum aplikacji, dzięki czemu można wyświetlić pewne szczegóły jeszcze przed przekazaniem symboli. Brakujące symbole z tych awarii zostaną wyświetlone na karcie "unsymbolicated". Jeśli brakujące symbole zostaną przekazane, niesymbolicowana grupa awarii zostanie zastąpiona symboliczną grupą awarii.

.dSYM Znajdowanie pakietu

  1. W programie Xcode otwórz menu Okno , a następnie wybierz pozycję Organizator.
  2. Wybierz kartę Archiwa .
  3. Wybierz aplikację na pasku bocznym po lewej stronie.
  4. Kliknij prawym przyciskiem myszy najnowsze archiwum i wybierz polecenie Pokaż w narzędziu Finder.
  5. Kliknij prawym przyciskiem myszy .xcarchive plik w programie Finder i wybierz polecenie Pokaż zawartość pakietu.
  6. Powinien zostać wyświetlony folder o nazwie dSYMs zawierający pakiet dSYM.
  7. Utwórz plik zip pakietu dSYM.

Jeśli używasz programu Visual Studio zamiast programu Xcode, zobacz Gdzie mogę znaleźć plik dSYM do symbolicznego zapisywania dzienników awarii systemu iOS? aby znaleźć plik dSYM .

Przekazywanie symboli

Portal Centrum aplikacji

  1. Zaloguj się do Centrum aplikacji i wybierz aplikację.
  2. W menu po lewej stronie przejdź do sekcji Diagnostyka i wybierz pozycję Symbole.
  3. W prawym górnym rogu kliknij pozycję Przekaż symbole i przekaż plik.
  4. Gdy symbole zostaną zindeksowane przez centrum aplikacji, awarie zostaną symboliczne dla Ciebie.

React Native aplikacji systemu iOS

Aby uzyskać pliki symboli dla plików React Native iOS, utwórz plik ZIP z pakietem dSYM na komputerze Mac i mapę źródłową javaScript aplikacji. Mapa źródłowa powinna mieć nazwę index.ios.map. Poniższe polecenia wygenerują mapę źródłową kompilacji wydania:

react-native bundle --entry-file index.ios.js --platform ios --dev false --reset-cache --bundle-output unused.jsbundle --sourcemap-output index.ios.map

Interfejs API centrum aplikacji

Proces przekazywania symboli za pośrednictwem interfejsu API obejmuje serię trzech wywołań interfejsu API: jeden do przydzielenia miejsca na naszym zapleczu, jeden do przekazania pliku i jeden w celu zaktualizowania stanu przekazywania. Treść pierwszego wywołania interfejsu API powinna mieć wartość symbol_typeApple.

  1. Wyzwalanie POST żądania do interfejsu API symbol_uploads. To wywołanie przydziela miejsce na naszym zapleczu dla pliku i zwraca symbol_upload_id właściwość i upload_url .
curl -X POST 'https://api.appcenter.ms/v0.1/apps/{owner_name}/{app_name}/symbol_uploads' \
    -H 'accept: application/json' \
    -H 'X-API-Token: {API TOKEN}' \
    -H 'Content-Type: application/json' \
    -d '{JSON BODY}'
  1. upload_url Używając właściwości zwróconej z pierwszego kroku, utwórz PUT żądanie z nagłówkiem: "x-ms-blob-type: BlockBlob" i podaj lokalizację pliku na dysku. To wywołanie przekazuje plik do naszych kont magazynu zaplecza. Dowiedz się więcej o nagłówkach żądań obiektów blob PUT .
curl -X PUT '{upload_url}' \
    -H 'x-ms-blob-type: BlockBlob' \
    --upload-file '{path to file}'
  1. PATCH Prześlij żądanie do interfejsu API symbol_uploads przy użyciu symbol_upload_id właściwości zwróconej z pierwszego kroku. W treści żądania określ, czy chcesz ustawić stan przekazywania na committed (pomyślnie ukończony) proces przekazywania lub aborted (zakończone niepowodzeniem).
curl -X PATCH 'https://api.appcenter.ms/v0.1/apps/{owner_name}/{app_name}/symbol_uploads/{symbol_upload_id}' \
    -H 'accept: application/json' \
    -H 'X-API-Token: {API TOKEN}' \
    -H 'Content-Type: application/json' \
    -d '{ "status": "committed" }'

Uwaga

Interfejs API przekazywania symboli nie działa w przypadku plików, które są większe niż 256 MB. Użyj interfejsu wiersza polecenia centrum aplikacji, aby przekazać te pliki. Interfejs wiersza polecenia centrum aplikacji można zainstalować, postępując zgodnie z instrukcjami w repozytorium interfejsu wiersza polecenia centrum aplikacji.

Interfejs wiersza polecenia centrum aplikacji

Możesz również użyć interfejsu wiersza polecenia do przekazywania plików symboli:

appcenter crashes upload-symbols --symbol {symbol file}

Kod bitowy

Kod bitowy został wprowadzony przez firmę Apple, aby umożliwić aplikacjom wysyłanym do App Store ponowne skompilowanie przez firmę Apple i zastosowanie najnowszej optymalizacji. Jeśli kod bitowy jest włączony, symbole wygenerowane dla aplikacji w sklepie będą inne niż te z własnego systemu kompilacji.

Raportowanie awarii w usłudze App Center nie obsługuje jeszcze symbolicznych awarii z aplikacji z obsługą kodu bitowego. W międzyczasie zalecamy wyłączenie kodu bitowego. Wyłączenie kodu bitowego znacznie upraszcza zarządzanie symbolami i obecnie nie ma żadnych znanych wad dla aplikacji systemu iOS.

Wyłączanie kodu bitowego dla aplikacji

  1. W programie Xcode otwórz ustawienia projektu, klikając element najwyższego poziomu w nawigatorze projektu
  2. Przejdź do strony Ustawienia kompilacji
  3. Wyszukaj bitcode
  4. W wyniku zmień wartość z Tak na Nie
  5. Ponowne kompilowanie aplikacji

Dzięki tym prostym krokom raportowanie awarii centrum aplikacji będzie zachowywać się jak zwykle.

Pobieranie symboli dla aplikacji z obsługą kodu bitowego

Jeśli chcesz zachować włączony kod bitowy, możesz pobrać odpowiednie pliki dSYM, wykonując następujące kroki:

  1. Otwórz organizatora Xcode
  2. Wybierz określone archiwum aplikacji przekazanej do programu iTunes Connect
  3. Kliknij przycisk "Pobierz maszyny wirtualne dSYM". Ten krok spowoduje wstawienie skompilowanych plików dSYM kodu bitowego do oryginalnego archiwum.
  4. Przekazywanie symboli do odpowiedniej aplikacji i wersji w Centrum aplikacji

Jeśli organizator Xcode nie udostępnia żadnych nowych symboli, musisz pobrać pliki dSYM z portalu iTunes Connect, wykonując następujące kroki:

  1. Wybierz aplikację w portalu iTunes Connect
  2. Wybierz kartę Działanie u góry
  3. Wybierz wersję kompilacji aplikacji z brakującymi symbolami
  4. Kliknij link Pobierz plik dSYM
  5. Przekaż pobrany plik do Centrum aplikacji. Ten plik zawiera symbole wymagane do aplikacji App Center w celu symbolicznego zagniecenia awarii.

Rozwiązywanie problemów z symbolami

Jeśli awarie nadal pojawiają się niesymbolicowane po przekazaniu symboli i wyłączeniu kodu bitowego, może to być spowodowane tym, że przekazane pliki dSYM nie są zgodne z tymi wymaganymi przez Centrum aplikacji. Podczas przekazywania plików dSYM usługa App Center dopasuje je do odpowiedniej wersji aplikacji na podstawie ich identyfikatorów UUID.

Możesz dokładnie sprawdzić, czy pliki dSYM mają odpowiednie identyfikatory UUID, używając narzędzia interfejsu wiersza polecenia o nazwie dwarfdump.

  1. Znajdź identyfikator UUID w pliku dSYM:
dwarfdump --u CrashProbeiOS.app.dSYM
  1. Wynik powinien wyglądać mniej więcej tak:
UUID:ADF53C85-4638-3EFF-A33C-42C13A18E915 (armv7)CrashProbeiOS.app.dSYM/Contents/Resources/DWARF/CrashProbeiOS
UUID:D449E33D-7E74-379D-8B79-15EE104ED1DF (arm64)CrashProbeiOS.app.dSYM/Contents/Resources/DWARF/CrashProbeiOS
  1. Sprawdź dokładnie, czy zwrócony identyfikator UUID jest zgodny z identyfikatorami UUID wyświetlanymi w oknie dialogowym symboli debugowania:

W centrum aplikacji jest wyświetlany identyfikator UUID wymaganych symboli

Ignorowanie symboli

Gdy centrum aplikacji nie ma wszystkich plików symboli do pełnego symbolicznego raportowania awarii, awarie są wyświetlane na karcie Niesymbolicated . Wymagane symbole są przekazywane z tej strony, jeśli masz do nich dostęp.

Jeśli nie możesz przekazać symboli, możesz oznaczyć je jako ignorowane , wybierając wiersze w tabeli i klikając przycisk Ignoruj wersje . Ten przycisk nakazuje usłudze App Center przetwarzanie awarii i symboliczne ich w pełni przy użyciu symboli w pliku. Po zakończeniu przetwarzania zostaną one wyświetlone na karcie Awarie częściowo symboliczne. Nowe awarie, które również zależą od tych samych identyfikatorów symboli oznaczonych jako ignorowane, pomijają kartę Unsymbolicated , gdy pochodzą i przepływają przez system.