web-dev-qa-db-fra.com

Où Android Studio enregistre-t-il le fichier de mappage ProGuard?

Dans Android Studio, où sont générés les fichiers de mappage ProGuard après la compilation d'un fichier APK signé?

Je ne sais pas si cela ne fonctionne pas ou si j'ai simplement oublié le chemin d'accès au fichier, et ma recherche obligatoire Google/Stack Overflow n'a pas répondu à cette question.

155
CQM

Il doit être situé à l'adresse build/outputs/proguard/release/mapping.txt dans le répertoire de votre module d'application.

Dans la dernière version de ProGuard et de Android Studio, le fichier se trouve dans build/outputs/mapping/release/mapping.txt.

232
Scott Barta

Pour moi, ils sont à 'build/outputs/mapping/release'

71
Tom

J'ai trouvé plus propre de configurer proguard pour écrire le fichier mapping.txt dans un emplacement situé en dehors de l'arborescence de répertoires build/, afin qu'il soit plus facilement archivé dans le contrôle de version.

Pour ce faire, mettez ceci dans votre fichier proguard-rules.pro:

-printmapping mapping.txt

Cela (le plus probable) le placera dans le même répertoire que votre fichier proguard-rules.pro. En fin de compte, vous voudrez probablement l'écrire dans le même répertoire que votre fichier APK et avec un nom équivalent (qui peut inclure une saveur, un type de construction, etc.).

Note: dans mon expérience, ceci est pas annulé par le fichier modèle de proguard (suggéré par un commentateur à un autre réponse ici).

MISE À JOUR: Si vous avez plusieurs types de produits, il s'agit d'une bien meilleure solution: https://stackoverflow.com/a/31116608/444761

37
Mark

J'ai constaté qu'il n'était pas généré, alors j'ai ajouté ceci au fichier de règles

-printmapping build/outputs/mapping/release/mapping.txt
35
Clive Jefferies

J'utilise la version Android Studio 2.2.2. Pour moi, il est situé dans les endroits suivants:

Pour le débogage: \app\build\outputs\mapping\debug\mapping.txt

Pour publication: \app\build\outputs\mapping\release\mapping.txt

12
Faisal Shaikh

Il est assez tard pour répondre à cette question, mais au cas où quelqu'un aurait besoin de ma réponse.

Emplacement du fichier de mappage à désobfuser:

ProGuard enregistre le fichier dans l'application app/build/output/mapping/FLAVOR/release/mapping.txt

Généralement, en mode débogage, vous n'avez pas besoin du fichier de mappage, car l'obscurcissement est désactivé. Si ce n'est pas le cas, assurez-vous que dans le fichier build.gradle vous avez le code ci-dessous pour la variante de débogage.

debug {
    minifyEnabled false
    debuggable true
}

Quelques pièges:

le fichier mapping.txt est écrasé chaque fois que vous créez une version validée avec ProGuard. Par conséquent, commencez par effectuer une sauvegarde de ce fichier avant de créer une nouvelle version. Cela aidera à tracer une trace de pile obfusquée à partir d’une version antérieure de votre application.

En dehors de cela, il y a deux façons d’obscurcir votre code:

1. Téléchargez votre fichier mapping.txt sur la console Google Play:

Lors de la publication de votre application sur Google Play, vous pouvez télécharger le fichier mapping.txt pour chaque version de votre APK. Ensuite, Google Play désobfude les traces de pile entrantes provenant de problèmes signalés par les utilisateurs afin que vous puissiez les consulter dans la console Google Play.

2. Utilisez l’outil sdk local retrace.sh/retrace.bat:

Parfois, vous souhaitez exécuter la version finale de votre application (en changeant la variante de construction en version et en l'exécutant) pour vérifier et corriger les erreurs afin qu'elles ne se produisent pas en production (lorsqu'elles sont publiées dans le magasin de jeux).

Pour convertir vous-même une trace de pile obfusquée en trace lisible, utilisez le script retrace (retrace.bat sous Windows; retrace.sh sous Mac/Linux).

Il se trouve dans le répertoire <sdk-root>/tools/proguard/bin/.

<sdk-root> est l'endroit où toutes vos Android bibliothèques et sdks ont été installés.

Le script utilise le fichier mapping.txt et votre trace de pile pour générer une nouvelle trace lisible.

Syntaxe de la commande:

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

Par exemple:

retrace.bat -verbose mapping.txt obfuscated_trace.txt

Je préfère la version locale de l'obscurcissement, ce qui est assez pratique pour vérifier préalablement les erreurs de production.

J'espère que ça aide.

12
WitVault

enter image description here

La voici dans une image - vous la trouverez dans le dossier de cartographie:

9
Simon

Parce que je suis idiot et que je me perds même quand quelqu'un me dit où se trouve le fichier:

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