Magisk 构建系统是一个全面的框架,用于管理包括原生二进制文件(C++ 和 Rust)和 Android 应用程序在内的所有 Magisk 组件的编译和打包。本文档涵盖了构建系统的架构、配置选项、构建命令以及构建不同组件的流程。
有关从源代码构建 Magisk 的信息,请参阅 从源代码构建。
Magisk 构建系统以一个 Python 脚本(build.py)为中心,该脚本协调整个构建过程。此脚本协调多个构建工具以创建最终的工件。
来源: build.py1-835 gradle.properties1-35 build.gradle.kts1-8
构建系统从多个来源读取配置
build.py 的命令行参数config.prop(可选的自定义配置文件)gradle.properties(项目范围的 Gradle 设置)定义在 gradle.properties 中的关键属性
magisk.stubVersion=40
magisk.versionCode=28103
magisk.ondkVersion=r29.1
这些属性控制构建中使用的版本号和 NDK 版本。
来源: build.py697-734 gradle.properties32-34
The build.py 脚本提供了一个丰富的命令行界面,用于构建 Magisk 的不同组件。
| 命令 | 描述 |
|---|---|
all | 构建所有内容(原生二进制文件和所有应用) |
native [targets] | 构建原生二进制文件 |
app | 构建 Magisk 应用 |
stub | 构建存根应用 |
test | 构建测试应用 |
clean [targets] | 清理构建产物 |
ndk | 设置 Magisk NDK |
emulator | 为开发设置 AVD |
avd_patch | 修补 AVD 的 ramdisk.img 或 init_boot.img |
cargo | 对项目运行 cargo 命令 |
clippy | 在 Rust 源文件上运行 clippy |
rustup | 设置 rustup 包装器 |
-r, --release - 以发布模式构建-v, --verbose - 详细输出(可多次使用)-c, --config - 自定义配置文件(默认为 config.prop)# Build everything in release mode
./build.py -r all
# Build only native binaries
./build.py native
# Build specific native targets
./build.py native magisk magiskinit
# Clean build artifacts
./build.py clean
# Build the Magisk app with custom config
./build.py -c custom_config.prop app
来源: build.py736-822
原生构建流程负责编译构成 Magisk 核心二进制文件的 C++ 和 Rust 组件。
原生构建会生成以下关键二进制文件:
magisk - Magisk 主守护进程magiskinit - 引导过程中运行的初始化二进制文件magiskboot - 用于解包/重打包引导映像的工具magiskpolicy - 用于修改 SELinux 策略的工具resetprop - 用于操作系统属性的工具这些二进制文件使用 C++ 和 Rust 组件的混合方法进行构建。
来源: build.py186-221 build.py230-274 build.py310-338
Android 应用构建流程使用 Gradle 来构建三个主要组件:
应用构建流程包括几个步骤:
主应用将原生二进制文件和存根 APK 作为资源包含在内。
来源: build.py346-376 build.py378-416 build.py424-428 build.py430-442
要使用 Magisk 构建系统,您的环境必须满足这些要求:
构建系统依赖于这些环境变量:
ANDROID_HOME 或 ANDROID_SDK_ROOT - Android SDK 的路径ANDROID_STUDIO(可选)- 用于 JDK 检测的 Android Studio 路径可以使用以下命令自动设置 NDK:
./build.py ndk
此命令下载并安装 Magisk 所需的特定 NDK 版本。
来源: build.py56-61 build.py513-530 build.py346-376
您可以通过创建 config.prop 文件或使用 -c 选项指定自定义配置文件来定制构建。您可以设置的关键属性包括:
version - 版本字符串(默认为提交哈希)versionCode - 版本代码(默认为 1000000)outdir - 输出目录(默认为 "out")abiList - 要构建的 ABI 的逗号分隔列表(默认为所有支持的 ABI)示例 config.prop
version=25.0-custom
versionCode=25000
outdir=custom_build
abiList=arm64-v8a,x86_64
来源: build.py680-733
构建系统设计用于在持续集成环境中工作。整个构建过程可以通过以下方式实现自动化:
python build.py -r all
此命令以发布模式构建所有组件,在输出目录中生成最终的工件。
来源: build.py483-487
构建系统由以下关键文件组成:
build.py - 主构建脚本gradle.properties - 项目范围的 Gradle 设置build.gradle.kts - 根 Gradle 构建文件app/build.gradle.kts - 应用模块构建文件buildSrc/src/main/java/Setup.kt - Gradle 构建设置代码来源: build.py1-835 gradle.properties1-35 build.gradle.kts1-8 app/build.gradle.kts1-6 buildSrc/src/main/java/Setup.kt1-496