2016-05-19 54 views
4

有一天,我从一个正在开发的应用程序中检查“App Info”,而我惊讶地发现有大量的Mb被用作“缓存” (应用程序还没有下载任何内容,它只是一个模型)。起初我以为我可能会加入一些沉重的图书馆(壁画..),所以我决定创建一个空白的项目,试图找出问题所在。Gradle v1.x vs v2.x之间巨大的差异

我试过2种情况:前棒棒糖和棒棒糖。有了这个,我发现他们处理“数据”的方式有些不同,但是整体apk大小是一样的。尽管在这里,在棒棒糖(4.4.4)中,棒棒糖中几乎没有“缓存”(FIRST IMAGE)......以及8MB的“缓存”。

lollipop vs pre-lollipop - gradle 2.1

所有这一切是不够的,因为我已经在开发棒棒糖及以上的其他应用程序有办法少“缓存”。我开始考虑可能是什么区别,最后我想我已经找到了一些东西,gradle版本!

lollipop vs pre-lollipop - gradle 1.5

该项目建设有gradle这个1.5具有更小的尺寸APK,几乎没有“缓存”(包括棒棒糖和预棒棒糖)
有我丢失的东西?为什么“缓存”大小突然增加。
在使用最新的gradle版本时,有什么方法可以避免这种情况吗?

+1

您使用的是Android Studio吗?如果是这样,请尝试再次运行您的测试,使用Android插件for Gradle 2.x,并使用Instant Run启用和禁用,以比较两种情况。我的猜测是你所看到的是即时运行的效果,而这并不能反映你的实际生产应用程序的行为。 – CommonsWare

+0

**你绝对正确!!! **我认为这可能是问题,但没有检查:P。 **谢谢** – iroyo

回答

1

即时运行会发送增量块的应用程序,反映您对代码所做的更改。这些东西仍然需要由您的应用程序加载,所以他们显然会将这些信息放在某个位置,并将其计入“缓存”(getCacheDir()?)。

同样,你的应用程序的主APK本身会更大,因为它必须包含一段代码,它知道如何加载这些动态变化的位。

如果您需要测量这些值,请禁用即时运行或运行发布版本(该版本会自动为非即时运行)。

相关问题