Собираем APK и AAB в Android Studio: кратко и по делу

Собрать APK в Android Studio можно через Build > Build APK(s) для локального теста или через Build > Generate Signed Bundle / APK для релизной (подписанной) сборки; для публикации в Google Play рекомендуется создавать AAB (Android App Bundle). Ниже — пошаговые инструкции, настройки подписи и практические советы для релиза.

Быстрая локальная сборка (Build APK)

  1. Откройте проект в Android Studio.
  2. Выберите Build > Build Bundle(s) / APK(s) > APK(s) или Build > Build APK(s).
  3. После завершения сборки нажмите «Locate» в уведомлении — APK лежит в app/build/outputs/apk//.
  4. Установите APK на устройство через adb install path/to/app.apk или скопируйте на устройство и откройте.

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

Советы:

  • Используйте buildVariant Debug для отладки, Release — для финальных проверок.
  • Перед установкой очистите старые версии: adb uninstall package.name.

Релизная сборка и подпись (Generate Signed Bundle / APK)

  1. Подготовка keystore:
    • Если нет — создайте в Android Studio: Build > Generate Signed Bundle / APK > Create new...
    • Сохраните keystore в безопасном месте и резервной копии — потеря keystore блокирует обновления приложения.
  2. В Android Studio: Build > Generate Signed Bundle / APK.
    • Выберите Android App Bundle (AAB) или APK.
    • Укажите путь к keystore, storePassword, keyAlias, keyPassword.
    • Выберите buildType = release.
  3. Автоматизация в 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 ускорит и обезопасит процесс релиза.