KernelSU: Android 内核编译方法和开发环境搭建
术哥喜欢皮卡丘
2022年12月28日 13:51

内核编译方法,首先有能力的自己阅读官方文档,主要是两个地方:

  1. GKI 相关:https://source.android.com/docs/core/architecture/kernel/gki-release-builds

  2. 内核编译: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

配置开发环境

  1. 给 vscode 安装 clangd 插件,clangd 需要下载最新的版本。

  2. 执行命令 common/scripts/clang-tools/gen_compile_commands.py -d ./out/android13-5.10/common/ 生成 compile_commands.json 文件。

  3. 使用 vscode 打开任意一个源文件让 clangd 进行索引;索引完毕即可使用。

  4. 内核自带 .clang-format 配置文件,直接使用 vscode 的格式化功能即可格式化代码。