【问题标题】:Android Proguard doesn't shrink APKAndroid Proguard 不会缩小 APK
【发布时间】:2016-09-29 23:16:14
【问题描述】:

标题总结了这一点 - 我的应用在安装和不安装 Proguard 的设备上的大小相同,并且 APK 在磁盘上的大小相同。我解压了 APK,dex 文件约占其中的 72%,因此缩小应该会产生显着的效果(除非我使用了我包含的每个依赖项中的每个类和方法,这是不合理的)。我正在使用标准规则文件加上我自己的一个和一些保留规则。

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

我以为会有很多关于这个问题的信息,但据我所知,几乎没有。

【问题讨论】:

  • 我不确定您还有多少其他依赖项,但如果您正在执行 -keep 所有改造类,看起来您并没有试图最小化。 github.com/square/okhttp/issues/2230#issuecomment-236068544 不过,也许您正在最小化我在这里看不到的其他依赖项。
  • 还有很多其他的依赖。我只是从改造文档中复制了这些规则。
  • 同意@Emma,您还有哪些其他依赖项?您需要其他依赖项的其他规则。
  • 为什么我需要其他依赖的规则?除非规则另有规定,否则 ProGuard 不会默认删除未使用的代码吗?

标签: android android-proguard


【解决方案1】:

minifyEnabled true:它运行 ProGuard

shrinkResources true:它会删除 ProGuard 标记为未使用的资源。

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

【讨论】:

  • shrinkResources 显然是为了资源,但 ProGuard 应该通过删除未使用的代码来“缩小”APK。它没有这样做。
【解决方案2】:

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

第一个配置混淆和优化,而后者只配置混淆。

【讨论】:

  • proguard-android-optimize.txt差不多大。
  • 另外,如果您在任何配置中有-dontoptimize,则会阻止优化器运行。
猜你喜欢
  • 2017-06-11
  • 1970-01-01
  • 2015-02-25
  • 2018-04-16
  • 2016-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多