Введение: два формата, которые путают все
«Чем APK отличается от AAB?» — вопрос, который задают и на собеседованиях, и при первой публикации в Google Play. И оба раза в ответ чаще всего звучит «это почти одно и то же». Это не так: между ними принципиальная разница.
APK вы видели точно: это файл, который можно скачать, переслать и установить на телефон. AAB — тоже файл, но установить его напрямую нельзя, и это не баг, а замысел. Один формат создан для установки, второй — для публикации.
Разница между ними — не академическая мелочь: от неё зависит, как вы собираете релиз, кто подписывает ваше приложение и почему пользователи скачивают меньше данных. Разберём оба формата по порядку.
APK: установочный формат
APK (Android Package Kit) — это готовый установочный пакет: подписанный архив с кодом, ресурсами и манифестом, который Android-устройство может установить напрямую. Его можно получить, собрать и положить на сайт, переслать в мессенджере, установить вручную — никакого Google Play для этого не нужно.
Именно APK видит устройство при установке из любого источника: из Play, с сайта разработчика, из файлового менеджера. Одно устройство — один APK, который включает всё: код для всех архитектур процессора, все плотности экрана, все языки.
В Gradle APK собирается задачей assembleRelease, и это хорошо знакомый каждому релизный путь: собрали → подписали → загрузили → пользователи устанавливают.
APK — это «готовое блюдо»
APK самодостаточен: один файл под все устройства, подписанный ключом разработчика. Минус — размер: если в приложении несколько ABI и языков, каждый пользователь качает всё это целиком, даже если ему нужна только малая часть.
Раньше разработчики обходили это ограничение, собирая несколько APK под разные конфигурации устройств: отдельно под ARM, отдельно под x86, отдельно под разные плотности экрана. Работало, но превращало релиз в конвейер из пяти-десяти артефактов, которые нужно было подписывать, загружать и поддерживать.
AAB: формат публикации
AAB (Android App Bundle) — это публикационный формат. Определение из официальной документации: App Bundle включает весь скомпилированный код и ресурсы приложения, но откладывает генерацию и подписание APK на сторону Google Play.
Вы загружаете AAB в Play Console, а Google Play на основе вашего бандла собирает оптимизированные APK под каждую конфигурацию устройства: только нужная архитектура процессора, только нужная плотность экрана, только нужный язык. Пользователь скачивает минимум данных, а вы не собираете и не поддерживаете десяток артефактов — это происходит автоматически. Как сказано в той же документации, вам больше не нужно «собирать, подписывать и поддерживать несколько APK» для разных устройств.
Собирается бандл задачей bundleRelease. В Android Studio ему соответствует пункт меню Generate Signed App Bundle / APK.
файл вместо десятка
AAB заменяет конвейер из нескольких APK под разные конфигурации устройств одним файлом. APK под каждое устройство собирает Google Play.
У формата есть и дополнительные возможности: Play Feature Delivery — модули, которые скачиваются по условию или по требованию, и Play Asset Delivery — доставка больших игровых ассетов. И важное ограничение: формат AAB не поддерживает файлы расширений .obb, которые раньше использовались для больших ресурсов.
Разница: установка против публикации
Теперь главное — как отвечать на вопрос «в чём разница» коротко и по делу:
- APK — установочный формат: готовый, подписанный, ставится на устройство напрямую, один файл под все устройства.
- AAB — публикационный формат: не устанавливается, не подписывается разработчиком, а служит «исходником», из которого Google Play генерирует APK под каждое устройство.
Отсюда следуют два частых заблуждения, которые встречаются на собеседованиях:
Заблуждение №1: «AAB — это новый вид установочного файла». Нет. AAB нельзя установить на телефон: в нём нет подписанных APK для конкретного устройства, это «полуфабрикат» для Google Play.
Заблуждение №2: «AAB подписывает разработчик». Подпись ставится на этапе генерации APK из бандла — это делает Google Play в рамках Play App Signing. Разработчик подписывает сам бандл, а ключи для APK хранятся у Google.
Про подпись стоит сказать отдельно: при публикации через AAB вы обязательно используете Play App Signing — сервис Google, который хранит ключи подписи и подписывает сгенерированные APK. У этого есть и плюс, и ответственность: утерянный ключ перестаёт быть катастрофой (Google может выпустить обновление по резервному ключу), но доступ к аккаунту Play нужно беречь особенно.
Есть у бандла и практическое ограничение, о котором полезно знать: суммарный размер сжатых APK, которые скачает пользователь при установке (базовый APK плюс конфигурационные APK), не должен превышать 4 ГБ — об этом Play Console предупреждает при загрузке. На практике это редко становится проблемой, но при работе с тяжёлыми ассетами лучше помнить.
Практический пример, чтобы закрепить: приложение с поддержкой трёх архитектур и десяти языков. В виде APK каждый пользователь скачивает всё: код под все архитектуры и строки на всех языках. Через AAB пользователь с одним языком и одной архитектурой получает только свою комбинацию — экономия может составлять десятки мегабайт на установку, а для миллионов установок это уже заметные цифры и для пользователей, и для вашей статистики конверсии.
Вопросы на собеседовании
Тему APK/AAB спрашивают на стыке сборки и публикации — она быстро показывает, выпускал ли кандидат релизы или только писал код. Что нужно уметь сказать:
- APK — установочный формат, AAB — публикационный; AAB нельзя установить напрямую.
- Google Play генерирует и подписывает APK из бандла под каждое устройство — пользователи скачивают меньше данных.
assembleReleaseсобирает APK,bundleReleaseсобирает AAB.- Публикация в Play идёт через AAB, подпись — через Play App Signing.
- AAB даёт Feature Delivery и Asset Delivery, но не поддерживает
.obb.
И типичный промах, который я слышу на собеседованиях регулярно:
«AAB нужен, чтобы Play быстрее проверял приложение». Нет. Публикация через AAB обязательна для новых приложений в Google Play, но главная цель формата — генерация оптимизированных APK под конкретные устройства, а не скорость модерации.
Если спросят «зачем тогда APK вообще нужен» — отвечайте уверенно: APK остаётся конечным продуктом сборки. Из бандла Play собирает именно APK, и именно их устанавливают устройства. Дистрибуция вне Google Play (свой сайт, внутренние тесты, обходные площадки) — тоже через APK.
Полезно знать и рабочие сценарии, которые пригодятся в реальном проекте:
- Внутренняя раздача тестировщикам — собрали
assembleRelease(или debug) и отправили APK в мессенджер или на внутренний сервер. AAB для этого не подходит: он не устанавливается. - Локальная генерация APK из бандла — если нужно проверить, что именно Play соберёт из вашего AAB, используется официальный инструмент
bundletool: он разворачивает бандл в набор APK на вашей машине, и поведение будет максимально близко к тому, что увидят пользователи Play. - Публикация в Play — только AAB. Файл загружается в Play Console, остальное делает Google.
Меня зовут Рустем Бикбулатов, я senior Android-разработчик и ментор Яндекс Практикума, провожу технические собеседования. За время менторства у меня больше 100 учеников и разборов — темы сборки и публикации стабильно входят в список «слабых мест», которые мешают кандидатам с опытом 1–2 года перейти на уровень middle.
Хотите закрыть пробелы в сборке и публикации?
Вопросы про APK/AAB, Gradle и релизный цикл — это не «скучная тема», а гарантированные баллы на собеседовании. Бесплатная диагностика: разберу ваши пробелы и составлю план роста за 30–40 минут, без обязательств.
Итоги
APK и AAB — не конкуренты, а два этапа одной цепочки: вы публикуете AAB, Google Play превращает его в APK, пользователи устанавливают APK.
- APK — установочный пакет: подписанный, самодостаточный, один под все устройства.
- AAB — исходник для Play: не устанавливается, не подписывается разработчиком, генерирует APK под каждое устройство.
- Сборка:
assembleRelease→ APK,bundleRelease→ AAB; подпись — через Play App Signing.
Что запомнить
Одна фраза для собеседования: «AAB — формат публикации, из которого Google Play собирает и подписывает оптимизированные APK под каждое устройство». Скажете это и добавите пример из своего релиза — вопрос закрыт.
Если вы писали код, но релизы всегда выпускал кто-то другой, и теперь чувствуете пробелы в сборке и публикации — это нормальная точка роста. Напишите в Telegram, разберём вашу ситуацию и составим план подготовки.