Udostępnij za pośrednictwem


Android Deobfuscation

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.

ProGuard, DexGuard i R8 to narzędzia do optymalizacji i zaciemniania kodu aplikacji systemu Android. Usuwa nieużywany kod, zmienia nazwy klas, pól i metod z semantycznie niejasnymi nazwami, co sprawia, że baza kodu jest mniejsza i trudniejsza do odwrotnego inżyniera. Aby włączyć zaciemnianie aplikacji ProGuard lub R8 w aplikacji systemu Android, postępuj zgodnie z oficjalną dokumentacją dla deweloperów systemu Android.

Dzięki funkcji ProGuard, DexGuard lub R8 włączonej w aplikacji systemu Android ślady stosu muszą być deobfuscated. Usługa App Center automatycznie deobfuscates śledzi stosy dla aplikacji Java, Kotlin i React Native systemu Android podczas przekazywania pliku utworzonego mapping.txt na każdej kompilacji. Ten plik mapuje oryginalną klasę, metodę i nazwy pól na zaciemnione nazwy, dzięki czemu ślady stosu są czytelne.

Usługa kompilacji i dystrybucji centrum aplikacji może automatycznie generować pliki mapowania i przekazywać je 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 mapowania, jak opisano w poniższych krokach.

Przekazywanie pliku mapping.txt

Portal Centrum aplikacji

  1. mapping.txt Pobieranie pliku z katalogu kompilacji modułu aplikacji
  2. Zaloguj się do centrum aplikacji i wybierz aplikację
  3. W menu po lewej stronie przejdź do sekcji Diagnostyka
  4. Wybieranie mapowań
  5. Kliknij przycisk Przekaż mapowania w prawym górnym rogu
  6. Wprowadź nazwę wersji i kod wersji (muszą one być zgodne z konfiguracją narzędzia Gradle kompilacji, aby mapowanie działało dla określonej kompilacji)
  7. mapping.txt Przekaż plik z katalogu kompilacji modułu aplikacji.
  8. Kliknij przycisk Zapisz.

Interfejs API centrum aplikacji

Proces przekazywania plików mapowania 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_typeAndroidProguard, build a version właściwości odpowiadające odpowiednio kodowi wersji i nazwie wersji, a także file_name.

  1. Wyzwalanie POST żądania do interfejsu API symbol_uploads. To wywołanie przydziela miejsce na naszym zapleczu dla pliku i zwraca symbol_upload_id właściwość i 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 Używając właściwości zwróconej z pierwszego kroku, utwórz PUT żą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}'
  1. PATCH Prześlij żądanie do interfejsu API symbol_uploads przy użyciu symbol_upload_id właściwości zwróconej z pierwszego kroku. W treści żądania określ, czy chcesz ustawić stan przekazywania na committed (pomyślnie ukończony) proces przekazywania lub aborted (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 mapowania:

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

Uwaga

Centrum aplikacji nie może sprawdzić, czy przekazano właściwy mapping.txt plik. Zalecamy przekazanie pliku bezpośrednio po utworzeniu pliku .apk lub wypchnięcie go do repozytorium kodu, jeśli chcesz przekazać go później.

Przekazywanie mapowania z kompilacji w centrum aplikacji

Jeśli kompilacja zostanie skonfigurowana do utworzenia mapping.txt pliku, program App Center skompiluje plik jako dostępny do pobrania. Automatyczne dystrybuowanie kompilacji lub ręczne rozpowszechnianie go później spowoduje przekazanie mapping.txt pliku do diagnostyki w celu deobfuscacji przychodzących raportów o awarii. Nie jest konieczne ręczne przekazanie mapping.txt pliku po dystrybucji kompilacji.

Usuwanie pliku mapowania

  1. GET Prześlij żądanie do interfejsu API symbols_list. Spowoduje to pobranie identyfikatorów przekazanych plików mapowania.
  2. DELETE Prześlij żądanie do interfejsu API symbols_upload przy użyciu identyfikatora pliku mapowania. Spowoduje to usunięcie określonego pliku mapowania.