Skip to main content
正式 APK 必须通过 packaging 入口构建;首次构建前请先完成原生组件准备。

环境要求

构建入口是仓库根目录的 kotlin 脚本(Windows 为 kotlin.bat),首次运行会自动下载所需的 Kotlin Toolchain,无需手动安装 Kotlin 或 Gradle。最低支持 Android 8.0(API 26),当前仅支持 arm64-v8a;NDK 版本、最低 SDK 与 ABI 均读取自 kernel.properties。

准备仓库

1

获取源码

2

配置 Android SDK

安装 API 37、build-tools 37.0.0、NDK 30.0.16248370、CMake 3.22.1 与 Ninja,并接受 SDK 许可证。设置 ANDROID_HOME 指向 SDK,或在仓库根目录创建 local.properties:
ANDROID_HOME、ANDROID_SDK_ROOT 与 sdk.dir 需要指向同一个 SDK。
3

准备 Go 与 Rust

安装 MetaCubeX 维护的 Go 1.27(CI 使用同一版本)与 Rust nightly 工具链。建议使用专用 Go SDK,因为下一步会修改其 GOROOT:
构建 Go 核心前,需要把 .github/patch/ 中的补丁应用到 go env GOROOT 指向的目录。CI 会在构建原生组件前自动执行;以下命令适用于 Linux、macOS 与 Git Bash:
4

同步 mihomo 内核

默认同步 Alpha 分支,也可以改用 Meta:

构建原生组件

完整构建

该命令会生成全部原生库并下载 Geo 数据。

按组件构建

默认 ABI 取自 kernel.properties 的 abi.app.list,也可以用环境变量显式指定:

构建产物

jniLibs/arm64-v8a/ 中的原生库: Geo 数据位于 build/generated/assets/geo/:

构建 APK

构建命令为 kotlin run -m packaging,所有 -Pkey=value 参数放在 -- 之后传给打包入口;PowerShell 中含点的参数需要用单引号包裹。

Debug

Debug 适合本地安装和调试,默认不内置 Geo:

Release

Release 会构建 loader DEX 并封装 payload,需要先完成下文的签名配置:
验证通过的 APK 输出到 output_apk/debug/ 与 output_apk/release/,文件名为 YumeBox-external.apk 或 YumeBox-builtin.apk,并生成同名的 .apk.json,记录版本、SHA-256 等构建信息。

签名配置

未配置签名时,Debug 自动生成并使用 debug keystore;只要仓库根目录存在 signing.properties,Debug 和 Release 都会优先使用它。Release 必须签名:在仓库根目录放置 release.keystore,并创建 signing.properties:
不要提交 release.keystore 和 signing.properties。
只有显式传入 --allow-unsigned 且没有 signing.properties 时才会生成未签名 APK;未签名 APK 无法通过 adb install 安装,CI 不使用此选项。

CI 构建

所有 CI 作业使用 macos-26,只构建 arm64-v8a: CI 使用提交计数作为构建版本号,并写入提交哈希与分支信息。

验证安装

如果文件名不同,请先查看 output_apk/debug/ 中的实际产物。

常见问题

更多构建错误请查看常见问题。
最后修改于 2026年10月23日