Введение
Подготовка релиза Android-приложения — ключевой этап перед публикацией в Google Play или других магазинах. Этот процесс включает настройку сборки, подписание кода и загрузку пакета в консоль разработчика. Следование этому руководству поможет избежать распространённых ошибок и обеспечить беспрепятственный выпуск приложения.
Требования и подготовка
Перед началом убедитесь, что у вас есть:
- Android Studio последней стабильной версии (рекомендуется 2023.2 или выше) с установленным Android SDK.
- JDK (Java Development Kit) версии 11 или выше для использования
keytool. - Ключ релиза (keystore) или возможность создать новый.
- Аккаунт разработчика Google Play (платная регистрация).
- Базовые знания работы с Android Studio и системой сборки Gradle.
Также убедитесь, что ваше приложение готово к релизу: все функции протестированы, ресурсы оптимизированы, а версии versionCode и versionName в build.gradle обновлены.
Шаг 1: Создание или подготовка keystore
Ключ релиза (keystore) — это хранилище цифровых сертификатов, которые подписывают APK или AAB. Без правильного keystore вы не сможете обновлять приложение в будущем.
Если keystore уже существует, убедитесь, что вы знаете пароль, псевдоним (alias) и расположение файла. Если keystore нужно создать, выполните команду в терминале:
keytool -genkeypair -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-key-alias
Команда запросит:
- Пароль для keystore (запомните его).
- Информацию о владельце (имя, организация, страна и т.д.) — можно заполнить условно.
- Псевдоним (alias) — например,
my-key-alias.
⚠️ Важно: Храните keystore и пароли в надёжном месте (например, в менеджере паролей). Потеря keystore означает невозможность обновления приложения в Google Play.
Шаг 2: Настройка signingConfigs в build.gradle
Откройте файл build.gradle (на уровне модуля app) и настройте подписание для конфигурации release.
Для Groovy DSL (build.gradle):
android {
signingConfigs {
release {
storeFile file('my-release-key.jks') // Путь к keystore
storePassword 'your_store_password' // Пароль keystore
keyAlias 'my-key-alias' // Псевдоним ключа
keyPassword 'your_key_password' // Пароль ключа
}
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true // Опционально: включите обфускацию
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
Для Kotlin DSL (build.gradle.kts):
android {
signingConfigs {
create("release") {
storeFile = file("my-release-key.jks")
storePassword = "your_store_password"
keyAlias = "my-key-alias"
keyPassword = "your_key_password"
}
}
buildTypes {
getByName("release") {
signingConfig = signingConfigs.getByName("release")
isMinifyEnabled = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
}
💡 Совет: Не храните пароли в открытом виде в
build.gradle. Используйте переменные среды или файлgradle.properties:MYAPP_RELEASE_STORE_FILE=my-release-key.jks MYAPP_RELEASE_KEY_ALIAS=my-key-alias MYAPP_RELEASE_STORE_PASSWORD=your_store_password MYAPP_RELEASE_KEY_PASSWORD=your_key_passwordИ в
build.gradleобратитесь к ним черезproject.findProperty("MYAPP_RELEASE_STORE_PASSWORD") as String.
Шаг 3: Сборка релизного пакета
В Android Studio:
- Выберите Build → Build Bundle(s) / APK(s).
- Для публикации в Google Play рекомендуется Build Bundle(s) (создаст
.aabфайл). Если нужен APK, выберите Build APK(s). - Убедитесь, что в диалоге выбрана конфигурация release.
- После сборки файлы будут в:
- Для AAB:
app/build/outputs/bundle/release/app-release.aab - Для APK:
app/build/outputs/apk/release/app-release.apk
- Для AAB:
⚠️ Важно: Если сборка завершилась с ошибками, проверьте настройки
signingConfigsи убедитесь, что keystore доступен.
Шаг 4: Тестирование релизной сборки
Перед публикацией обязательно протестируйте релизную версию, так как она может отличаться от отладочной (например, из-за обфускации).
Для APK:
Установите APK на устройство через ADB:
adb install -r app/build/outputs/apk/release/app-release.apk
Флаг -r перезапишет существующее приложение.
Для AAB:
Сгенерируйте APK из AAB с помощью bundletool (скачайте его с GitHub):
bundletool build-apks --bundle=app-release.aab --output=app.apks --ks=my-release-key.jks --ks-key-alias=my-key-alias --ks-pass=pass:your_store_password --key-pass=pass:your_key_password
Затем установите APK:
bundletool install-apks --apks=app.apks
Проверьте все основные сценарии использования, производительность и стабильность. Особое внимание уделите функциям, зависящим от подписи (например, динамические модули или интеграции с API).
Шаг 5: Подготовка к публикации в Google Play Console
- Войдите в Google Play Console с аккаунтом разработчика (стоимость $25).
- Создайте приложение (если его нет): нажмите "Создать приложение", выберите язык, укажите название и тип приложения.
- Загрузите пакет:
- В разделе Производство (Production) или Тестирование (Testing) нажмите "Создать выпуск".
- Загрузите файл
.aabили.apk. Google Play обработает его и проверит на соответствие политикам.
- Заполните метаданные:
- Описание: краткое и полное, с ключевыми словами.
- Графика: иконка приложения (512x512), скриншоты (минимум 2 для телефона), Feature Graphic (1024x500).
- Категория: выберите подходящую.
- Контактные данные: email, сайт, телефон.
- Настройте распространение:
- Страны: выберите регионы для публикации.
- Цены: бесплатно или платно, настройте валюту.
- Возрастные ограничения: в соответствии с контентом приложения.
- Проверьте и отправьте:
- Нажмите "Проверить выпуск", исправьте ошибки (если есть).
- Затем "Запустить выпуск в производство" или "Начать тестирование" (для alpha/beta).
Шаг 6: Публикация приложения
После успешной проверки Google Play (обычно от нескольких часов до дней) вы можете выпустить приложение:
- В Google Play Console перейдите в раздел Выпуски → Производство.
- Нажмите "Управление выпуском" для вашего релиза.
- Выберите "Выпустить" для публикации в продакшен.
- Для постепенного выпуска (staged rollout) укажите процент пользователей (например, 10%), чтобы сначала собрать отзывы.
Мониторьте статус в консоли: приложение появится в Google Play после обработки (может занять до 24 часов). Проверьте ссылку на приложение и убедитесь, что все данные корректны.
Проверка результата
- Откройте страницу вашего приложения в Google Play с разных устройств.
- Убедитесь, что приложение устанавливается и запускается.
- Проверьте Статистику в Google Play Console: установки, сбои, отзывы.
- Если используется staged rollout, следите за обратной связью от первых пользователей.
Возможные проблемы
Ошибка подписи при сборке
- Симптом:
Signing config release is missingилиKeystore file not found. - Решение: Проверьте путь к keystore в
build.gradle, убедитесь, что файл существует. Используйте абсолютный или правильный относительный путь.
Несоответствие версии versionCode
- Симптом: Google Play отклоняет загрузку с ошибкой "Version code must be higher than previous version".
- Решение: Увеличьте
versionCodeвbuild.gradleдля каждого нового релиза.versionCode— целое число, которое всегда должно расти.
Провал валидации Google Play
- Симптом: Ошибки при проверке, например, "Policy violation" или "App bundle contains native code".
- Решение: Внимательно прочитайте политики Google Play. Убедитесь, что приложение не содержит вредоносного кода, правильно использует разрешения, и все библиотеки совместимы.
Утерянный keystore
- Симптом: Нет доступа к keystore для подписания обновлений.
- Решение: К сожалению, без keystore обновить приложение невозможно. Придётся создать новое приложение с новым package name и keystore. Это подчёркивает важность резервного копирования keystore.
Долгая проверка в Google Play
- Симптом: Выпуск завис в статусе "В процессе проверки" дольше обычного.
- Решение: Обычно проверка занимает от нескольких часов до 2 дней. Если прошло больше 7 дней, проверьте email на уведомления от Google Play или обратитесь в поддержку через консоль.