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
- W programie Xcode otwórz menu Okno , a następnie wybierz pozycję Organizator.
- Wybierz kartę Archiwa .
- Wybierz aplikację na pasku bocznym po lewej stronie.
- Kliknij prawym przyciskiem myszy najnowsze archiwum i wybierz polecenie Pokaż w narzędziu Finder.
- Kliknij prawym przyciskiem myszy
.xcarchive
plik w programie Finder i wybierz polecenie Pokaż zawartość pakietu. - Powinien zostać wyświetlony folder o nazwie
dSYMs
zawierający pakiet dSYM. - 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
- Zaloguj się do Centrum aplikacji i wybierz aplikację.
- W menu po lewej stronie przejdź do sekcji Diagnostyka i wybierz pozycję Symbole.
- W prawym górnym rogu kliknij pozycję Przekaż symbole i przekaż plik.
- 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_type
Apple
.
- Wyzwalanie
POST
żądania do interfejsu API symbol_uploads. To wywołanie przydziela miejsce na naszym zapleczu dla pliku i zwracasymbol_upload_id
właściwość iupload_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}'
upload_url
Używając właściwości zwróconej z pierwszego kroku, utwórzPUT
żą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}'
PATCH
Prześlij żądanie do interfejsu API symbol_uploads przy użyciusymbol_upload_id
właściwości zwróconej z pierwszego kroku. W treści żądania określ, czy chcesz ustawić stan przekazywania nacommitted
(pomyślnie ukończony) proces przekazywania lubaborted
(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
- W programie Xcode otwórz ustawienia projektu, klikając element najwyższego poziomu w nawigatorze projektu
- Przejdź do strony Ustawienia kompilacji
- Wyszukaj
bitcode
- W wyniku zmień wartość z Tak na Nie
- 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:
- Otwórz organizatora Xcode
- Wybierz określone archiwum aplikacji przekazanej do programu iTunes Connect
- Kliknij przycisk "Pobierz maszyny wirtualne dSYM". Ten krok spowoduje wstawienie skompilowanych plików dSYM kodu bitowego do oryginalnego archiwum.
- 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:
- Wybierz aplikację w portalu iTunes Connect
- Wybierz kartę Działanie u góry
- Wybierz wersję kompilacji aplikacji z brakującymi symbolami
- Kliknij link Pobierz plik dSYM
- 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.
- Znajdź identyfikator UUID w pliku dSYM:
dwarfdump --u CrashProbeiOS.app.dSYM
- 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
- Sprawdź dokładnie, czy zwrócony identyfikator UUID jest zgodny z identyfikatorami UUID wyświetlanymi w oknie dialogowym symboli debugowania:
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.