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

  1. Scaricare il mapping.txt file dalla directory di compilazione del modulo app
  2. Accedere a App Center e selezionare l'app
  3. Nel menu a sinistra passare alla sezione Diagnostica
  4. Selezionare Mapping
  5. Fare clic sul pulsante Carica mapping in alto a destra
  6. 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)
  7. Caricare il mapping.txt file dalla directory di compilazione del modulo dell'app.
  8. 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 AndroidProguarde buildversion proprietà che corrispondono rispettivamente al codice della versione e al nome della versione, nonché a .file_name

  1. Attivare una POST richiesta all'API symbol_uploads. Questa chiamata alloca lo spazio nel back-end per il file e restituisce una symbol_upload_idupload_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}'
  1. Usando la upload_url proprietà restituita dal primo passaggio, effettuare una PUT 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}'
  1. Effettuare una PATCH richiesta all'API symbol_uploads usando la symbol_upload_id proprietà restituita dal primo passaggio. Nel corpo della richiesta specificare se si vuole impostare lo stato del caricamento su committed (completato correttamente) il processo di caricamento o aborted (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

  1. Effettuare una GET richiesta all'API symbols_list. In questo modo vengono recuperati gli ID per i file di mapping caricati.
  2. 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.