前言
随着Android操作系统的不断进化,其版本更迭日益频繁,尤其是Android 10与Android 11的源码编译过程,开发者们面临了一个显著的问题:单模块编译时间的冗长。通常情况下,完成一次单模块的编译需要耗费半个小时甚至更长时间,这主要归因于编译过程中需要重新加载全部mk文件,并经由这一系列复杂的步骤生成ninja编译文件,而这一预处理阶段异常缓慢,相比之下,实际的编译过程则显得相当迅速。
为了应对这一挑战,Google引入了ninja这一高效的编译工具,它极大地缩短了编译时间。在采用ninja进行编译时,即便是大型模块的编译也能在十几秒内迅速完成。然而,值得注意的是,ninja编译的高效性建立在源代码无大规模变动的基础上,即它最适合用于快速迭代开发中的代码修改。一旦项目涉及到文件的增加或删除,就必须回归到传统的mm/make命令来重新进行完整的编译流程。
使用方法详解
为了利用ninja加速编译过程,开发者需要指定正确的ninja执行文件路径以及对应的lunch配置选项(通过xxx标识)。以下是几个常用的编译命令示例:
- 编译Settings模块:
./prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-xxx.ninja Settings -j32
- 编译selinux策略:
./prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-xxx.ninja selinux_policy -j32
通过指定-j32参数,同样实现了多线程编译优化。
- 编译Framework框架:

最低0.47元/天 解锁文章
2476

被折叠的 条评论
为什么被折叠?



