前几天我正在从我正在开发的应用程序中检查“应用程序信息”,令我惊讶的是我发现大量的 Mb 被用作“缓存”(该应用程序还没有下载任何内容,它只是一个小样)。起初我以为我可能是我添加的一些沉重的库(壁画..)所以我决定创建一个空白项目来尝试找出问题所在。
我尝试了 2 种情况: Lollipop 前和 Lollipop 。有了这个,我发现他们处理“数据”的方式有些不同,但整体 apk 大小是一样的。虽然在这里,在 Lollipop 之前(4.4.4)中, Lollipop 中几乎没有“缓存”(第一张图片)......好吧,8 mb 的“缓存”。
所有这些还不够,因为我在 Lollipop 及以上版本中开发的其他应用程序的“缓存”要少得多。我开始思考可能有什么不同,最后我想我找到了一些东西,gradle 版本!
使用 gradle 1.5 构建的项目具有较小的 apk 大小并且几乎没有“缓存”( Lollipop 和 Lollipop 预制)
有什么我遗漏的吗? 为什么“缓存”大小突然增加。
在使用最新的 gradle 版本时有什么办法可以避免这种情况吗?
最佳答案
Instant Run 提供应用程序的增量块,反射(reflect)您对代码所做的更改。这些东西仍然需要由您的应用程序加载,因此他们显然将该信息放在某个位置,该位置被视为“缓存”( getCacheDir()
?)。
同样,您的应用的主 APK 本身也会大一些,因为它必须包含一大块代码,知道如何加载这些动态变化的位。
如果您需要测量这些值,请禁用 Instant Run,或运行发布版本(自动为非 Instant Run)。
关于android - gradle v1.x 与 v2.x 之间的巨大 Apk 差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37332877/