2016-09-29 4 views
1

Titel fasst es zusammen - meine App ist die gleiche Größe auf dem Gerät mit und ohne Proguard installiert und die APK ist die gleiche Größe auf der Festplatte. Ich entpackte die APK und die Dex-Dateien machen etwa 72% davon aus, daher sollte das Minimieren einen signifikanten Effekt haben (es sei denn, ich verwende jede Klasse und Methode aus jeder Abhängigkeit, die ich eingeschlossen habe, was nicht plausibel ist). Ich benutze die Standard-Regeldatei und eine eigene mit einigen wenigen Regeln.Android Proguard schrumpft nicht APK

Gradle Datei:

release { 
      signingConfig signingConfigs.release 
      zipAlignEnabled true 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" 
     } 

proguard-rules.pro:

-dontwarn retrofit.** 
-keep class retrofit.** { *; } 
-keepattributes Signature 
-keepattributes Exceptions 

Ich dachte, es würde zu diesem Problem eine Unmenge an Informationen, aber soweit ich sagen kann, es gibt fast nichts.

+1

Ich bin mir nicht sicher, wie viele andere Abhängigkeiten Sie haben, aber wenn Sie tun - halten Sie alle Retrofit-Klassen, es sieht nicht so aus, als ob Sie versuchen zu minimieren. https://github.com/square/okhttp/issues/2230#issuecomment-236068544 Vielleicht minimieren Sie für andere Abhängigkeiten, die ich hier jedoch nicht sehe. – Emma

+0

Es gibt viele andere Abhängigkeiten. Ich habe diese Regeln nur aus der Nachrüstdokumentation kopiert. – nasch

+0

stimme mit @Emma überein, welche anderen Abhängigkeiten hast du? Sie benötigen andere Regeln für die anderen Abhängigkeiten. –

Antwort

2

minifyEnabled true: es läuft ProGuard

shrinkResources true: es entfernt Ressourcen, die ProGuard als nicht verwendet markiert.

Während Sie unerwünschte Dateien von Ihrem DEX entfernen, wird auch Ihre APK-Größe reduziert.

+1

'shrinkResources' ist natürlich für Ressourcen gedacht, aber ProGuard soll die APK" minimieren ", indem nicht verwendeter Code entfernt wird. Es tut das nicht. – nasch

0

Verwenden Sie proguard-android-optimize.txt und nicht proguard-android.txt als Basisproguard-Konfigurationsdatei.

Der erste konfiguriert sowohl die Verschleierung als auch die Optimierung, während letzterer nur die Verschleierung konfiguriert.

+0

Es ist ungefähr gleich groß mit 'proguard-android-optimize.txt'. – nasch

+0

Wenn Sie in einer der Konfigurationen "-dontoptimize" haben, verhindert dies, dass das Optimierungsprogramm ausgeführt wird. – laalto

Verwandte Themen