web-dev-qa-db-de.com

Wo speichert Android Studio die ProGuard Mapping-Datei?

Wo werden in Android Studio die ProGuard-Zuordnungsdateien nach dem Kompilieren einer signierten APK erstellt?

Ich bin nicht sicher, ob es nicht funktioniert oder ob ich nur den Dateipfad vergessen habe und meine obligatorische Google/Stack Overflow-Suche dies nicht beantwortet hat

155
CQM

Es sollte sich unter build/outputs/proguard/release/mapping.txt Im Verzeichnis Ihres Anwendungsmoduls befinden.

In der neuesten Version von ProGuard und Android Studio) befindet sich die Datei unter build/outputs/mapping/release/mapping.txt.

232
Scott Barta

Für mich sind sie bei 'build/outputs/mapping/release'

71
Tom

Ich fand es sauberer, proguard so zu konfigurieren, dass die Datei mapping.txt an einen Speicherort außerhalb des Verzeichnisbaums build/ Geschrieben wird, damit es bequemer in die Versionskontrolle eingecheckt werden kann.

Fügen Sie dazu Folgendes in Ihre proguard-rules.pro - Datei ein:

-printmapping mapping.txt

Dadurch wird es (höchstwahrscheinlich) im selben Verzeichnis wie Ihre proguard-rules.pro - Datei abgelegt. Letztendlich möchten Sie es wahrscheinlich in dasselbe Verzeichnis wie Ihre APK-Datei und mit einem äquivalenten Namen (einschließlich Flavor, Build-Typ usw.) schreiben.

Hinweis: Meiner Erfahrung nach wird dies nicht von der Proguard-Vorlagendatei außer Kraft gesetzt (was von einem Kommentator einem anderen vorgeschlagen wurde Antwort Hier).

UPDATE: Wenn Sie mehrere Produktvarianten haben, ist dies eine viel bessere Lösung: https://stackoverflow.com/a/31116608/444761

37
Mark

Ich stellte fest, dass es nicht generiert wurde, und fügte dies der Regeldatei hinzu

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

Ich verwende Version Android Studio 2.2.2. Für mich befindet es sich an folgenden Orten:

Zum Debuggen: \app\build\outputs\mapping\debug\mapping.txt

Zur Veröffentlichung: \app\build\outputs\mapping\release\mapping.txt

12
Faisal Shaikh

Es ist ziemlich spät, diese Frage zu beantworten, aber nur für den Fall, dass jemand meine Antwort braucht.

Speicherort der Zuordnungsdatei, die entfernt werden soll:

ProGuard speichert die Datei in der App app/build/output/mapping/FLAVOUR/release/mapping.txt

Im Debug-Modus benötigen Sie die Zuordnungsdatei in der Regel nicht, da die Verschleierung in der Regel deaktiviert ist. Wenn dies nicht der Fall ist, stellen Sie sicher, dass Sie in der Datei build.gradle den folgenden Code für die Debug-Variante haben.

debug {
    minifyEnabled false
    debuggable true
}

Einige Fallstricke:

die Datei mapping.txt wird bei jedem Erstellen eines Release-Builds mit ProGuard überschrieben. Erstellen Sie daher zuerst eine Sicherungskopie dieser Datei, bevor Sie ein neues Release erstellen. Es wird helfen, Stack-Trace von einer älteren Version Ihrer App zu verschleiern.

Abgesehen davon gibt es zwei Möglichkeiten, Ihren Code zu verschleiern:

1. Laden Sie Ihre mapping.txt-Datei auf Google Play Console hoch:

Wenn Sie Ihre App auf Google Play veröffentlichen, können Sie die Datei mapping.txt für jede Version Ihres APK hochladen. Anschließend entfernt Google Play eingehende Stack-Traces von von Nutzern gemeldeten Problemen, sodass Sie diese in der Google Play-Konsole überprüfen können.

2. Verwenden Sie das lokale SDK-Tool retrace.sh/retrace.bat:

Manchmal möchten Sie die Release-Version Ihrer App ausführen (indem Sie die Build-Variante in "Release" ändern und ausführen), um die Fehler zu überprüfen und zu beheben, damit sie in der Produktion nicht auftreten (wenn sie für den Play Store freigegeben werden).

Verwenden Sie das Skript retrace (retrace.bat unter Windows; retrace.sh unter Mac/Linux), um einen verschleierten Stack-Trace selbst in einen lesbaren zu konvertieren.

Es befindet sich im <sdk-root>/tools/proguard/bin/ Verzeichnis.

<sdk-root> ist der Ort, an dem alle Android Bibliotheken und sdks installiert wurden.

Das Skript verwendet die Datei mapping.txt und Ihren Stack-Trace und erstellt einen neuen, lesbaren Stack-Trace.

Befehlssyntax:

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

Zum Beispiel:

retrace.bat -verbose mapping.txt obfuscated_trace.txt

Ich bevorzuge die lokale Version der Verschleierung, da dies sehr praktisch ist, um Produktionsfehler vorab zu überprüfen.

Ich hoffe, es hilft.

12
WitVault

enter image description here

Hier ist es in einem Bild - Sie finden es im Mapping-Ordner:

9
Simon

Weil ich dumm bin und mich verliere, auch wenn mir jemand sagt, wo die Datei ist:

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