Мобильные приложенияJava / Kotlin

Как опубликовать Android-приложение в RuStore: APK, подпись и модерация

Готовим Android-приложение к RuStore: выбираем APK или AAB, создаём подпись, заполняем карточку, отправляем на модерацию и читаем замечания.

Кодик

Автор

6 мин чтения

RuStore можно освоить на одном небольшом проекте, если сразу видеть вход, действие и результат. Публикация в RuStore начинается не с кнопки загрузки, а с версии, подписи, стабильной сборки и заполненной карточки приложения. Ниже вы соберёте работающий пример и проверите обычный и граничный сценарии.

Debug APK запускается на телефоне, но магазин требует release-сборку, постоянную подпись, уникальную версию и данные для модерации. Поэтому отделим настройку, входные данные, основное действие и проверку. В этой статье вы соберёте release-файл, подписанный одним ключом, чек-лист карточки и понятный маршрут отправки на модерацию. Проверка: сборка устанавливается, подпись проверяется, versionCode увеличен, а форма публикации не содержит пустых обязательных полей.

1Соберите минимум

выбрать APK или AAB и режим release. Не расширяйте проект до первого успешного запуска.

2Увидьте данные

apksigner подтверждает сертификат. Проверяйте значение, а не отсутствие ошибки.

3Измените правило

После успеха добавьте второй release с увеличенным versionCode и коротким changelog. Так копирование станет практикой.

Как устроен учебный проект RuStore

RuStore разделяет подготовку, основное действие, проверку ответа и сохранение результата. Держите ввод, логику и отображение раздельно: тогда каждый этап можно проверить отдельно.

ЭтапДействиеПроверяемый результат
Сборкавыбрать APK или AAB и режим releaseфайл создаётся без debug-флага
Подписьсоздать keystore и настроить signingConfigapksigner подтверждает сертификат
Карточкадобавить название, описание, иконку и скриншотыпредпросмотр заполнен
Модерациязагрузить файл и отправить версиюв кабинете появился статус проверки

Контрольные точки: сборка, подпись, карточка и модерация. Следующий шаг начинается после совпадения с ожидаемым результатом.

Путь данных в проекте RuStore
От входных данных до видимого результата. Сначала проверяется вход, затем действие и только потом интерфейс.

Зафиксируйте первый успех Установите release-сборку на отдельное устройство и пройдите главный сценарий до загрузки в кабинет. Сохраните команду запуска и ожидаемый вывод.

Собираем рабочий пример шаг за шагом

Материал сверялся с официальной документацией сервиса 21 октября 2026 года. Сделайте резервную копию keystore и паролей в защищённом хранилище. Потеря ключа может лишить возможности выпускать совместимые обновления. Проверьте текущую папку через pwd или Get-Location. Вставьте пример целиком, выполните один раз, затем разбирайте по частям.

# Создайте ключ один раз и сохраните его безопасно
keytool -genkeypair -v \
  -keystore codik-release.jks \
  -alias codik \
  -keyalg RSA -keysize 2048 -validity 10000

# Соберите release-вариант из корня Android-проекта
./gradlew clean bundleRelease

# Для APK проверьте подпись и сертификат
apksigner verify --verbose --print-certs app-release.apk

# Проверьте содержимое каталога сборки
ls -lh app/build/outputs/bundle/release/
Что должно произойти после запуска
  • Gradle создаёт release AAB в каталоге outputs, а не debug-файл из предыдущего запуска.
  • Проверка подписи показывает сертификат и успешную верификацию.
  • Повторный запуск даёт тот же предсказуемый результат.
  • Пустой ввод получает понятное сообщение вместо падения.

Код держит подготовку отдельно от внешнего действия, поэтому ошибку можно найти на конкретном шаге. Найдите в примере вход, проверку и место формирования результата.

Хрупкий и проверяемый вариант RuStore
Что отличает устойчивый проект от случайного запуска. Явные границы делают ошибку локальной и понятной.

Что происходит внутри и почему это работает

versionCode определяет порядок обновлений, versionName показывается пользователю, а цифровая подпись связывает будущие версии с тем же разработчиком. Логику держите отдельно от вывода: функция получает аргумент и возвращает значение, а интерфейс показывает его. Keystore нельзя хранить в публичном Git. Защитите резервную копию и запишите процесс восстановления доступа отдельно от проекта.

