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
mapping.txt
Pobieranie pliku z katalogu kompilacji modułu aplikacji- Zaloguj się do centrum aplikacji i wybierz aplikację
- W menu po lewej stronie przejdź do sekcji Diagnostyka
- Wybieranie mapowań
- Kliknij przycisk Przekaż mapowania w prawym górnym rogu
- 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)
mapping.txt
Przekaż plik z katalogu kompilacji modułu aplikacji.- 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_type
AndroidProguard
, build
a version
właściwości odpowiadające odpowiednio kodowi wersji i nazwie wersji, a także file_name
.
- 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.
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
GET
Prześlij żądanie do interfejsu API symbols_list. Spowoduje to pobranie identyfikatorów przekazanych plików mapowania.DELETE
Prześlij żądanie do interfejsu API symbols_upload przy użyciu identyfikatora pliku mapowania. Spowoduje to usunięcie określonego pliku mapowania.