A Workflow to build Android Kernel automatically
Important
This workflow is universal. You need to have a certain foundation in writing github workflows and a little knowledge of the Android kernel to use this.
Strongly recommends using the stable version (tags such as v1.2) instead of the development version (main branch), because main branch is not a stable branch which may have some technical problems.
- First, you need to determine the kernel source code and configuration files.
- Find your kernel source repository and configure the workflow file according to the following example and README.md:
name: CI
on:
workflow_dispatch:
jobs:
build-kernel:
name: Build Kernel
runs-on: ubuntu-20.04
steps:
- name: Build
uses: dabao1955/kernel_build_action@main
with:
kernel-url: https://github.com/AcmeUI-Devices/android_kernel_xiaomi_cas
kernel-branch: taffy
config: cas_defconfig
arch: arm64
aosp-gcc: true
aosp-clang: true
android-version: 12
aosp-clang-version: r383902
Or use the preset workflow file to modify it.
Note
You do not need to fork this repository.
If you just want to compile the kernel, please do not submit PR after modification!
- Finally, run the workflow you just wrote.
Warning
enable lxc or nethunter input options may cause kernel compilation failed!
input | required | description | example value |
---|---|---|---|
kernel-url | true | URL of Android kernel source code for your phone | https://github.com/username/project |
kernel-dir | false | The directory name of the Android kernel source code. This option may be used for OPLUS Kernel source code. | kernel |
depth | false | 1 | |
vendor | false | false | |
vendor-url | false | url of additional source code for the Android kernel source code. This option may be used for OPLUS source code. | https://github.com/username/project |
vendor-dir | false | vendor | |
kernel-branch | true | The branch of the source code that needs to be cloned, defaults branch to git clone is main | main |
vendor-branch | true | The branch of the vendor source code that needs to be cloned, defaults branch to git clone is main | main |
config | true | Compile the selected configuration file for the Android kernel | defconfig |
arch | true | The architecture of your mobile phone SOC is arm64 by default | arm64 |
android-version | true | The Android version required when downloading aosp-clang. If you want to use the latest aosp-clang or you do not use aosp-clang to compile the kernel, please ignore this option | 12 |
ksu | false | Enable KernelSU | true |
ksu-version | false | KernelSU version | v0.9.5 |
ksu-lkm(may not build successfully for non-GKI devices) | false | Build KernelSU as a linux kernel module | true |
ksu-other | false | false | |
ksu-url | false | Ude 3rd KernelSU | https://github.com/xxx/KernelSU/ |
disable-lto | false | false | |
lxc | false | Enable LXC and docker to config | false |
lxc-patch | false | Add patch avoid not booting after enable lxc | false |
nethunter | false | Enable Kali nethunter | false |
nethunter-patch | false | false | |
kvm | false | false | |
ccache | false | Enable ccache(Only valid when compiled with clang) | false |
aosp-gcc | true | Use aosp-gcc to compile the kernel or assist in compiling the kernel (when aosp-clang is enabled) | false |
other-gcc32-url | false | Please fill in the download link of other gcc32 in this option. Supports .xz, .zip, .tar and .git formats | https://github.com/username/gcc |
other-gcc32-branch | false | main | |
other-gcc64-url | false | Please fill in the download link of other gcc64 in this option. Supports .xz, .zip, .tar and .git formats | https://github.com/username/gcc |
other-gcc64-branch | false | main | |
aosp-clang | false | Compile the kernel using aosp-clang | false |
aosp-clang-version | false | please search for them according to your own needs at official website and choose the appropriate clang according to the Android system version instead of blindly choosing r383902 |
r383902 |
other-clang-url | false | Please fill in the download link of other clang in this option. Supports .xz, .zip, .tar and .git formats | https://github.com/kdrag0n/proton-clang |
other-clang-branch | false | 10.0 | |
anykernel3 | false | Package the compiled kernel using AnyKernel3. If this option is disabled, You need to fill bootimg-url . |
false |
anykernel3-url | false | 3rdparty AnyKernel3 url | https://github.com/username/AnyKernel3 |
release | flase | After the kernel compilation is completed, it will be automatically published to the releases page | true |
access-token | false | Please fill it if you want to release kernel | ghp_xxxxxx |
bootimg-url | false | A URL that can download the local boot.img | https://127.0.0.1/boot.img |
extra-cmd | false | Compile the kernel with extra options, such as LD=ld.lld | AS=llvm-as |
Caution
Please Read this first if you have some questions!
You should disable aosp-clang and android-ndk options to use it.
See KernelSU 's release note for more details.
In principle, it only accept Bug Reports and do not accept external Feature Requests; if you want new features, you are welcome to submit a Pull Request. We will still develop new features that we think are useful.
- If you get an error while downloading the toolchain or pulling the source code, please check whether your option or source code address is legitimate.
- If you encounter problems during compilation, consider replacing the source code or replacing the compiler.
- If action has some typo problem,PR welcome!
Try add LLVM=1 option with clang.