Собираем APK и AAB в Android Studio: кратко и по делу
Собрать APK в Android Studio можно через Build > Build APK(s) для локального теста или через Build > Generate Signed Bundle / APK для релизной (подписанной) сборки; для публикации в Google Play рекомендуется создавать AAB (Android App Bundle). Ниже — пошаговые инструкции, настройки подписи и практические советы для релиза.
Быстрая локальная сборка (Build APK)
- Откройте проект в Android Studio.
- Выберите Build > Build Bundle(s) / APK(s) > APK(s) или Build > Build APK(s).
- После завершения сборки нажмите «Locate» в уведомлении — APK лежит в app/build/outputs/apk/
/. - Установите APK на устройство через adb install path/to/app.apk или скопируйте на устройство и откройте.
Build APK удобен для быстрой проверки на устройстве, но такие APK обычно не подписаны релизным ключом и не подходят для публикации.
Советы:
- Используйте buildVariant Debug для отладки, Release — для финальных проверок.
- Перед установкой очистите старые версии: adb uninstall package.name.
Релизная сборка и подпись (Generate Signed Bundle / APK)
- Подготовка keystore:
- Если нет — создайте в Android Studio: Build > Generate Signed Bundle / APK > Create new...
- Сохраните keystore в безопасном месте и резервной копии — потеря keystore блокирует обновления приложения.
- В Android Studio: Build > Generate Signed Bundle / APK.
- Выберите Android App Bundle (AAB) или APK.
- Укажите путь к keystore, storePassword, keyAlias, keyPassword.
- Выберите buildType = release.
- Автоматизация в Gradle (опционально):
- В app/build.gradle добавьте signingConfigs и привяжите к buildTypes.release.
- Не храните пароли в открытом репозитории — используйте локальные gradle.properties или переменные CI.
Пример минимальной конфигурации:
signingConfigs {
release {
storeFile file("keystore.jks")
storePassword property("keystore.password")
keyAlias "mykey"
keyPassword property("key.password")
}
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
Никогда не коммитьте keystore и пароли в публичные репозитории.
Разница APK vs AAB и когда что использовать
- APK — готовый установочный файл. Удобен для тестов и распространения вне Play Store.
- AAB — формат для публикации в Google Play. Play генерирует оптимизированные APK для устройств, уменьшая размер загрузки. Рекомендуется публиковать AAB.
Оптимизация, тестирование и CI
- Включите minifyEnabled (R8/ProGuard) для уменьшения размера и обфускации.
- Прогоните lint, unit-тесты и UI-тесты перед сборкой релиза.
- Используйте productFlavors для разных вариантов приложения (free/pro).
- Настройте CI (GitHub Actions, GitLab CI, Bitrise) для автоматической сборки и подписи в защищённой среде.
Частые ошибки
- Неверный keystore или пароль — ошибка подписи при Generate Signed APK. Проверьте путь и пароли.
- Неинкрементированный versionCode — Google Play отклонит загрузку. Увеличивайте versionCode при каждом релизе.
- Пароли в репозитории — риск компрометации. Используйте секреты CI или локальные свойства.
- Пропущенные ресурсы/манифестные разрешения — тестируйте на реальных устройствах и через internal testing в Play Console.
FAQ
- Как проверить, подписан ли APK? — Используйте apksigner verify path/to/app.apk или jarsigner -verify.
- Нужно ли всегда использовать AAB? — Для публикации в Google Play да, AAB предпочтительнее; для сторонней дистрибуции используйте APK.
- Как восстановить доступ, если потерял keystore? — Невозможно обновлять уже опубликованное приложение без того же keystore; придётся публиковать новое приложение с другим пакетом.
Итог: для быстрых тестов делайте Build APK, для релиза используйте Generate Signed Bundle / APK и предпочтительно создавайте AAB с правильно настроенной подписью, minify и тестами. Автоматизация через CI ускорит и обезопасит процесс релиза.