Android NDK

Důležité

31. března 2025 je naplánované vyřazení z provozu. I když můžete dál používat Visual Studio App Center, dokud ho úplně vyřadíte, existuje několik doporučených alternativ, na které můžete zvážit migraci.

Přečtěte si další informace o časových osách a alternativách podpory.

Android NDK umožňuje implementovat části aplikací pro Android pomocí C a C++. K získání platných trasování zásobníku v nativním kódu můžete použít klientskou knihovnu Google Breakpad pro aplikace pro Android. Trasování zásobníku může obsahovat pouze adresy paměti. Nezobrazují názvy tříd, metody, názvy souborů a čísla řádků, které jsou potřeba ke čtení a pochopení chybových ukončení. Aby se adresy paměti pro vaši aplikaci NDK pro Android přeložily, musíte nahrát symboly aplikace pro každý build.

Informace o tom, jak hlásit chybové ukončení sady NDK, najdete v dokumentaci k sadě Android SDK pro aplikace pro Android nebo v dokumentaci k sadě Unity SDK pro aplikace Unity.

Pokud chcete do App Center odesílat chybové ukončení breakpadu z jiných platforem, přečtěte si dokumentaci k nahrání vlastních chybových ukončení.

Nesymbolicated crashes

Nesymbolikovaná chybová ukončení se zobrazují v části Diagnostika app center, abyste si mohli zobrazit některé podrobnosti ještě před nahráním symbolů. Chybějící symboly z těchto chyb se zobrazí na kartě "nesymbolicated". Pokud se chybějící symboly nahrají, nesymbolicated crash group bude nahrazena symbolickou skupinou chybových ukončení.

Poznámka

App Center nepodporuje symboliku rámců, které pocházejí ze systémových knihoven. Vzhledem k vysoké fragmentaci systémových binárních souborů pro Android a další platformy – která se může lišit na libovolné kombinaci verzí zařízení a operačního systému – App Center neposkytuje symboly samotné pro systémové binární soubory a automaticky přeskočí rámce ze systémových binárních souborů v symbolické rovině.

Vygenerování souboru .zip k nahrání

Existují dva způsoby, jak App Center načíst symboly potřebné pro symboliku. App Center je může generovat z nativních binárních souborů používaných ve vašem projektu nebo můžete přímo nahrát symboly zarážky.

Možnost 1: Nahrání nativních binárních souborů

Vložte všechny soubory .so z adresáře projektu obj/local/$ABI/ do .zip souboru.

Možnost 2: Nahrání symbolů zarážky

  1. Výpis symbolů pomocí sady nástrojů Breakpad, jak je popsáno v dokumentaci k zarážce v části Získání symbolů ladění.
  2. Vytvořte symbols.zip soubor s následující strukturou:

Poznámka

Pokud nahráváte symboly z macOS, musíte symboly vyčistit od všech nadbytečných složek, například __MACOS se vygeneruje, a k jejich odstranění můžete použít zip -d <symbols.zip> __MACOSX/\*.

$ 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

Nahrávání symbolů

Poznámka

Služba Sestavení a distribuce App Center může automaticky předávat symboly službě Diagnostika. Pokud k sestavení a automatické distribuci aplikace koncovým uživatelům používáte App Center, nemusíte soubory symbolů získávat a nahrávat ručně, jak je podrobně popsáno v následujících krocích.

Portál App Center

  1. Přihlaste se do App Center a vyberte svou aplikaci.
  2. V nabídce vlevo přejděte do části Diagnostika a pak Do části Problémy.
  3. Pokud vaše aplikace ještě nenahlásila žádné chybové ukončení, budete muset k nahrání symbolů zarážky použít rozhraní API nebo rozhraní příkazového řádku.
  4. Pokud už vaše aplikace nahlásila chybové ukončení, která potřebují symboly, podívejte se na kartu Unsymbolicated a měla by existovat skupina verzí s chybějícími symboly. Kliknutím na ni zobrazte nabídku pro nahrání souboru.
  5. Jakmile app Center indexuje symboly, budou pro vás symbolické chybové ukončení.

App Center API

Proces nahrávání symbolů prostřednictvím rozhraní API zahrnuje řadu tří volání rozhraní API: jedno pro přidělení místa na back-endu, jedno pro nahrání souboru a jedno pro aktualizaci stavu nahrávání. Tělo prvního volání rozhraní API by mělo být nastavené symbol_type na Breakpad.

  1. Aktivujte POST požadavek na rozhraní API symbol_uploads. Toto volání přidělí místo na našem back-endu pro váš soubor a vrátí symbol_upload_id vlastnost a 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 Pomocí vlastnosti vrácené z prvního kroku vytvořte požadavek s hlavičkou PUT a "x-ms-blob-type: BlockBlob" zadejte umístění souboru na disku. Toto volání soubor nahraje do našich účtů back-endového úložiště. Přečtěte si další informace o hlavičkách požadavků put blob .
curl -X PUT '{upload_url}' \
    -H 'x-ms-blob-type: BlockBlob' \
    --upload-file '{path to file}'
  1. Vytvořte PATCH požadavek na rozhraní API symbol_uploads pomocí symbol_upload_id vlastnosti vrácené z prvního kroku. V textu požadavku zadejte, jestli chcete nastavit stav nahrávání na committed (úspěšně dokončeno) procesu nahrávání, nebo aborted (neúspěšně dokončeno).
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" }'

Poznámka

Rozhraní API pro nahrávání symbolů nefunguje pro soubory, které jsou větší než 256 MB. K nahrání těchto souborů použijte rozhraní příkazového řádku App Center. Rozhraní příkazového řádku App Center si můžete nainstalovat podle pokynů v úložišti Rozhraní příkazového řádku app center.

Rozhraní příkazového řádku App Center

K nahrání souborů symbolů můžete použít také rozhraní příkazového řádku:

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

Ignorování symbolů

Pokud App Center neobsahuje všechny soubory symbolů, které by plně symbolizovaly zprávy o chybách, jsou chybové ukončení uvedené na kartě Nesymbolicated . Požadované symboly se nahrají z této stránky, pokud k nim máte přístup.

Pokud symboly nemůžete nahrát, můžete je označit jako Ignorované tak, že vyberete řádky v tabulce a kliknete na tlačítko Ignorovat verze . Toto tlačítko říká App Center, aby zpracovala chybové ukončení a symbolizovala je co nejúplněji se symboly, které jsou v souboru. Po dokončení zpracování se zobrazí na kartě Chybové ukončení částečně symbolicky. Nová chybová ukončení, která také závisejí na stejných ID symbolů označených jako ignorovaná, obcházejí kartu Unsymbolicated , když přicházejí a procházejí systémem.