2016-09-29 73 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