Итоговый APK нужно собирать через точку входа
packaging; перед первой сборкой подготовьте нативные компоненты.Требования
Точка входа в сборку — скрипт
kotlin в корне репозитория (kotlin.bat в Windows). При первом запуске он сам скачивает нужный Kotlin Toolchain, поэтому Kotlin и Gradle устанавливать вручную не требуется. Минимальная поддерживаемая версия Android — 13 (API 33), поддерживается только 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
Установите Go 1.27 от MetaCubeX (эта версия используется в CI) и инструментарий Rust nightly. Рекомендуется отдельный Go SDK, так как следующий шаг изменяет его GOROOT:Перед сборкой ядра Go примените патчи из
.github/patch/ к каталогу, который показывает go env GOROOT. CI делает это автоматически перед сборкой нативных компонентов; команды ниже работают в Linux, macOS и Git Bash:4
Синхронизация ядра mihomo
По умолчанию синхронизируется ветка Alpha; доступен и Meta:
Сборка нативных компонентов
Полная сборка
Сборка по компонентам
ABI по умолчанию берётся из
abi.app.list в kernel.properties; его можно задать и явно через переменную окружения:
Артефакты сборки
Нативные библиотеки вjniLibs/arm64-v8a/:
Geo-данные находятся в
build/generated/assets/geo/:
Сборка APK
Команда сборки —kotlin run -m packaging; все аргументы -Pkey=value ставятся после -- и передаются точке входа packaging. В PowerShell аргументы с точками заключаются в одинарные кавычки.
Debug
Debug предназначен для локальной установки и отладки и по умолчанию не включает Geo:Release
Release собирает loader DEX и упаковывает payload; сначала выполните настройку подписи ниже: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 нельзя установить через adb install, и CI этот вариант не использует.
Сборка в CI
Все задания CI выполняются наmacos-26 и собирают только arm64-v8a:
CI использует счётчик коммитов как номер версии сборки и записывает хеш коммита и ветку.
Проверка установки
output_apk/debug/.
Частые проблемы
Другие ошибки сборки описаны в FAQ.
