Лаборатория оптимизации бизнеса
Меню

Документация Мобильное приложение

Сборка приложения для Android

Установка и настройка · обновлено 9 ноября 2026 г.

Команды выполняются в папке распакованного комплекта — там лежат builder/, scripts/ и brands/. Перед сборкой подготовьте бренд.

Порядок: компьютер для сборки → образ сборки → ключ подписи → сборка. Образ portal-mobile-builder ниоткуда не скачивается: его собирают из комплекта, и ключ создаётся уже в нём.

1. Компьютер для сборки

Любой компьютер или сервер с Docker. На Ubuntu: sudo apt install docker.io docker-buildx

Пакет docker-buildx обязателен: без него docker build не соберёт образ (ошибка про --mount). Образ занимает около 3 ГБ — оставьте на диске запас.

Команды ниже — от root или через sudo.

2. Образ сборки

Нужен образ portal-mobile-builder:<версия> той же версии, что комплект (и портал). Он собирается из комплекта один раз для каждой версии; нужен интернет. Параметром ANDROID_SDK_LICENSE_ACCEPTED=yes вы принимаете условия Android SDK — developer.android.com/studio/terms.

docker build -f builder/Dockerfile --build-arg ANDROID_SDK_LICENSE_ACCEPTED=yes -t portal-mobile-builder:<версия> .

Сборка образа идёт 10–20 минут: скачиваются JDK, Android SDK, пакеты npm и Gradle, внутри один раз собирается демо-приложение. Проверка: docker images portal-mobile-builder показывает образ с вашей версией.

Если сборка падает на скачивании образов node или eclipse-temurin (Docker Hub бывает недоступен), добавьте зеркало в /etc/docker/daemon.json: { "registry-mirrors": ["https://mirror.gcr.io"] }, перезапустите Docker (systemctl restart docker) и повторите сборку. Кроме Docker Hub сборке образа нужны dl.google.com, registry.npmjs.org и репозитории Google и Maven.

3. Ключ подписи

Каждое обновление приложения подписывается тем же ключом, что и первая версия. Потеряли ключ или пароль — обновить приложение у дилеров невозможно, придётся публиковать новое и просить всех переустановить.

Ключ создаётся один раз, в образе сборки: docker run --rm -it -v "$PWD":/kit -w /kit portal-mobile-builder:<версия> ./scripts/new-keystore.sh keys/upload.jks

Утилита спросит пароль хранилища, имя и организацию, пароль ключа (можно тот же). Псевдоним ключа — upload.

  • Сохраните keys/upload.jks и пароли в двух надёжных местах (например, в хранилище паролей компании и на отдельном носителе).
  • Этим ключом подписываются и APK для портала, и APK/AAB для RuStore, и AAB для Google Play (там он — «ключ загрузки», а приложение для пользователей Google подписывает своим ключом).
  • Для следующих версий скопируйте keys/upload.jks в папку нового комплекта — новый ключ не создавайте.

4. Сборка

Интернет для сборки не нужен.

  1. Задайте пароли ключа: export ANDROID_KEYSTORE_PASSWORD='…' ANDROID_KEY_PASSWORD='…'
  2. Соберите (вместо brands/acme — ваша папка бренда): docker run --rm -v "$PWD":/kit -w /kit -e ANDROID_KEYSTORE_FILE=/kit/keys/upload.jks -e ANDROID_KEY_ALIAS=upload -e ANDROID_KEYSTORE_PASSWORD -e ANDROID_KEY_PASSWORD portal-mobile-builder:<версия> ./scripts/build-android.sh brands/acme

Если запускаете через sudo, пишите sudo -E docker run …: без -E пароли из export не попадут в контейнер.

Результат — в папке out/:

  • ru.acme.dealer-<версия>.apk — для портала и RuStore;
  • ru.acme.dealer-<версия>.aab — для Google Play.

Если нужно пересобрать ту же версию (сменили иконку или цвет), добавьте к команде сборки --build 1, затем --build 2 и т. д.: магазины принимают только сборку с большим номером.

Дальше — Публикация приложения.