android app启动慢分析

最近将gradle和android studio都升级到2.1,instant run功能确实好用,不过在测试的时候把缓存清理后,点击桌面launcher特别慢。

开始怀疑是引入视频、浏览器sdk导致的,打log看了下发现sdk初始化耗时很小,而且点击桌面icon,过了很久application的log才开始打,想了很久,经验里没遇到这种情况,那就看下全部log吧。

 log开关打开后,发现大量的art log,好家伙,总算明白了,运行时才开始做art,

instant run之所以快,是因为它将dex的粒度割的特别细,每个project或者每个库一个dex,这些dex用dexclassloader加载的时候art运行时(android系统大于等于5.0)会对它们做优化,这个优化是比较耗时的,价值dex有多,所以才出现了点击二十多秒才开始初始化application。

为了验证上面的推论,把apk包解压后有个instant-run.zip

解压后里面包含个个类库的dex文件


你可能感兴趣的:(android)