ЧастьЗа что отвечаетЧто проверить
Release buildсодержит оптимизированный вариант приложенияdebuggable выключен
Подписьподтверждает происхождение обновлениясертификат совпадает между версиями
Карточка RuStoreобъясняет назначение и данные приложениятексты и скриншоты актуальны

APK можно установить напрямую, AAB предназначен для сборки оптимизированных APK на стороне магазина. Выбор зависит от требований кабинета и проекта, но исходный release всегда тестируется до отправки. Не прячьте поток в одном обработчике: сохраните вход, проверьте его, вызовите операцию и только затем обновите интерфейс.

Проверьте границу Увеличьте versionCode, соберите вторую версию и убедитесь, что устройство принимает её как обновление, а не отдельное приложение. Меняйте одно условие за прогон, чтобы видеть причину.

Проверяем проект и добавляем свою функцию

Подготовьте тестовую карточку: короткое описание, полное описание, иконку, три честных скриншота и контакты поддержки. До правки запишите ожидаемое поведение одним предложением. После граничного теста повторите обычный сценарий.

Проверка своими руками
  1. Сохраните ожидаемый результат: сборка устанавливается, подпись проверяется, versionCode увеличен, а форма публикации не содержит пустых обязательных полей.
  2. Измените правило: добавьте второй release с увеличенным versionCode и коротким changelog. Сначала предскажите итог.
  3. Передайте граничное значение и убедитесь, что приложение не падает.
  4. Верните корректные данные и объясните роли трёх основных частей.
Готово, если выполняются все пункты
  • файл создаётся без debug-флага
  • apksigner подтверждает сертификат
  • предпросмотр заполнен
  • в кабинете появился статус проверки

Полезное улучшение сохраняет исходный сценарий и добавляет одну новую проверяемую возможность. Полезная правка проходит от нового ввода до видимого результата.

Четыре контрольные точки RuStore
Четыре проверки перед следующим шагом. Каждый следующий этап начинается после наблюдаемого результата.

Что запомнить и куда двигаться дальше

После отправки сохраните номер версии, хеш файла и замечания модерации. Исправляйте конкретную причину и повторно проверяйте release-сборку. Для закрепления откройте в первом Android-приложении, в приложении React Native и Expo и в публикации проекта на GitHub.

Как изучить тему в Кодике

Сначала разберите входные данные и один успешный вызов, затем изучайте дополнительные параметры. Сначала восстановите главную функцию и проверьте её на трёх значениях.

ШагЧто разобратьМини-проверка
1. ОсноваСтруктуру Android-проекта, build types и версииОбъясните вход и выход функции.
2. ИнструментKeystore, signingConfig, APK и AABПовторите команду по памяти.
3. ПроектRelease-сборку и карточку магазинаПроверьте два сценария.
4. РефакторингОбновления, политику данных и ответы модерацииРазделите ввод, логику и вывод.

Перепишите ключевую функцию по памяти и проверьте её на корректном, пустом и ошибочном вводе. Базовый синтаксис закрепите через курс Java.

Загружен debug APK

Он предназначен для разработки. Соберите release-вариант.

Потерян keystore

Обновление тем же пакетом становится проблемой. Храните защищённую копию.

versionCode не увеличен

Магазин не принимает новую версию как обновление.

Чужие или старые скриншоты

Карточка не соответствует реальному интерфейсу и получает замечание.

Сверяйтесь с первичной документацией. Команды и ограничения примера проверены по официальному источнику 1. Если версия инструмента изменилась, официальный источник важнее старого скриншота.

Что получится в итоге

Готовый результат проекта: Как опубликовать Android-приложение в RuStore: APK, подпись и модерация
Финальный экран показывает результат, состояние запроса и понятное сообщение об ошибке без раскрытия секретов.

Короткие ответы
Чем versionCode отличается от versionName?

Первый используется системой для порядка обновлений, второй показывается пользователю.

Почему keystore важнее одного APK?

Один ключ нужен для подтверждения всех следующих обновлений приложения.

Что проверять первым, если RuStore не запускается?

Версию среды, текущую папку, команду запуска и первую строку ошибки.

Как понять, что проект RuStore работает?

Проверьте основной сценарий, неверный ввод, повторный запуск и один граничный случай.

Можно ли начать с готового кода?

Да. Добейтесь результата, измените одно правило и восстановите ключевую функцию без копирования.

Сделайте один осознанный шаг дальше

Выберите одно улучшение и проведите его от ввода до результата.

Если не хватает основы, перейдите курс Java, затем восстановите ключевую функцию без подсказки.