微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > android编译速度提高一半的方法

android编译速度提高一半的方法

时间:10-02 整理:3721RD 点击:
忧伤漫步(105958379)  17:23:23

[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

学习一下 谢谢分享

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top