Skip to content

Android Kernel Driver Builder #20

Android Kernel Driver Builder

Android Kernel Driver Builder #20

Workflow file for this run

name: Android14-6.1
on:
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4.2.2
- name: Prepare kerneldriver directory
run: |
mkdir kerneldriver
mv ./rwProcMem_module/*.h ./rwProcMem_module/*.c ./rwProcMem_module/Makefile kerneldriver/
- name: Install repo tool
run: |
sudo curl -L https://storage.googleapis.com/git-repo-downloads/repo -o /usr/local/bin/repo
sudo chmod a+x /usr/local/bin/repo
- name: Set up Android Kernel source
run: |
mkdir -p android-kernel && cd android-kernel
repo init -u https://android.googlesource.com/kernel/manifest -b common-android14-6.1
repo sync
- name: Copy kerneldriver
run: |
cd android-kernel
cp -r ../kerneldriver common/drivers
- name: Modify Makefile
run: |
cd android-kernel
echo "obj-y += kerneldriver/" >> common/drivers/Makefile
# 新增步骤:修改栈帧大小限制为4096
- name: Increase stack frame size limit
run: |
cd android-kernel
# 查找并替换所有包含WARN的配置项
find . -type f -name "Makefile*" -exec sed -i 's/-Wframe-larger-than=[0-9]*/-Wframe-larger-than=4096/g' {} +
# 添加新配置(如果不存在)
grep -q "FRAME_WARN" common/Makefile || echo 'KBUILD_CFLAGS += -Wframe-larger-than=4096' >> common/Makefile
# ===== 新增步骤:安装 buildozer 并修复模块声明 =====
- name: Install buildozer
run: |
# 安装 Go 语言环境
sudo apt-get install -y golang-go
# 安装 buildozer
go install github.com/bazelbuild/buildtools/buildozer@latest
# 添加到 PATH
echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
- name: Fix module declaration with buildozer
run: |
cd android-kernel
buildozer 'add module_outs drivers/kerneldriver/rwProcMem_module.ko' //common:kernel_aarch64
# 继续执行即使命令返回非零状态(buildozer 在添加已存在项时会失败)
continue-on-error: true
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y build-essential flex bison libssl-dev libelf-dev bc
- name: Build kernel module
run: |
cd android-kernel
tools/bazel run //common:kernel_aarch64_dist
- name: Upload kerneldriver.ko
uses: actions/upload-artifact@v4.6.2
with:
name: kerneldriver
path: android-kernel/out/kernel_aarch64