2014-09-08 13 views
96

In Android-Studio, wo sind die Progard-Mapping-Dateien nach dem Erstellen einer signierten APK generiert?Android Studio, wo ist die Proguard Mapping-Datei

Ich bin mir nicht sicher, ob es nicht funktioniert oder wenn ich nur den Dateipfad vergessen, und meine obligatorische Google/Suche Stackoverflow antwortete nicht dieses

+0

es ist hier offiziell erklärt https://firebase.google.com/docs/crash/android#uploading_proguard_mapping_files_manual –

+2

@JayakrishnanPM froh zu sehen, dass Google 3 Jahre später dazu kam. – CQM

Antwort

132

Es soll bei build/outputs/proguard/release/mapping.txt in dem Anwendungsmodul des Verzeichnis befindet . In der neuesten Version von ProGuard und Android Studio befindet sich die Datei unter build/outputs/mapping/release/mapping.txt.

+1

Der neue Pfad ist Build/Ausgänge/Mapping/Release/Mapping.txt –

63

Für mich sind sie bei ‚build/Ausgänge/Kartierungs-/release‘

+11

'Build/Ausgänge/Mapping/Release/Mapping.txt' – aleb

+1

Ja, das ist perfekt für Android Studio 2.3.2 – Subho

+0

App/Build/Ausgänge/Mapping /release/mapping.txt bc Es gab einen separaten Build-Ordner, der die Mapping-Datei nicht enthielt ... – NukeouT

24

Ich fand, dass es nicht erzeugt wurde, so fügte ich dies die Regeln

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

Ich fand, dass printmapping von einer Template-Proguard-Datei überschrieben wurde, die ich benutzte! – Boy

+0

das funktionierte und generierte alle Progard-Ausgabedateien für mich. – j2emanue

33

ich es gefunden Reiniger-Datei Konfigurieren von proguard, um die Datei "mapping.txt" an einen Speicherort außerhalb des Verzeichnisbaums build/ zu schreiben, damit sie einfacher in die Versionskontrolle eingecheckt werden kann.

Um dies zu erreichen, setzen Sie diese in Ihrer proguard-rules.pro Datei:

-printmapping mapping.txt 

Dies wird (wahrscheinlich) in demselben Verzeichnis platzieren, wie Ihre proguard-rules.pro Datei. Letztendlich möchten Sie es wahrscheinlich in dasselbe Verzeichnis wie Ihre APK-Datei schreiben und mit einem entsprechenden Namen versehen (der ua Flavor, Build-Typ usw. enthält).

Hinweis: Nach meiner Erfahrung ist dies nicht durch die proguard Vorlagendatei außer Kraft gesetzt (die von einem Kommentator auf einem anderen answer hier vorgeschlagen wurden).

AKTUALISIERUNG: Wenn Sie über mehrere Produkt Aromen haben, dann ist dies eine viel bessere Lösung: https://stackoverflow.com/a/31116608/444761

+1

Dies ist besser als meine Lösung, wie Sie sagen, Sie können es dann unter Versionskontrolle platzieren. –

+0

Warum möchten Sie diese Version versionieren? Du benötigst es für jedes APK, das du separat veröffentlichst, da es Build-abhängig ist. Da Sie eine solche apk separat von der Quelle hochladen/einchecken müssen, ist es eigentlich nicht nötig, sie in der Quelle VCS zu überprüfen !? – Denny1989

+0

@ Denny1989 nicht sicher, was du meinst. Ich baue ein APK und speichere es außerhalb der Versionskontrolle. Ich muss die Mapping-Datei irgendwo aufbewahren. Ich könnte es neben der APK speichern, aber ich finde es sauberer, es zu kontrollieren. Allerdings habe ich nur ein Release-APK pro Projekt, also YMMV. –

6

enter image description here

hier ist es in einem Bild - Sie können es in der Mapping Ordner finden:

1

Weil ich dumm bin und sogar verloren gehen, wenn jemand mir sagt, wo die Datei ist:

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

I Version verwenden, Android Studio 2.2.2. Für mich ist es in den folgenden Orten befinden:

für debug: \app\build\outputs\mapping\debug\mapping.txt

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

4

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

Lage von Mapping-Datei deobfuscate:

ProGuard speichert die Datei in der App app/build/Ausgänge/Kartierungs-/GESCHMACK/release/mapping.txt

Im Allgemeinen benötigen Sie im Debug-Modus die Mapping-Datei nicht, da die Verschleierung generell deaktiviert ist. Wenn dies nicht der Fall ist, dann stellen Sie sicher, dass Sie in der Datei build.gradle unter Code für die Debug-Variante haben.

debug { 
    minifyEnabled false 
    debuggable true 
} 

Einige Gotchas:

mapping.txt Datei wird jedes Mal, wenn ein Release mit ProGuard bauen erstellen überschrieben, so erste Klappe Backup der Datei, bevor Sie eine neue Version zu erstellen. Es wird helfen, Stack-Trace von einer älteren Version Ihrer App zu verschleiern.

von Apart, dass es zwei Möglichkeiten, um Ihren Code zu verschleiern:

1. Ihre mapping.txt Datei-Upload zu Google Play Console:

Wenn Ihre App bei Google die Veröffentlichung spielen, können Sie laden Die Datei "mapping.txt" für jede Version Ihres APK. Dann entblößt Google Play eingehende Stack-Traces von Nutzern gemeldeten Problemen, damit Sie sie in der Google Play Console überprüfen können.

2. Verwenden Sie lokale sdk Werkzeug retrace.sh/retrace.bat:

Manchmal möchte man die Release-Version Ihrer Anwendung ausgeführt werden soll (nach der Variante ändert bauen sie zu lösen und ausgeführt wird), um die Verschreibungs und beheben Sie die Fehler so, dass es in der Produktion nicht passiert (wenn es zum Spielen-Laden freigegeben wird).

Um einen verschleierten Stack-Trace selbst in einen lesbaren umzuwandeln, verwenden Sie das Script retrace (retrace.bat unter Windows; retrace.sh unter Mac/Linux).

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

<sdk-root> ist der Ort, wo alle Android-Bibliotheken und SDKs installiert wurden.

Das Skript übernimmt die Datei mapping.txt und den Stack-Trace und erzeugt einen neuen, lesbaren Stack-Trace.

Befehl Syntax:

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

Zum Beispiel:

retrace.bat -verbose mapping.txt obfuscated_trace.txt 

ziehe ich es lokale Version von Verschleierung als recht praktisch ist, Fehler in der Produktion vorab zu überprüfen.

Ich hoffe es hilft.

Verwandte Themen