Android Kernel Driver Builder #20
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |