Android-лаунчер для сервера CounterMine 2
Проект — форк MojoLauncher (ветка v3_openjdk),
который, в свою очередь, основан на PojavLauncher.
Лицензия — GNU LGPLv3, как у апстрима.
- Сборка игры. Minecraft 26.2 + Fabric Loader 0.19.3, моды Fabric API, Sodium и ZoomSensitivityFix вшиты в APK и раскатываются при первом запуске.
- Автоматический вход на сервер. Игра стартует с
--quickPlayMultiplayer, адрес сервера зашит в сборку (CM2_SERVER_ADDRESS); сервер также добавлен в список серверов. - Аккаунт без логина. Сервер работает в offline-режиме, поэтому лаунчер сам создаёт локальный аккаунт при первом старте — экран выбора способа входа не показывается.
- Сенсорная раскладка под шутер. Джойстик движения, две кнопки стрельбы, покупка, перезарядка, смена слотов, приседание и бег — вшита как раскладка по умолчанию.
- Предустановленные настройки игры.
options.txtс разумными дефолтами; язык интерфейса выставляется по языку устройства. - Урезанные звуковые ассеты. Сервер всё равно перетирает звуки своим ресурспаком, поэтому индекс ассетов фильтруется перед скачиванием: ~457 МБ → ~99 МБ.
- Встроенный апдейтер. При старте лаунчер сверяет свою версию с последним релизом на GitHub и предлагает обновиться; APK скачивается и ставится изнутри приложения.
Сам клиент Minecraft в APK не входит — он скачивается с серверов Mojang при первом запуске.
Готовый APK — в разделе releases. Дальше лаунчер обновляет себя сам.
Требуется Android 5.0 (API 21) или новее. Поддерживаемые ABI: arm64-v8a, armeabi-v7a,
x86, x86_64.
Требования:
- JDK 17 (сборка проверялась на Zulu 17)
- Android SDK:
platforms;android-36,build-tools;36.0.0,ndk;29.0.14206865,cmake;3.22.1 - путь к SDK в
local.properties(sdk.dir)
Репозиторий содержит сабмодуль glfw, поэтому клонировать нужно вместе с ним:
git clone --recurse-submodules https://github.com/SkolkovoLab/cm2android.git
Отладочная сборка:
./gradlew :app_pojavlauncher:assembleFullDebug
(на Windows — .\gradlew.bat). Артефакт:
app_pojavlauncher/build/outputs/apk/full/debug/app_pojavlauncher-full-debug.apk.
Флейвор full включает JRE-рантайм и используется для всех сборок проекта; noruntime остался
от апстрима.
applicationId у debug-сборки — dev.cherrypizza.cm2android.debug, у релизной —
dev.cherrypizza.cm2android. Это разные приложения: они уживаются на одном устройстве, но
релиз не обновляет ранее установленный debug-билд.
В сборку входят все рендереры апстрима, выбираются в настройках лаунчера.
| Настройка | Рендерер | Примечание |
|---|---|---|
opengles2 |
Holy GL4ES | значение по умолчанию у апстрима, новые версии Minecraft не тянет |
vulkan_zink |
Zink (GL поверх Vulkan) | на части устройств поворачивает экран |
freedreno_kgsl |
Freedreno/Turnip | рабочий вариант на Adreno |
opengles3_ltw |
LTW | универсальный GLES-враппер для устройств без Vulkan |
libltw.so собирается отдельным проектом LTW; готовый
ltw-release.aar закоммичен в app_pojavlauncher/libs/, так что сборка воспроизводима без него.
Версия выводится из git-тега вида v1.2.3: versionName = 1.2.3,
versionCode = major * 10000 + minor * 100 + patch. Коммиты поверх тега дают
1.2.3-dev-<sha>. Версию можно задать явно через -Pcm2Version=v1.2.3 или переменную окружения
CM2_VERSION — так делает CI, потому что checkout по умолчанию теги не выкачивает.
Релиз выпускается пушем тега v*: workflow .github/workflows/release.yml собирает
assembleFullRelease, подписывает релизным ключом и публикует APK в релиз. Нужны секреты
репозитория CM2_KEYSTORE_BASE64 и CM2_KEYSTORE_PASSWORD (плюс опциональные CM2_KEY_ALIAS
и CM2_KEY_PASSWORD).
Апдейтер ищет в последнем релизе ровно один .apk-ассет и игнорирует draft/prerelease.
APK обязан быть подписан тем же ключом, иначе установка поверх у игроков не пройдёт.
- вшитая Fabric-сборка, моды и
servers.dat, автозаход на сервер; - автоматический offline-аккаунт вместо экрана выбора способа входа (Microsoft и ely.by убраны);
- своя раскладка управления и
options.txtпо умолчанию; - фильтрация звуковых ассетов при скачивании;
- собственный апдейтер по релизам GitHub;
- брендинг: иконка, имя приложения,
applicationId.
Проект распространяется под GNU LGPLv3 — той же лицензией, что и MojoLauncher.
- MojoLauncher: GNU LGPLv3
- PojavLauncher: GNU LGPLv3
- Boardwalk (JVM-лаунчер): Apache License 2.0 или GNU GPLv2
- Android Support Libraries: Apache License 2.0
- Holy GL4ES: MIT License
- OpenJDK: GNU GPLv2
- GLFW: zlib license
- LWJGL2-GLFW: 3-Clause BSD license
- LWJGL3: BSD-3 License
- Mesa 3D Graphics Library: MIT License
- pro-grade: Apache License 2.0
- bhook: MIT license
- alsoft: GNU LGPL и modified PFFFT
- oboe: Apache License 2.0
- Fabric Loader и Fabric API: Apache License 2.0
- Sodium: LGPLv3
- ZoomSensitivityFix: MIT License
Minecraft — торговая марка Mojang Studios. Проект не связан с Mojang Studios и Microsoft.
