Приложение готово, но выкладывать его на всеобщее обозрение рано: оно нужно только вашей команде, заказчику или узкому кругу пользователей. Этот гайд — о том, как провести сборку через Google Play Console (веб-консоль разработчика, где публикуются приложения для Android) по закрытому контуру и поставить её на Android-устройство, не открывая приложение всему миру. Инструкция не привязана к конкретной версии Android: она подходит и для телефонов, и для планшетов, где есть Google Play. Мы разберём два сценария — внутренний тестовый трек (закрытый канал распространения сборки) и private app в Managed Google Play (корпоративный каталог приложений для сотрудников организации).


1. Зафиксируйте имя пакета и версию. Откройте `app/build.gradle` (или `build.gradle.kts`) и проверьте блок `defaultConfig`.
Пример:
defaultConfig {
applicationId "com.example.myprivateapp"
versionCode 1
versionName "1.0"
}
Ожидаемый результат: имя пакета вида `com.example.myprivateapp` и версия `1.0` зафиксированы. Почему это важно: имя пакета — уникальный идентификатор приложения, после первой загрузки в Play его уже нельзя изменить.
2. Создайте ключ подписи. В терминале выполните:
Пример:
keytool -genkeypair -v \
-keystore private-release.jks \
-alias private_key \
-keyalg RSA -keysize 2048 -validity 10000
Ожидаемый результат: утилита спросит пароль и данные организации, затем выведет строку вида «Generating 2 048 bit RSA key pair» и создаст файл `private-release.jks`. Почему это работает: Google Play принимает только подписанные сборки, а keystore — единственное доказательство, что релиз выпустили именно вы. Сразу сделайте резервную копию файла и пароля.
3. Пропишите подпись в Gradle и соберите бандл.
Пример:
./gradlew bundleRelease
Ожидаемый результат: в папке `app/build/outputs/bundle/release/` появится файл `app-release.aab`. Почему это работает: Google Play требует именно AAB — из него магазин сам нарезает APK под конкретное устройство, и бандл весит меньше для пользователя.
4. Проверьте сборку локально, до загрузки в магазин.
Пример:
adb devices
adb install -r app/build/outputs/apk/release/app-release.apk
Ожидаемый результат: команда `adb devices` покажет серийный номер подключённого телефона, а `adb install` завершится словом `Success`. Почему это работает: вы ловите ошибки запуска до модерации, а не после неё.
5. Создайте приложение в Google Play Console: раздел «Все приложения» → «Создать приложение». Укажите название, язык по умолчанию, тип «Приложение», статус «Бесплатное» и поставьте галочку согласия с политиками. Ожидаемый результат: появляется карточка приложения с пустым списком треков.
6. Заполните обязательные разделы карточки: описание, иконка, скриншоты, политика конфиденциальности, рейтинг контента, целевая аудитория, категория. Ожидаемый результат: в сводке публикации исчезают красные отметки «Требуется действие». Без этого трек не опубликуется, даже если он закрытый.
7. Загрузите бандл во внутренний трек. Откройте «Тестирование» → «Внутреннее тестирование» → «Создать новый выпуск», загрузите `app-release.aab`, добавьте заметки к выпуску и сохраните. Ожидаемый результат: сборка получает статус «Готово к публикации», номер версии виден в списке.
8. Добавьте тестировщиков. На вкладке «Тестировщики» создайте список e-mail-адресов и вставьте его в поле. Ожидаемый результат: после сохранения появляется ссылка вида `https://play.google.com/apps/internaltest/...` — её и отправляете людям. Почему так: обычный поиск в Google Play приложение не найдёт, пока вы не выпустите его в общий доступ.
9. Если приложение нужно только внутри организации, используйте Managed Google Play (корпоративный каталог приложений). Там private app публикуется для конкретной организации и не появляется в общем поиске Google Play. Ожидаемый результат: приложение видно только аккаунтам вашего домена.
10. Когда выпусков становится много, рутину стоит автоматизировать — об этом подробно в гайде Как автоматизировать публикацию приложений в App Store и Google Play с помощью ИИ-агентов. Ожидаемый результат: загрузка бандла и заполнение заметок к релизу перестают быть ручными шагами.
Чек-лист перед публикацией трека:

Симптом: тестировщик открывает ссылку и видит «Приложение не найдено» или «Элемент не найден».
Причина почти всегда в аккаунте: на устройстве активен другой Google-адрес, не входящий в список. Решение: откройте на телефоне «Настройки» → «Аккаунты» и убедитесь, что нужный e-mail добавлен и выбран в Google Play; затем проверьте, что адрес внесён в список тестировщиков и список сохранён; после этого подождите — изменения в Play растекаются не мгновенно.
Симптом: при загрузке бандла ошибка вида «App bundle was signed with the wrong key» или «ключ не совпадает».
Причина — сборка подписана другим keystore, чем в предыдущем выпуске. Решение: не создавайте новый ключ «наугад»; найдите исходный файл `.jks` и пароль, пересоберите бандл с ним и загрузите заново. Если ключ потерян безвозвратно, обращайтесь в поддержку Play — самостоятельно сбросить подпись нельзя.
Симптом: приложение доступно вам, но не устанавливается на телефон коллеги — магазин пишет «недоступно в вашей стране».
Причина — в настройках трека не отмечены страны распространения. Решение: в треке откройте «Страны и регионы», добавьте нужную страну, сохраните и опубликуйте изменения. Ожидаемый результат: ссылка начинает открываться у всех из списка тестировщиков.
Если Google Play по каким-то причинам недоступен, как альтернативный канал на Android посмотрите Как скачивать и устанавливать ИИ-приложения на Android через RuStore.
Можно ли опубликовать приложение только для сотрудников, а не для всех?
Да. Для небольшой команды подходит внутренний или закрытый трек: сборка видна только людям из списка e-mail. Для организации с собственным доменом есть Managed Google Play — там private app появляется в корпоративном каталоге и не индексируется в обычном поиске магазина.
Что загружать в Google Play — APK или AAB?
В Google Play загружается AAB: магазин сам собирает из него установочный файл под конкретное устройство. APK пригодится для быстрой проверки вручную — например, через `adb install`.
Увидят ли приложение обычные пользователи, пока идёт тестирование?
Нет. Пока вы не выпустите сборку в открытый доступ, приложение не находится поиском в Google Play, а ссылку получают только тестировщики из списка.
Нужно ли проходить модерацию для закрытого трека?
Да, проверка касается любого выпуска. Первый выпуск обычно рассматривается дольше последующих, поэтому закладывайте запас по времени и не планируйте демонстрацию «завтра утром».
Как выпустить обновление?
Увеличьте `versionCode` в `build.gradle`, соберите новый `app-release.aab` тем же keystore и загрузите его в тот же трек. Тестировщики получат обновление обычным способом — через Google Play.