droid-ddk提供Android ACK外部内核模块编译镜像。x86_64宿主机自动使用Google官方x86_64 NDK,ARM64宿主机自动使用SnowNF ARM64 NDK,镜像构建环境为Ubuntu 26.04。
dddk目标 |
ACK源码分支 | NDK |
|---|---|---|
android13-5.15 |
android13-5.15-lts |
r25c |
android14-5.15 |
android14-5.15-lts |
r25c |
android14-6.1 |
android14-6.1-lts |
r25c |
android15-6.1 |
android14-6.1-lts |
r25c |
android15-6.6 |
android15-6.6-lts |
r25c |
android16-6.6 |
android15-6.6-lts |
r25c |
android16-6.12 |
android16-6.12-lts |
r29 |
android17-6.12 |
android16-6.12-lts |
r29 |
android17-6.18 |
android17-6.18-lts |
r29 |
android15-6.1、android16-6.6与android17-6.12用于在较新Android系统上继续匹配上一代ACK内核。选择目标时以设备uname -r中的ACK代际和内核版本为准。
curl -fsSL https://raw.githubusercontent.com/feicong/droid-ddk/main/host/install.sh | sudo bash首次运行会在当前项目目录生成.dddk-config。镜像同时发布到DockerHub的docker.io/fsx199/droid-ddk与GHCR的ghcr.io/feicong/droid-ddk;镜像源选择docker或github即可,dddk会按宿主架构自动拉取x86_64或ARM64镜像。
也可直接创建项目配置:
version=android17-6.18
mode=docker
source=github
slim=true.dddk-config必须同时包含version、mode和source。version使用android<主版本>-<内核版本>格式,mode接受docker或local,source接受docker、github或cnb。可选的slim=true选择同一目标的droid-ddk-min精简镜像;省略或设为false时使用完整镜像。dddk逐项解析该文件,不执行其中的Shell内容,也不读取或写入$HOME/.droid-ddk/source与$HOME/.droid-ddk/mode。
dddk update
dddk list-all
dddk pull --target android17-6.18
dddk list模块目录至少包含模块源码和Kbuild文件。例如:
obj-m += my_driver.o使用完整镜像编译、清理和进入构建环境:
MODULE_DIR="$PWD/my-driver"
TARGET=android17-6.18
dddk pull --target "$TARGET"
dddk build --target "$TARGET" --module "$MODULE_DIR"
dddk build --target "$TARGET" --module "$MODULE_DIR" -- -j8 V=1
dddk clean --target "$TARGET" --module "$MODULE_DIR"
dddk shell --target "$TARGET" --module "$MODULE_DIR"--module将模块目录挂载到镜像内的/build,并执行与镜像内核构建目录匹配的标准Kbuild命令。.ko及中间产物直接写入模块目录。
项目用.dddk-config固定默认目标:
dddk pull
dddk build --module "$PWD/my-driver" -- -j8
dddk clean --module "$PWD/my-driver"命令行--target优先级高于.dddk-config中的version。省略--platform时,dddk按当前宿主自动选择linux/amd64或linux/arm64;只有覆盖宿主判断时才显式传入平台。
feicong/android-kernel-build-action@v2使用dddk编译ARM64外部内核模块。先上传模块源码Artifact,再调用Action:
jobs:
upload-module:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
- uses: actions/upload-artifact@v7
with:
name: hello-ko
path: path/to/hello-ko
build-module:
needs: upload-module
runs-on: ubuntu-24.04
steps:
- uses: feicong/android-kernel-build-action@v2
with:
tag: android17-6.18
arch: aarch64
module-path: hello-ko
module-name: hello-ko
registry: ghcr模块目录需包含Makefile与同名.c文件。输出Artifact名为Image-TAG-ARCH,其中的模块文件名为TAG_MODULE_NAME.ko。
项目fork自Ylarod/ddk。