Sdílet prostřednictvím


Deobfuskace Androidu

Důležité

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

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

ProGuard, DexGuard a R8 jsou nástroje pro optimalizaci a obfuscaci kódu aplikací pro Android. Odebere nepoužívaný kód, přejmenuje třídy, pole a metody se sémanticky nejasnými názvy, takže základ kódu bude menší a bude obtížnější provádět zpětnou analýzu. Pokud chcete v aplikaci pro Android povolit obfuskaci pomocí ProGuardu nebo R8, postupujte podle oficiální dokumentace pro vývojáře pro Android.

Pokud máte v aplikaci pro Android povolený ProGuard, DexGuard nebo R8, musí být trasování zásobníku deobfuskované. Když nahrajete mapping.txt soubor vytvořený v každém buildu, App Center automaticky deobfuscuje trasování zásobníku pro aplikace Java, Kotlin a React Native Android. Tento soubor mapuje původní názvy tříd, metod a polí na obfuskované názvy, aby trasování zásobníku bylo čitelné.

Služba sestavení a distribuce app center může automaticky generovat soubory mapování a nahrávat je do diagnostické služby. Pokud k sestavení a automatické distribuci aplikace koncovým uživatelům používáte App Center, nemusíte soubory mapování získávat a nahrávat ručně, jak je podrobně popsáno v následujících krocích.

Nahrání souboru mapping.txt

Portál App Center

  1. mapping.txt Stažení souboru z adresáře sestavení modulu vaší aplikace
  2. Přihlaste se k App Center a vyberte aplikaci.
  3. V nabídce vlevo přejděte do části Diagnostika .
  4. Vybrat mapování
  5. Klikněte na tlačítko Nahrát mapování v pravém horním rohu.
  6. Vyplňte Název verze a Kód verze (aby mapování fungovalo pro konkrétní sestavení, musí se shodovat s konfigurací Gradle daného buildu).
  7. mapping.txt Nahrajte soubor z adresáře sestavení modulu vaší aplikace.
  8. Klikněte na tlačítko Uložit.

App Center API

Proces nahrávání souborů mapování 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 AndroidProguardvlastnosti a version , build které odpovídají kódu verze a názvu verze a file_nametaké vlastnosti .

  1. POST Aktivace požadavku 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. Pomocí vlastnosti vrácené upload_url 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í nahraje soubor 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é v prvním kroku. V textu požadavku určete, jestli chcete nastavit stav nahrávání na committed (úspěšně dokončeno) proces 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 u souborů větších než 256 MB. K nahrání těchto souborů použijte rozhraní příkazového řádku app center. App Center CLI můžete nainstalovat podle pokynů v našem úložišti App Center CLI.

Rozhraní příkazového řádku app center

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

appcenter crashes upload-mappings --mapping {mapping file} --version-name {version name} --version-code {version code}

Poznámka

App Center nemůže zkontrolovat, jestli jste nahráli správný mapping.txt soubor. Doporučujeme nahrát soubor přímo po vytvoření souboru .apk nebo ho odeslat do úložiště kódu, pokud ho chcete nahrát později.

Přeposlání mapování ze sestavení v App Center

Pokud je sestavení nakonfigurované tak, aby vytvořilo mapping.txt soubor, vytvoří sestavení App Center tento soubor jako dostupný soubor ke stažení. Automatická distribuce sestavení nebo ruční distribuce později předá mapping.txt soubor diagnostice, aby se deobfuscate příchozí zprávy o chybách. Po distribuci sestavení není nutné soubor ručně nahrávat mapping.txt .

Odstranění souboru mapování

  1. Vytvořte GET požadavek na rozhraní API symbols_list. Tím se načtou ID souborů mapování, které jste nahráli.
  2. Vytvořte DELETE požadavek na rozhraní API symbols_upload s ID souboru mapování. Tím se odstraní zadaný soubor mapování.