【发布时间】:2018-03-25 05:22:14
【问题描述】:
我们的 APK 中有几个依赖库,并启用了 proguard 和 multi dex。 我们有 3 个 dex 文件。 我们打算使 APK 大小尽可能小。
我们目前正在尝试集成“新广告 SDK”。
在集成时,我们发现在包含依赖库后,APK 的大小异常增加。
在示例应用中,库的内存占用约为 ~280 KB。但是当我们在应用中添加相同的依赖项时,我们的 apk 大小会增加 595 KB。他们的proguard规则保留了他们所有的课程。
在 android studio 和 classyshark 中使用 APK 分析器进行调试时,我们观察到 dex 文件中其他包和类(如 facebook、google、glide 等)的大小正在增加。
但是,它们的方法计数保持不变。这只能意味着 proguard 压缩受到损害。因此,APK 大小增加 等于 280 KB (ads sdk) + X [315 KB]。 我们正在努力消除不必要的 APK 大小增加 315 KB。
任何有关投资导致这种异常增加的原因的线索将不胜感激。
请分享在这种情况下可能有帮助的任何 dex 选项/proguard 优化。
更新: 相关 SDK 的 proguard 规则如下所示:
-keep class com.example.** { *; }
-dontwarn com.example.**
谢谢。
【问题讨论】:
-
你是用
consumerProguardFiles 'consumer-proguard-rules.pro'代替默认的吗? -
不,我们不使用 consumerProguardFiles。我们将每个库的 proguard 规则添加到我们的主要 proguard 规则文件中。
-
你能分享你的
build.gradle吗? -
我们的项目及其商业应用程序中有多个库模块(超过 10 个)。不幸的是,我不能分享源代码。但如果您有任何想法/问题,我绝对可以分享更多信息。
-
“他们的 proguard 规则保留了他们所有的课程。”,-我建议您使用该规则的确切内容编辑您的问题。如果您不想透露具体的广告 SDK,可以小心地将真实的包名替换为
com.example。库本身的 aar 文件中是否也有消费者 proguard 文件?如果是这样,也将其发布。
标签: android apk proguard android-multidex classyshark