Android NDK
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.
Zestaw Android NDK umożliwia implementowanie części aplikacji systemu Android przy użyciu języków C i C++. Aby otrzymywać prawidłowe ślady stosu w kodzie natywnym, możesz użyć biblioteki klienta aplikacji Google Breakpad dla aplikacji systemu Android. Ślady stosu mogą zawierać tylko adresy pamięci. Nie pokazują one nazw klas, metod, nazw plików i numerów wierszy, które są potrzebne do odczytania i zrozumienia awarii. Aby uzyskać przetłumaczone adresy pamięci dla aplikacji NDK systemu Android, należy przekazać symbole aplikacji dla każdej kompilacji.
Aby dowiedzieć się, jak zgłaszać awarie zestawu NDK, zapoznaj się z dokumentacją zestawu Android SDK dla aplikacji systemu Android lub dokumentacją zestawu Unity SDK dla aplikacji aparatu Unity .
Jeśli chcesz wysłać awarie breakpad z innych platform do usługi App Center, zapoznaj się z dokumentacją przekazywania niestandardowych awarii.
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.
Uwaga
Usługa App Center nie obsługuje symboliczności ramek pochodzących z bibliotek systemowych. Biorąc pod uwagę wysoką fragmentację plików binarnych systemu dla systemu Android i innych platform — które mogą się różnić w dowolnej kombinacji wersji urządzenia/systemu operacyjnego — program App Center nie udostępnia symboli dla plików binarnych systemu i automatycznie pomija ramki z plików binarnych systemu w symboliczności.
Istnieją dwa sposoby pobierania symboli niezbędnych do symbolicznego pobrania przez centrum aplikacji. Usługa App Center może wygenerować je na podstawie natywnych plików binarnych używanych w projekcie lub bezpośrednio przekazać symbole breakpadu.
Umieść wszystkie pliki z katalogu projektu obj/local/$ABI/
w pliku .zip.
- Zrzut symboli przy użyciu łańcucha narzędzi Breakpad zgodnie z opisem w dokumentacji breakpad w sekcji "Pobieranie symboli debugowania".
- Utwórz plik symbols.zip o następującej strukturze:
Uwaga
Jeśli przekazujesz symbole z systemu macOS, musisz wyczyścić symbole wszelkich folderów dodatkowych, np. __MACOS zostanie wygenerowany i usunąć ten element, możesz użyć zip -d <symbols.zip> __MACOSX/\*
polecenia .
$ unzip -l symbols.zip
Archive: symbols.zip
Length Date Time Name
-------- ---- ---- ----
0 07-22-13 15:07 symbols/
0 07-22-13 15:07 symbols/libnative.so/
0 07-22-13 15:07 symbols/libnative.so/EAC901FB6DDCCE8AED89E1A8E4A58360/
12468 07-22-13 15:07 symbols/libnative.so/EAC901FB6DDCCE8AED89E1A8E4A58360/libnative.so.sym
0 07-22-13 15:07 symbols/libnative.so/FDC5C9E715C4F16408C0B78F95855BF0/
12467 07-22-13 15:07 symbols/libnative.so/FDC5C9E715C4F16408C0B78F95855BF0/libnative.so.sym
-------- -------
24935 6 files
Uwaga
Usługa kompilacji i dystrybucji centrum aplikacji może automatycznie przekazywać symbole do usługi diagnostyki. Jeśli używasz centrum aplikacji do kompilowania i automatycznego dystrybuowania aplikacji do użytkowników końcowych, nie musisz ręcznie uzyskiwać i przekazywać plików symboli zgodnie z poniższymi instrukcjami.
- Zaloguj się do Centrum aplikacji i wybierz aplikację.
- W menu po lewej stronie przejdź do sekcji Diagnostyka , a następnie pozycję Problemy.
- Jeśli twoja aplikacja nie zgłosiła jeszcze żadnych awarii, musisz użyć interfejsu API lub interfejsu wiersza polecenia, aby przekazać symbole breakpad.
- Jeśli aplikacja zgłosiła już awarie, które wymagają symboli, sprawdź kartę Unsymbolicated i powinna istnieć grupa wersji z brakującymi symbolami, kliknij ją, aby wyświetlić menu, aby przekazać plik.
- Gdy symbole zostaną zindeksowane przez centrum aplikacji, awarie zostaną symboliczne dla Ciebie.
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
Breakpad
.
- 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.
Możesz również użyć interfejsu wiersza polecenia do przekazywania plików symboli:
appcenter crashes upload-symbols --breakpad {symbols file}
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.