2016-09-29 71 views
1

標題總結它 - 我的應用程序與裝有和沒有Proguard的裝置上安裝的尺寸相同,並且APK在磁盤上的尺寸相同。我將APK解壓縮了,dex文件約佔其中的72%,所以縮小應該會產生顯着的效果(除非我使用每個包含的依賴項中的每個類和方法,這是不合理的)。我使用標準規則文件加上我自己的一個保留規則。Android Proguard不收縮APK

搖籃文件:

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 

我以爲會有一噸的關於此問題的信息,但據我可以告訴有幾乎沒有。

+1

我不知道你有多少其他依賴關係,但如果你正在做 - 維護所有改造類,它看起來不像你想要最小化。 https://github.com/square/okhttp/issues/2230#issuecomment-236068544 也許你正在儘量減少其他的依賴,但我沒有在這裏看到。 – Emma

+0

還有很多其他的依賴關係。我剛剛從改造文件中複製了這些規則。 – nasch

+0

同意@Emma,你有什麼其他的依賴關係?您需要其他依賴關係的其他規則。 –

回答

2

minifyEnabled true:運行ProGuard的

shrinkResources true:它刪除了ProGuard的標記爲未使用的資源。

從您的DEX中刪除不需要的文件時,您的APK大小也會減少。

+1

'shrinkResources'顯然適用於資源,但ProGuard應該通過刪除未使用的代碼來「縮小」APK。這不是那樣做的。 – nasch

0

使用proguard-android-optimize.txt而不是proguard-android.txt作爲基本proguard配置文件。

第一個配置混淆和優化,而後者只配置混淆。

+0

它與'proguard-android-optimize.txt'大致相同。 – nasch

+0

此外,如果您在任何配置中都有'-dontoptimize',則會阻止優化器運行。 – laalto