Android codebase都很大,编译一次都需要花很多时间,如果是preloader/lk/bootimage还好,但是Android的话都是非常久。实际上这个编译时间还是可以进一步缩短!
ccache工具通过将头文件高速缓存到源文件之中而改进了构建性能,因而通过减少每一步编译时添加头文件所需要的时间而提高了构建速度。ccache是google默认就存放在codebase的工具。
具体操作:
1、配环境变量:
a. 进入usr目录打开.bashrc文件:sudo gedit ~/.bashrc
b.在.bashrc文件中增加如下信息并保存:
export USE_CCACHE=1
export CCACHE_DIR=~/.ccache
2、配置ccache大小
a.进入Android工程目录
b.设置cache大小(这一步一定要做!!),这里选择配30G,在上面的目录下执行以下命令:prebuilts/misc/linux-x86/ccache/ccache -M 30G (注意:设置小了还会引起编译时间延长)
3、正常编译Android工程
mmm/new/remake android
4、第1次编译会花多一点时间建立cache,之后即可享受ccache带来的好处,降低所有使用gcc的编译时间。可以通过ccache -s查看cache信息,如果满了可以用ccache -C清除所有。在满了状态下编译新codebase,将会旧的那个清除,这会降低效率,所以cache一定要设置正确!
以上ccache只对编译android有效,kernel部分需要额外设置才行。这样在编译kernel时也可以享受到ccache带来编译时间的缩短。kernel/Makefile文件中的
S = $(CROSS_COMPILE)as
LD = $(CROSS_COMPILE)ld.bfd
CC = $(CROSS_COMPILE)gcc
CPP = $(CC) -E
之后添加:
ifneq ($(USE_CCACHE),)
export CCACHE_COMPILERCHECK := content
export CCACHE_SLOPPINESS := time_macros,include_file_mtime,file_macro
export CCACHE_BASEDIR := /
ccache := $(strip $(wildcard $(PWD)/../prebuilts/misc/linux-x86/ccache/ccache))
ifdef ccache
ifneq ($(ccache),$(firstword $(CC)))
CC := $(ccache) $(CC)
endif
ccache =
endif
endif