该工具包旨在快速开发内核模块,但不保证内核模块能够完全兼容对应版本的内核。
如果需要完全兼容性,请下载完整内核代码并自行编译,具体方法请参考相关文档。
如果不想下载 Clang,可以使用 NDK Clang 进行编译,但可能会导致编译产物的结构体偏移有所不同。
仓库内包含一个便利脚本 scripts/ddk,封装了常用的 docker 命令,强制使用 --platform linux/amd64 并把当前目录挂载到容器的 /build:
用法示例:
# 拉取镜像
./scripts/ddk pull android12-5.10
# 构建
./scripts/ddk build --target android12-5.10
# 传递 make 参数
./scripts/ddk build --target android12-5.10 -- CFLAGS=-O2
# 清理
./scripts/ddk clean --target android12-5.10
# 交互式 shell
./scripts/ddk shell --target android12-5.10如果你不想在每次命令中传入 target,可以设置环境变量 DDK_TARGET:
export DDK_TARGET=android12-5.10
./scripts/ddk build # 会使用 DDK_TARGET脚本位置:scripts/ddk(请确保它有可执行权限)。
镜像已发布到 GitHub Container Registry(GHCR)。推荐直接从 GHCR 拉取镜像,而不是从 Release 下载大型 tar:
# 拉取镜像(示例)
docker pull ghcr.io/ylarod/ddk:android12-5.10
docker run --rm -v /tmp/testko:/build -w /build ghcr.io/ylarod/ddk:android12-5.10 make如果你之前的文档或者脚本提到从 Release 下载并导入 .tar,那部分已过时:现在推荐直接从 ghcr.io/ylarod/ddk:<ver> 拉取。
# x86 设备
docker run --rm -v /tmp/testko:/build -w /build ghcr.io/ylarod/ddk:android12-5.10 make
# M1 设备使用 Orbstack
docker run --rm -v /tmp/testko:/build -w /build --platform linux/amd64 ghcr.io/ylarod/ddk:android12-5.10 make# x86 设备
docker run --rm -v /tmp/testko:/build -w /build ghcr.io/ylarod/ddk:android12-5.10 make clean
# M1 设备使用 Orbstack
docker run --rm -v /tmp/testko:/build -w /build --platform linux/amd64 ghcr.io/ylarod/ddk:android12-5.10 make clean# x86 设备
docker run -it --rm -v /tmp/testko:/build -w /build ghcr.io/ylarod/ddk:android12-5.10
# M1 设备使用 Orbstack
docker run -it --rm -v /tmp/testko:/build -w /build --platform linux/amd64 ghcr.io/ylarod/ddk:android12-5.10