Wo werden in Android Studio die ProGuard-Zuordnungsdateien generiert, nachdem eine signierte APK kompiliert wurde?
Ich bin mir nicht sicher, ob es nicht funktioniert oder ob ich den Dateipfad einfach vergessen habe, und meine obligatorische Google / Stack Overflow-Suche hat dies nicht beantwortet
Antworten:
Es sollte sich
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
.quelle
/app/build/outputs/mapping/brandExampleEnvProductionRelease/mapping.txt
/app/build/outputs/mapping/brandExampleEnvIntegrationBeta/mapping.txt
sind die neuen Wege.Für mich sind sie bei
'build/outputs/mapping/release'
quelle
Ich fand es sauberer, proguard so zu konfigurieren, dass die Mapping.txt-Datei an einen Speicherort außerhalb des
build/
Verzeichnisbaums geschrieben wird, damit sie bequemer in die Versionskontrolle eingecheckt werden kann.Um dies zu erreichen, fügen Sie dies in Ihre
proguard-rules.pro
Datei ein: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 entsprechenden Namen schreiben (einschließlich Flavour, Build-Typ usw.).Hinweis: Nach meiner Erfahrung wird dies nicht durch die Proguard-Vorlagendatei (die von einem Kommentator zu einer anderen Antwort hier vorgeschlagen wurde) außer Kraft gesetzt .
UPDATE: Wenn Sie mehrere Produktvarianten haben, ist dies eine viel bessere Lösung: https://stackoverflow.com/a/31116608/444761
quelle
Ich habe festgestellt, dass es nicht generiert wurde, also habe ich dies der Regeldatei hinzugefügt
quelle
Es ist ziemlich spät, diese Frage zu beantworten, aber nur für den Fall, dass jemand meine Antwort braucht.
Speicherort der zu deobfuscierenden Zuordnungsdatei:
Im Debug-Modus benötigen Sie die Mapping-Datei im Allgemeinen nicht, da die Verschleierung im Allgemeinen 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.
Einige Fallstricke:
Die Mapping.txt-Datei wird bei jedem Erstellen eines Release-Builds mit ProGuard überschrieben. Erstellen Sie daher zuerst eine Sicherungskopie dieser Datei, bevor Sie ein neues Release erstellen. Dies hilft dabei, die Stapelverfolgung 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 in die Google Play Console hoch:
Wenn Sie Ihre App auf Google Play veröffentlichen, können Sie die Datei maps.txt für jede Version Ihrer APK hochladen. Anschließend deaktiviert Google Play eingehende Stack-Traces von vom Benutzer gemeldeten Problemen, sodass Sie sie 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 nicht in der Produktion auftreten (wenn sie im Play-Store veröffentlicht werden).
Verwenden Sie das Retrace-Skript ( 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 Mapping.txt-Datei und Ihren Stack-Trace und erstellt einen neuen, lesbaren Stack-Trace.
Befehlssyntax:
Beispielsweise:
Ich bevorzuge die lokale Version der Verschleierung, da dies sehr praktisch ist, um Produktionsfehler vorab zu überprüfen.
Ich hoffe, es hilft.
quelle
Ich verwende die 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
quelle
Hier ist es in einem Bild - Sie finden es im Mapping-Ordner:
quelle
Weil ich dumm bin und mich verliere, selbst wenn mir jemand sagt, wo sich die Datei befindet:
quelle