Android编译大小优化 APK编译大小优化,这个题目可能有点大,这是我在开发Android应用中遇到的困惑,也因此在网络上进行了各种搜索,却没能找到合适的答案。经过与各种Example Project的比较,摸索得到了一条优化体验,如下:
首先看臃肿APK与优化APK文件的内容比较:
APK内容差异-Android编译大小优化 APK编译大小优化
从图中看到,左侧为优化文件,右侧为臃肿文件,2个文件的关键差异为classes.dex大小差异,再通过apktools解开将classes.dex反转为jar文件,打开看差异,如图:
classes.dex差异-Android小大优化APK大小差异
再来看android包内容:
android包内容-Android大小优化 APK大小优化
从上图可以看出,差异来自臃肿文件多了一个android.suport.v4包,为什么会编译生成这个包?为什么会有如此差异?原因在.classpath文件。
在Eclipse的工程中通常会自动生成一个.classpath文件,大致内容如下:
臃肿Android工程的.classpath:
[php]<?xml version="1.0" encoding="UTF-8"?>
[/php]
大小优化的Android工程的.classpath:
[php]<?xml version="1.0" encoding="UTF-8"?>
[/php]
通过比对得知,其差异仅在第6行的exported="true",这就是在生成APK的classes.dex文件中的android.support.v4文件。这个设置,其实来自Project的"Build Path",如图:
Build Path-Android大小优化 APK大小优化
从以上种种,得出结论,要将编译结果最小化,只需在Build Path中不要勾选不需要导出的包即可,一般只需要勾选Android Dependencies即可。