Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

182 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Droid DDK - dddk

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.1android16-6.6android17-6.12用于在较新Android系统上继续匹配上一代ACK内核。选择目标时以设备uname -r中的ACK代际和内核版本为准。

安装dddk

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;镜像源选择dockergithub即可,dddk会按宿主架构自动拉取x86_64或ARM64镜像。

也可直接创建项目配置:

version=android17-6.18
mode=docker
source=github
slim=true

.dddk-config必须同时包含versionmodesourceversion使用android<主版本>-<内核版本>格式,mode接受dockerlocalsource接受dockergithubcnb。可选的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/amd64linux/arm64;只有覆盖宿主判断时才显式传入平台。

在GitHub Actions中编译

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。

About

安卓内核驱动开发工具包 (Droid Driver Development Kit)

Resources

Stars

12 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages