Android Deobfuscation
Importante
Visual Studio App Center è previsto per il ritiro il 31 marzo 2025. Anche se è possibile continuare a usare Visual Studio App Center fino a quando non viene completamente ritirato, esistono diverse alternative consigliate che è possibile considerare la migrazione a.
Altre informazioni sulle sequenze temporali di supporto e sulle alternative.
ProGuard, DexGuard e R8 sono strumenti per ottimizzare e offuscare il codice delle app Android. Rimuove il codice inutilizzato, rinomina classi, campi e metodi con nomi semanticamente oscuri, rendendo la base di codice più piccola e più difficile da invertire. Per abilitare l'offuscamento con ProGuard o R8 nell'app Android, seguire la documentazione ufficiale di Android Developer.
Con ProGuard, DexGuard o R8 abilitato nell'app Android, le tracce dello stack devono essere deobfuscat. App Center deobfusca automaticamente le tracce dello stack per java, Kotlin e React Native app Android quando si carica il mapping.txt
file creato in ogni compilazione. Questo file esegue il mapping dei nomi originali della classe, del metodo e dei campi ai nomi offuscati che rendono leggibili le tracce dello stack.
Il servizio Di compilazione e distribuzione di App Center può generare automaticamente file di mapping e caricarli nel servizio Diagnostica. Se si usa App Center per compilare e distribuire automaticamente l'app agli utenti finali, non è necessario ottenere manualmente e caricare i file di mapping come descritto nei passaggi seguenti.
Caricamento del file di mapping.txt
Portale di App Center
- Scaricare il
mapping.txt
file dalla directory di compilazione del modulo app - Accedere a App Center e selezionare l'app
- Nel menu a sinistra passare alla sezione Diagnostica
- Selezionare Mapping
- Fare clic sul pulsante Carica mapping in alto a destra
- Compilare il nome della versione e il codice della versione (questi devono corrispondere alla configurazione gradle della compilazione per consentire al mapping di funzionare per una compilazione specifica)
- Caricare il
mapping.txt
file dalla directory di compilazione del modulo dell'app. - Fare clic sul pulsante Salva.
App Center API
Il processo di caricamento dei file di mapping tramite l'API prevede una serie di tre chiamate API: una per allocare spazio nel back-end, una per caricare il file e una per aggiornare lo stato del caricamento. Il corpo della prima chiamata API deve essere impostato symbol_type
su AndroidProguard
e build
version
proprietà che corrispondono rispettivamente al codice della versione e al nome della versione, nonché a .file_name
- Attivare una
POST
richiesta all'API symbol_uploads. Questa chiamata alloca lo spazio nel back-end per il file e restituisce unasymbol_upload_id
upload_url
proprietà.
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}'
- Usando la
upload_url
proprietà restituita dal primo passaggio, effettuare unaPUT
richiesta con l'intestazione e"x-ms-blob-type: BlockBlob"
specificare il percorso del file su disco. Questa chiamata carica il file negli account di archiviazione back-end. Altre informazioni sulle intestazioni di richiesta BLOB PUT .
curl -X PUT '{upload_url}' \
-H 'x-ms-blob-type: BlockBlob' \
--upload-file '{path to file}'
- Effettuare una
PATCH
richiesta all'API symbol_uploads usando lasymbol_upload_id
proprietà restituita dal primo passaggio. Nel corpo della richiesta specificare se si vuole impostare lo stato del caricamento sucommitted
(completato correttamente) il processo di caricamento oaborted
(completato senza esito positivo).
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" }'
Nota
L'API di caricamento dei simboli non funziona per i file di dimensioni superiori a 256 MB. Usare l'interfaccia della riga di comando di App Center per caricare questi file. È possibile installare l'interfaccia della riga di comando di App Center seguendo le istruzioni nel repository dell'interfaccia della riga di comando di App Center.
Interfaccia della riga di comando di App Center
È anche possibile usare l'interfaccia della riga di comando per caricare i file di mapping:
appcenter crashes upload-mappings --mapping {mapping file} --version-name {version name} --version-code {version code}
Nota
App Center non è in grado di verificare se è stato caricato il file corretto mapping.txt
. È consigliabile caricare il file direttamente dopo aver creato il file .apk oppure eseguirne il push nel repository di codice se si vuole caricarlo in un secondo momento.
Inoltro del mapping da una compilazione in App Center
Se una compilazione è configurata per produrre un mapping.txt
file, App Center compila il file come download disponibile. Distribuendo automaticamente la compilazione o distribuendo manualmente il mapping.txt
file in Diagnostica per deobfuscare i report di arresto anomalo in ingresso. Non è necessario caricare manualmente il mapping.txt
file dopo la distribuzione di una compilazione.
Eliminazione di un file di mapping
- Effettuare una
GET
richiesta all'API symbols_list. In questo modo vengono recuperati gli ID per i file di mapping caricati. - Effettuare una
DELETE
richiesta all'API symbols_upload con l'ID del file di mapping. In questo modo viene eliminato il file di mapping specificato.