2014-09-08 11 views
96

In Android studio dove sono i file di mappatura proguard generati dopo aver compilato un APK firmato?android studio, dov'è il file di mappatura proguard

io non sono sicuro se non funziona o se ho solo dimenticato il percorso del file, e la mia obbligatoria ricerca di Google/StackOverflow non rispose

+0

è spiegato qui ufficialmente https://firebase.google.com/docs/crash/android#uploading_proguard_mapping_files_manual –

+2

@JayakrishnanPM è contento di vedere che Google è riuscito a farcela 3 anni dopo. – CQM

risposta

132

Va trova a build/outputs/proguard/release/mapping.txt nella directory del modulo applicativo .

Nell'ultima versione di ProGuard e Android Studio, il file si trova a build/outputs/mapping/release/mapping.txt.

+1

Il nuovo percorso è build/outputs/mapping/release/mapping.txt –

63

Per me sono a 'costruire/uscite/mappatura/release'

+11

'build/outputs/mapping/release/mapping.txt' – aleb

+1

Sì, quello è perfetto per Android Studio 2.3.2 – Subho

+0

app/build/output/mapping /release/mapping.txt bc c'era una cartella di compilazione separata che non conteneva il file di mappatura ... – NukeouT

24

ho scoperto che non era stato generato, così ho aggiunto questo per il file delle regole

-printmapping build/outputs/mapping/release/mapping.txt 
+1

Ho scoperto che la stampa è stata annullata da un file di proguard modello che stavo usando! – Boy

+0

ha funzionato e generato tutti i file di output di proguard per me. – j2emanue

33

ho trovato più pulito per configurare proguard per scrivere il file mapping.txt in una posizione esterna all'albero di directory build/, in modo che possa essere controllato più facilmente nel controllo di versione.

Per raggiungere questo obiettivo, mettere questo nel file proguard-rules.pro:

-printmapping mapping.txt 

Questo sarà (probabilmente) posizionarlo nella stessa directory del file proguard-rules.pro. In definitiva, probabilmente vorrai scriverlo nella stessa directory del tuo file APK e con un nome equivalente (che potrebbe includere flavor, tipo di build, ecc.).

Nota: nella mia esperienza, questo è non annullato dal file modello proguard (che è stato suggerito da un commentatore a un altro answer qui).

UPDATE: Se si dispone di più i sapori dei prodotti, allora questa è una soluzione molto migliore: https://stackoverflow.com/a/31116608/444761

+1

Questo è meglio della mia soluzione, come dici tu puoi quindi metterlo sotto controllo di versione. –

+0

perché vorresti controllarne la versione? ne hai bisogno per ogni APK che pubblichi separatamente poiché dipende dalla costruzione. come devi caricare/controllare un tale apk separatamente dalla fonte, in realtà non è necessario controllarlo nel VCS sorgente !? – Denny1989

+0

@ Denny1989 non sai cosa intendi. Costruisco un APK e lo memorizzo al di fuori del controllo di versione. Devo mantenere il file di mappatura da qualche parte. Posso * conservarlo insieme all'APK, ma lo trovo più pulito per controllarlo. Tuttavia, ho solo un APK di rilascio per progetto, quindi YMMV. –

6

enter image description here

Qui è in una foto - lo troverete nella cartella di mappatura:

1

Perché io sono stupido e perdersi anche quando qualcuno mi dice dove il file è:

cd StudioProjects/fooProject 
find . -name "mapping.txt" | xargs less 
8

sto usando la versione Android Studio 2.2.2. Per me è situato nelle seguenti posizioni:

Per eseguire il debug: \app\build\outputs\mapping\debug\mapping.txt

Per diffusione: \app\build\outputs\mapping\release\mapping.txt

4

suo abbastanza tardi per rispondere a questa domanda, ma solo nel caso in cui qualcuno bisogno la mia risposta .

Ubicazione del file di mapping per deobfuscate:

ProGuard salva il file in app app/costruire/uscite/mappatura/GUSTO/release/mapping.txt

Generalmente in modalità di debug non è necessario il file di mapping perché generalmente l'offuscamento è disabilitato. Se non è così, assicurati che nel file build.gradle hai sotto il codice per la variante di debug.

debug { 
    minifyEnabled false 
    debuggable true 
} 

alcuni grattacapi:

file di mapping.txt viene sovrascritto ogni volta che si crea un rilascio costruire con ProGuard, quindi primo ciak di backup del file prima di creare una nuova release. Aiuterà a nascondere la traccia dello stack da una versione precedente della tua app.

A parte che ci sono due modi per offuscare il codice:

1. caricare il file mapping.txt Google Play Console:

Nel pubblicare la tua app su Google Play, è possibile caricare il file mapping.txt per ogni versione del tuo APK. Quindi Google Play decompone automaticamente le tracce dello stack in arrivo dai problemi segnalati dagli utenti per consentirne la revisione nella Google Play Console.

2. Utilizzare locale strumento sdk retrace.sh/retrace.bat:

Alcune volte si desidera eseguire la versione della vostra applicazione (cambiando costruire variante per rilasciare e farlo funzionare) per un controllo incrociato e correggere gli errori in modo che non avvenga in produzione (quando viene rilasciato su Play Store).

Per convertire una traccia di stack offuscata in una leggibile da soli, utilizzare lo script di ritraccia (retrace.bat su Windows; retrace.sh su Mac/Linux).

Si trova nella directory <sdk-root>/tools/proguard/bin/.

<sdk-root> è il luogo in cui sono state installate tutte le librerie e gli sdks di Android.

Lo script prende il file mapping.txt e la traccia dello stack, producendo una nuova traccia di stack leggibile.

sintassi dei comandi:

retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>] 

Ad esempio:

retrace.bat -verbose mapping.txt obfuscated_trace.txt 

preferisco versione locale di offuscare come è piuttosto comodo di pre-check errori di produzione.

Spero che aiuti.

Problemi correlati