内核编译方法,首先有能力的自己阅读官方文档,主要是两个地方:
GKI 相关:https://source.android.com/docs/core/architecture/kernel/gki-release-builds
内核编译:https://source.android.com/docs/setup/build/building-kernels
下载内核代码
主要就这么几步:
repo init -u https://android.googlesource.com/kernel/manifest
mv <kernel_manifest.xml> .repo/manifests
repo init -m manifest.xml
repo sync
其中,<kernel_manifest.xml> 为内核编译的“基线”,通过它可以唯一确定并重现某一次编译过程;官方的 manifest 可以在这个链接获取:https://source.android.com/docs/core/architecture/kernel/gki-release-builds
编译内核代码
使用 build.sh 编译:
LTO=thin BUILD_CONFIG=common/build.config.gki.aarch64 build/build.sh
注意指定 LTO=thin,否则编译回相当慢,机器配置低可能直接编译失败。
另外,Android 13 也可以用 bazel 编译;编译命令如下:
tools/bazel build --config=fast //common:kernel_aarch64_dist
配置开发环境
给 vscode 安装 clangd 插件,clangd 需要下载最新的版本。
执行命令 common/scripts/clang-tools/gen_compile_commands.py -d ./out/android13-5.10/common/ 生成 compile_commands.json 文件。
使用 vscode 打开任意一个源文件让 clangd 进行索引;索引完毕即可使用。
内核自带 .clang-format 配置文件,直接使用 vscode 的格式化功能即可格式化代码。