AOSP 7.1全量构建后执行'm'命令耗时超1小时,如何提速?
加快AOSP 7.1中
m命令执行速度的方法 检查构建缓存状态
- 确认
ccache已启用,执行export USE_CCACHE=1开启,再用prebuilts/misc/linux-x86/ccache/ccache -M 50G给缓存分配50G以上空间。运行ccache -s查看命中率,若命中率低,大概率是缓存目录权限异常或空间不足,需对应调整。 - 排查是否有脚本、工具定期清理
.ccache目录,缓存被清空会直接触发全量重新编译。
- 确认
确认
m命令的执行上下文- 全量构建后若切换过分支、修改过
Android.mk/BoardConfig.mk这类全局配置文件,会触发大量文件重新编译。如果仅修改单个模块,直接用mm或mmm指定模块编译,避免触发全量构建。 - 检查环境变量是否正确:
ANDROID_BUILD_TOP需指向项目根目录,PATH要包含AOSP预编译工具链路径,环境变量异常会导致构建系统误判依赖关系。
- 全量构建后若切换过分支、修改过
优化构建系统的依赖检测
- AOSP 7.1的Make构建系统有时会因文件时间戳问题误判变更,可尝试先执行
make clean再重新全量构建一次,之后再运行m观察是否仍全量编译。 - 给文件系统开启
noatime挂载选项,默认的文件访问时间更新会干扰Make的依赖检测。修改/etc/fstab添加noatime后重新挂载对应分区即可。
- AOSP 7.1的Make构建系统有时会因文件时间戳问题误判变更,可尝试先执行
硬件与并行编译优化
- 增加并行编译线程数,执行
export NINJA_ARGS="-j$(nproc)"或export MAKEFLAGS="-j$(nproc)",利用多核CPU加速编译。注意线程数不要超过CPU核心数的1.5倍,避免资源耗尽拖慢速度。 - 务必使用SSD存储,机械硬盘的IO速度会严重拖慢构建流程,尤其是依赖检测和缓存读写阶段。
- 增加并行编译线程数,执行
排查模块依赖问题
- 执行
make dependencies重新生成依赖关系文件,若依赖文件损坏,会导致构建系统重新扫描所有文件。 - 检查自定义模块的Makefile是否存在错误,比如
LOCAL_SRC_FILES路径错误、缺失依赖声明等,这类问题会导致无关模块被重复编译。
- 执行
内容的提问来源于stack exchange,提问作者user1418067
相关产品推荐
相关产品推荐

