Android Deobfuscation

Důležité

Visual Studio App Center bylo vyřazeno 31. března 2025 s výjimkou funkcí Analýzy a diagnostiky, které se budou dál podporovat až do 30. června 2026. Další informace.

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

V aplikaci pro Android s aktivovaným ProGuard, DexGuard nebo R8 musí být trasování zásobníku dešifrováno. App Center automaticky deobfuskuje trasování zásobníku pro aplikace Java, Kotlin a React Native pro Android, když nahrajete soubor mapping.txt vytvořený při každém sestavení. Tento soubor mapuje původní názvy tříd, metod a polí na obfuskované názvy, aby byly záznamy chyb čitelné.

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

Nahrání souboru mapping.txt

Portál centra aplikací

  1. mapping.txt Stažení souboru z adresáře sestavení modulu aplikace
  2. Přihlaste se do App Center a vyberte svou aplikaci.
  3. V nabídce vlevo přejděte do části Diagnostika .
  4. Vyberte 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 (musí se shodovat s konfigurací Gradle sestavení, aby mapování fungovalo pro konkrétní sestavení).
  7. mapping.txt Nahrajte soubor z adresáře sestavení modulu 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, jeden pro nahrání souboru a jeden pro aktualizaci stavu nahrávání. Tělo prvního volání rozhraní API by mělo nastavit symbol_type na vlastnosti AndroidProguard, build a version, které odpovídají kódu verze a názvu verze, v uvedeném pořadí, a také na file_name.

  1. Aktivujte POST požadavek na rozhraní API symbol_uploads. Toto volání přidělí místo na našem serverovém systému pro váš soubor a vrátí symbol_upload_id vlastnost a upload_url vlastnost.
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čkouPUT: "x-ms-blob-type: BlockBlob" a zadejte umístění souboru na disku. Toto volání nahraje soubor do úložiště na našem backendu. Přečtěte si další informace o hlavičkách požadavku PUT Blob .
curl -X PUT '{upload_url}' \
    -H 'x-ms-blob-type: BlockBlob' \
    --upload-file '{path to file}'
  1. Vytvořte požadavek na API PATCH pomocí vrácené vlastnosti z prvního kroku. V textu požadavku určete, jestli chcete nastavit stav nahrávání na committed proces nahrávání (úspěšně dokončeno), 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. Rozhraní příkazového řádku App Center 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ů 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. Soubor doporučujeme nahrát přímo po vytvoření souboru .apk nebo ho odeslat do úložiště kódu, pokud ho chcete nahrát později.

Předávání mapování z buildu v App Center

Pokud je sestavení nakonfigurované tak, aby vytvořilo mapping.txt soubor, vytvoří app Center soubor jako dostupný soubor ke stažení. Automatické rozesílání sestavení nebo jeho ruční rozeslání později předá soubor mapping.txt do Diagnostiky, kde se deobfuskóvá příchozí zprávy o chybách. Není nutné ručně nahrát soubor mapping.txt po distribuci sestavení.

Odstranění souboru mapování

  1. Vytvořte požadavek na GET. Tím se získají ID pro soubory mapování, které jste nahráli.
  2. DELETE Vytvořte požadavek na rozhraní API symbols_upload s ID souboru mapovacích dat. Tím se odstraní zadaný soubor mapování.