1.移除modules_to_check:
修改方法:alps/build/core/main.mk
files: prebuilt \
$(modules_to_install) \
$(modules_to_check) \
$(INSTALLED_ANDROID_INFO_TXT_TARGET)
修改为:
files: prebuilt \
$(modules_to_install) \
$(INSTALLED_ANDROID_INFO_TXT_TARGET)
解释:
Android默认是所有模块都会编译的(不管需不需要),这个有些冗余,可以通过修改编译系统不编译哪些没有用到的模块;
修改后Android编译时间降低16%~18% (数据仅供参考);
此种方法google已在4.3版本默认应用了;
仅对new有效果,但是由于没有编译没有用到的模块,不仅节省时间还节省磁盘空间(节省out目录下的中间文件)。
2.开始ccache:
2.1设置ccache大小(这一步一定要做!!)
设置cache大小,一个codebase需要大约5G的空间,如果你的编译环境有5个codebase在使用,那么需要25G的空间。设置小了还会引起编译时间延长!!
[1].GB版本:prebuilt/linux-x86/ccache/ccache -M 25G
[2].JB版本:prebuilts/misc/linux-x86/ccache/ccache -M 25G
2.2开启ccache
[1].命令行增加USE_CCACHE=1即可:./mk -o=USE_CCACHE=1 n。如果是user版本开启ccahce的话,可以这样:
./mk -o=USE_CCACHE=1,TARGET_BUILD_VARIANT=user n。
[2].建议:添加到环境变量(其他方式亦可):修改alps/makeMtk,在#!/usr/bin/perl之后新建一行,填写:
$ENV{"USE_CCACHE"} = 1;
注意:
第1次编译会花多一点时间建立cache,之后即可享受ccache带来的好处,降低所有使用gcc的编译时间,大约25%~30%;
可以通过ccache -s查看cache信息,如果满了可以用ccache -C清除所有。在满了状态下编译新codebase,将会旧的那个清除,这回降低效率,所以cache一定要设置正确;
对mm/new/remake都有效果。
以上两种方法优化后大约可降低50%的编译时间,也就是说优化前需要1小时编译时间,优化后半小时就完成了。
另修改环境变量的方法:
添加环境变量:
1.$ export USE_CCACHE=1
#建立缓存目录
2.$ export CCACHE_DIR=~/.ccache
设置缓存大小:
3.$cd alps/
4.$prebuilt/linux-x86/ccache/ccache -M 20G