android编译速度提高一半的方法
[SOLUTION]
1. 移除modules_to_check
(1). android默认是所有模块都会编译的(不管需不需要),这个有些冗余,可以通过修改编译系统不编译哪些没有用到的模块
(2). 修改方法: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)
(3). 修改后Android编译时间降低16%~18% (数据仅供参考)
(4). 此种方法google已在4.3版本默认应用了。
(5). 仅对new有效果,但是由于没有编译没有用到的模块,不仅节省时间还节省磁盘空间(节省out目录下的中间文件)。
2. 开启ccache
(1). ccache是google默认就存放在codebase的工具,对于ccache的功能可以到网络搜寻资料。
(2). 设置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
(3). 开启的方法:
[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;
(4). 第1次编译会花多一点时间建立cache,之后即可享受ccache带来的好处,降低所有使用gcc的编译时间,大约25%~30%。
[1].可以通过ccache -s查看cache信息,如果满了可以用ccache -C清除所有。在满了状态下编译新codebase,将会旧的那个清除,这回降低效率,所以cache一定要设置正确!
(6). 对mm/new/remake都有效果。
以上两种方法优化后大约可降低50%的编译时间,也就是说优化前需要1小时编译时间,优化后半小时就完成了。
加快编译
好东西。项起来。
这个必须支持,mark...
好贴,顶一下!
尝试一下
弱弱地问个问题,JB和GB版本是啥意思
是android 的版本号。
有啥子区别木
雄起 好方法 · 管用·
root@drvx-desktop:/home/drvx/work/public/svn-install# ccache -s
The program 'ccache' is currently not installed. You can install it by typing:
apt-get install ccache
root@drvx-desktop:/home/drvx/work/public/svn-install# apt-get install ccache
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
distcc
The following NEW packages will be installed:
ccache
0 upgraded, 1 newly installed, 0 to remove and 241 not upgraded.
E: Archive directory /var/cache/apt/archives/partial is missing.
求教 为什么 看不了 大小 ?
root@drvx-desktop:/home/drvx/work/public/svn-install# ccache -s
The program 'ccache' is currently not installed. You can install it by typing:
apt-get install ccache
root@drvx-desktop:/home/drvx/work/public/svn-install#
终于看懂了 果然快乐不少
非常有用的经验,感谢小编!
好东东,谢谢分享
这个必须要顶
如果有用的话 能节省大量时间啊
方法有用,编译时间确实少了很多!
如果满了可以用ccache -C清除所有 怎么清除不了?
The program 'ccache' is currently not installed. You can install it by typing:
apt-get install ccache
mediatek/platform/mt6572/external/meta/ft/ft_fnc.cpp:
clang: error: clang frontend command failed due to signal (use -v to see invocation)
clang: error: unable to execute command: Segmentation fault
make[2]: *** [out/target/product/mbk72_wet_jb3/obj/STATIC_LIBRARIES/libcompiler-rt-extras_intermediates/mulodi4.o] Error 254
提示这个错误 是不是因为 使用 ccache 的原因?
好方法,非常感谢
测试过了,new时间节省了不少
挺好的哈!可惜木有服务器root权限,安装不了ccache!
好贴,顶一下!
Nice 。感谢分享
这个我要mark一下
表示强大的支持。
[2].JB版本:prebuilts/misc/linux-x86/ccache/ccache -M 25G 这个要如何弄?的
在你的ccache目录下执行ccache -s命令进行查看
嗯 已经可以了
另外现在有美国硅谷专注于软件加速和自动化的公司有个产品ElectricAccelerator可以实现并行加速。
通过构建共享的集群或资源虚拟云化来并行执行编译和测试任务,从而大幅度提高总体编译和测试的速度,对于Android编译在-j基础上还能提升50%以上,一般源码android可控制在10分钟左右。
华为、展讯、高通等都在用。公司网站:www.electric-cloud.com
学习一下 谢谢分享