2017-02-10 2 views
1

Wenn Sie sich darauf vorbereiten, die Android App zu veröffentlichen, verwenden wir Proguard, um den Code zu verschleiern, der die App beschädigen könnte.Einfacher Modus für die Verwendung von Proguard in Android

Sobald also ein Fehler auftritt, modifizieren wir diesen und Build-Release-Test immer wieder, gibt es einen einfachen Weg das zu tun?

Ist es auch möglich, den verschleierten Code direkt in Android Stuido zu sehen?

+0

Das ist nicht das, was Sie fragen, aber was ist mit der dump.txt, same.txt, mapping.txt, usage.txt –

Antwort

3

Retracing Retracing ist, was den Stack-Trace für Menschen lesbare durch verschleierte Namen ersetzt die Gebrauchten in Originalquelle verschleiert macht. Um zurückverfolgen zu können, sollten Sie sicherstellen, dass Sie mapping.txt für jeden Build speichern, den Sie testen oder an jemanden senden möchten. Mapping ist für jeden Build-Prozess einzigartig.

Mapping kann es für zurückzuverfolgen, in

appModule/build/outputs/mapping/release/mapping.txt 

zu finden ist ein praktisches Werkzeug proguardgui genannt, in

gefunden
$ANDROID_HOME/tools/proguard/bin/proguardgui.sh 

(*.sh für UNIX-Systeme, für andere Plattformen unterschiedliche Erweiterung erwarten).

Wählen Sie "ReTrace", fügen Sie eine Mapping.txt hinzu (stellen Sie sicher, dass mapping.txt verwendet wurde, das für diesen APK-Build generiert wurde) und fügen Sie den verschleierten Stack-Trace in das Fenster ein. Drücken Sie "ReTrace" in der unteren rechten Ecke und Sie sollten diese Stack-Spur mit entschleierten Namen bekommen.

Hier ist ein Screenshot mit Abtastwerteingang ich im Internet gefunden enter image description here

Decompiling

Auch ist es möglich, den verschleierten Code direkt in Android Stuido zu sehen?

Nein, aber Sie könnten den Code sehen, wenn Sie dex in jar konvertieren und dekompilieren.

dex2jar myapp.apk 
jd-gui myapp-dex2jar.jar 

dex2jar github Seite.

jd-gui von github Seite.

Practices ich folgen

Was funktioniert für mich ist, wenn ich hinzufügen, eine Bibliothek, die ich eine proguard Config für eine Bibliothek hinzufügen (in der Regel durch Bibliothek Entwickler zur Verfügung gestellt).

Es gibt auch ein Projekt namens android-proguard-snippets, dachte, dass sie meist veraltet sind, also stellen Sie sicher, zuerst von Bibliothek Entwickler zu überprüfen.

Für die einfache Verwaltung, spalte ich die Proguard-Konfiguration für jede Bibliothek in einer separaten Datei. Unten ist ein Ausschnitt von einem meiner Builds.gradle buildTypes für die Freigabe

proguardFile getDefaultProguardFile('proguard-android.txt') 
proguardFile 'proguard-dart.pro' 
proguardFile 'proguard-parceler.pro' 
proguardFile 'proguard-retrolambda.pro' 
proguardFile 'proguard-rules.pro' 
proguardFile 'proguard-rx-java.pro' 
proguardFile 'proguard-support-design.pro' 
proguardFile 'proguard-support-v7-appcompat.pro' 

Objekte Für in Firebase Serialisierung verwendet, fügen @Keep Anmerkung.

Für Felder, die von Gson verwendet werden, fügen Sie @SerializedName Anmerkungen hinzu oder verwenden Sie @Keep für ein Objekt.

Immer wenn ich Reflektion verwende (oder Animatoren, die technisch identisch sind), stelle ich sicher, dass ich proguard-Regel hinzufüge, um den Code, auf den durch Reflektion zugegriffen wird, direkt nach dem Schreiben eines solchen Codes zu behalten. Am Ende wird es wahrscheinlich nichts zu reparieren geben.