计算机系统应用教程网站

网站首页 > 技术文章 正文

提高android os 开发效率 - 减少编译时间

btikc 2024-10-27 08:34:50 技术文章 7 ℃ 0 评论

熟悉android的开发的人都知道android系统编译的的时候,命令行敲下make的时候,会有很长的等待时间,

新版的android的编译主要是下面的流程

  1. Soong的自举(bootstrap)。这个步骤会编译Soong的核心组件。
  2. 收集Android.bp并生成out/soong/build.ninja文件。
  3. 收集Android.mk并生成out/build-<product>.ninja与out/combined-<product>.ninja文件。
  4. 执行ninja命令,进行编译。out/combined-*.ninja文件,就是真正的执行入口。

编译启动慢的原因有

  1. Ninja文件太大, 生成的ninja文件就有500M左右,load 到内存里面需要几个G
  2. 生成Ninja文件很慢,前面编译的流程中的2和3的过程需要遍历很多的Android.bp和Android.mk, 遍历的速度完全取决于硬盘的速度
  3. 生成Ninja文件的场景很多,lunch 不同的device会生成不同的ninja,mm的时候也会生成
  4. 重新生成Ninja的条件很多,修改Android.mk, Android.bp文件,添加环境变量,还有很多神奇的原因都会导致ninja文件被重新生成

改善的方法

直接跳过ninja的生成过程, 使用ninja进行编译

ln -s out/combined-aosp_arm64.ninja build.ninja
# 全编译
prebuilts/build-tools/darwin-x86/bin/ninja
# 编译单个的模块
prebuilts/build-tools/darwin-x86/bin/ninja module_name

问题

  1. 在修改Android.mk或者Android.bp的情况下,你需要重新生成ninja文件
  2. android 系统上并不是所有的makefile 都是用Android.bp,Android.mk来写的,有些是直接的makefile 写的,比如lk, 这些不适用上述方法。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表