Skip to content

Google Play

Роман Зопиров edited this page Oct 29, 2026 · 2 revisions

Модуль Google Play Store (playstore)

Модуль Google Play автоматизирует распространение Android App Bundles (.aab) и APK (.apk) через официальный Google Play Developer API v3.


Требования и авторизация

  1. Аккаунт Google Play Console: Активный аккаунт разработчика с созданным приложением.
  2. Проект Google Cloud: Привязан к Google Play Console с включенным API Google Play Android Developer API.
  3. Сервисный аккаунт (Service Account): Ключ в формате JSON с правами управления релизами в Google Play Console.

Параметры авторизации:

Поле Флаг CLI Переменная окружения Описание
Package Name --package-name PLAY_PACKAGE_NAME Идентификатор приложения (например, one.obxodka.app)
Service Account JSON --service-account PLAY_SERVICE_ACCOUNT_JSON Путь к JSON-файлу ключа или его строковое содержимое
Track --track PLAY_TRACK Трек релиза (по умолчанию: internal)

Команды модуля

Команды:
  publish       Загрузить AAB/APK бандл, метаданные и опубликовать на трек
  tracks        Вывести список доступных треков и версии

1. Команда publish

octopublish playstore publish \
  --bundle "./android-dist/app-release.aab" \
  --package-name "one.obxodka.app" \
  --service-account "./keys/play-service-account.json" \
  --track "internal" \
  --notes-dir "./packaging/whatsnew" \
  --desc-dir "./packaging/store/android"

Доступные треки релизов:

  • internal: Внутреннее тестирование (до 100 тестеров, мгновенная доступность).
  • alpha: Закрытое тестирование.
  • beta: Открытое бета-тестирование.
  • production: Публичный релиз в магазине для всех пользователей.

Локализованные заметки о релизе (whatsnew):

При указании --notes-dir инструмент автоматически находит файлы заметок (whatsnew-ru-RU.txt -> ru-RU, whatsnew-en-US.txt -> en-US) и отправляет их в карточку соответствующего языка в Google Play.


2. Защита Safe-Merge

Google Play Developer API требует полного обновления объекта листинга при вызове PUT /edits/{id}/listings/{language}. Если какое-либо поле не передано, оно сбрасывается.

OctoPublisher автоматически выполняет GET, считывает текущее живое название приложения и аккуратно объединяет его с новыми текстами описания и скриншотами.

Clone this wiki locally