Android Proguard不会缩小APK文件

3

标题已经概括了问题 - 我的应用无论是使用还是不使用Proguard,在设备上安装的大小都是相同的,APK在磁盘上的大小也相同。我解压了APK文件,发现dex文件占了大约72%的空间,所以缩小代码体积应该会有显著的影响(除非我使用了每个依赖项中的每个类和方法,这是不可行的)。我使用标准规则文件加上自己带有少量Keep规则的文件。

Gradle文件:

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
我不确定你有多少其他依赖项,但如果你正在保留所有的Retrofit类,那么它似乎并不像你在尝试最小化。或许你正在为我没有看到的其他依赖项进行最小化。 - Emma
还有很多其他的依赖关系。我只是从Retrofit文档中复制了这些规则。 - nasch
同意@Emma的观点,你还有哪些依赖关系?你需要其他规则来处理其他依赖项。 - ישו אוהב אותך
1
我为什么需要其他依赖项的规则?除非规则另有说明,否则ProGuard不会默认删除未使用的代码吗? - nasch
2个回答

2

minifyEnabled true: 启用此选项将运行ProGuard。

shrinkResources true: 启用此选项将删除被ProGuard标记为未使用的资源文件。

在从DEX中删除不需要的文件的同时,你的APK大小也会减小。


1
shrinkResources是用于资源的,显然,但ProGuard应该通过删除未使用的代码来"减小"APK文件。但它没有做到这一点。 - nasch

0

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

前者配置混淆和优化,而后者仅配置混淆。


它的大小与 proguard-android-optimize.txt 差不多。 - nasch
另外,如果您在任何配置文件中使用了“-dontoptimize”标志,那么将会阻止优化器运行。 - laalto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接