背景
由于需要利用安卓内核驱动进行游戏数据读取,但编译安卓内核需要电脑内存32G以上,而本机只有8G,所以选择利用GitHub Actions进行云端编译。
内核类型说明
安卓内核分为两种类型:
- GKI内核:谷歌推荐的标准化内核
- 非GKI内核:传统的碎片化内核
通过查看”关于本机”可以看到内核版本,5.0以上版本为GKI内核,本文主要讲解GKI内核的编译方法。
编译准备
确认内核版本

- 例如:5.10.149 对应android12内核版本
注意:此处的安卓版本指内核版本,不是系统版本
确认内核分支
- 参考谷歌官方文档

- 本例使用:common-android12-5.10
查看构建方法


GitHub Actions配置
创建workflow文件,配置自动化构建流程:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| name: Android12-5.10
on: workflow_dispatch:
jobs: build: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 - name: Modify MY_LINUX_VERSION_CODE run: | sed -i '/#ifndef MY_LINUX_VERSION_CODE/a #define MY_LINUX_VERSION_CODE KERNEL_VERSION(5,10,43)' kerneldriver/ver_control.h
- name: Install repo tool run: | curl https://storage.googleapis.com/git-repo-downloads/repo > /usr/local/bin/repo 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-android12-5.10 --no-repo-verify --depth=1 repo sync --force-sync --no-clone-bundle --no-tags -f -c -j32
- name: Copy kerneldriver run: | cd android-kernel mkdir -p common/drivers cp -r ../kerneldriver common/drivers
- name: Modify Makefile run: | cd android-kernel echo "obj-y += kerneldriver/" >> common/drivers/Makefile
- name: Build Android Kernel continue-on-error: true run: | cd android-kernel BUILD_CONFIG=common/build.config.gki.aarch64 LTO=thin build/build.sh -j32
- name: Upload kerneldriver.ko uses: actions/upload-artifact@v3 with: name: kerneldriver.ko path: android-kernel/out/android12-5.10/common/drivers/kerneldriver/kerneldriver.ko
|
构建结果
成功编译后的文件:



使用方法
- 下载编译好的kerneldriver.ko
- 上传到手机
- 使用insmod命令加载驱动
我自己的内核驱动就不放出来了,自己慢慢稳定,嘿嘿