Android App Bundle
Android App Bundle (AAB) — это формат публикации приложений для операционной системы Android, разработанный компанией Google. В отличие от универсального APK-файла, AAB представляет собой архив, содержащий все скомпилированные ресурсы и код приложения, но не предназначенный для непосредственной установки на устройство. Вместо этого Google Play использует AAB для генерации и подписи оптимизированных APK-файлов, адаптированных под конкретную конфигурацию устройства (разрешение экрана, язык, архитектура процессора). Формат был представлен в 2018 году и с августа 2021 года стал обязательным для публикации новых приложений в Google Play.
История
Предпосылки создания
До появления AAB разработчики публиковали приложения в виде универсальных APK-файлов, которые содержали ресурсы для всех возможных конфигураций устройств. Это приводило к избыточному размеру файла: пользователь скачивал код и ресурсы, не нужные для его конкретного устройства (например, изображения для экранов с другой плотностью пикселей или библиотеки для неподдерживаемых процессоров). В результате росло время загрузки, расход трафика и занимаемое место на устройстве.
Разработка и внедрение
Google начала работу над новым форматом в 2017 году. В мае 2018 года на конференции Google I/O был анонсирован Android App Bundle. В том же году формат получил поддержку в Android Studio 3.2. Первоначально AAB был опциональным: разработчики могли выбирать между традиционным APK и новым форматом. В 2020 году Google объявила, что с августа 2021 года все новые приложения, публикуемые в Google Play, должны использовать AAB. Исключения были сделаны для приложений, распространяемых вне Google Play (через сторонние магазины или прямыми ссылками).
Устройство и принцип работы
Структура AAB
AAB-файл — это ZIP-архив с расширением .aab, содержащий следующие основные компоненты:
- base/: базовый модуль приложения, включающий код, ресурсы и манифест, необходимые для работы на любом устройстве.
- modules/: дополнительные модули (feature modules), которые могут загружаться по требованию (on-demand) или устанавливаться вместе с базовым приложением.
- BundleConfig.pb: файл конфигурации в формате Protocol Buffers, содержащий метаданные о версии формата и поддерживаемых конфигурациях.
- manifest/: AndroidManifest.xml в двоичном формате.
Процесс сборки и доставки
- Сборка: Разработчик создаёт AAB с помощью Android Studio или командной строки (команда
bundletool). Файл содержит все ресурсы и код, но не разделён на отдельные APK. - Загрузка: AAB загружается в консоль Google Play.
- Генерация APK: Google Play серверы, используя инструмент
bundletool, динамически генерируют набор APK-файлов для каждой конфигурации устройства (разные DPI, языки, архитектуры CPU). Создаются:
- base APK: обязательный для всех устройств.
- configuration APKs: содержат ресурсы для конкретной конфигурации (например, изображения для определённой плотности экрана).
- feature APKs: для дополнительных модулей, если они включены.
- Подпись: Все сгенерированные APK подписываются сертификатом разработчика, хранящимся в Google Play.
- Доставка: При установке приложения на устройство Google Play скачивает только те APK, которые соответствуют конфигурации устройства. Например, для телефона с русским языком, экраном 1080p и процессором ARM64 будет загружен только соответствующий набор файлов.
Преимущества перед APK
- Уменьшение размера загрузки: В среднем размер устанавливаемого приложения сокращается на 15–20% по сравнению с универсальным APK. Для некоторых приложений экономия достигает 50%.
- Динамическая доставка модулей: Возможность загружать функции приложения по требованию (например, игровой уровень или платёжный модуль) без обновления всего приложения.
- Оптимизация для разных устройств: Автоматическая адаптация под различные экраны, языки и архитектуры без необходимости создавать отдельные APK для каждой комбинации.
Классификация и виды
По способу использования
- Базовый AAB: основной формат для публикации в Google Play.
- Тестовый AAB: используется для внутреннего тестирования через Google Play Console или локально с помощью
bundletool.
По модульной структуре
- Одномодульные AAB: содержат только базовый модуль. Используются для простых приложений без дополнительных функций.
- Многомодульные AAB: включают один или несколько дополнительных модулей (feature modules), которые могут быть установлены сразу или по требованию.
Применение
Основное назначение
AAB является стандартом для публикации приложений в Google Play. Все новые приложения, начиная с августа 2021 года, должны использовать этот формат. Существующие приложения, опубликованные до этой даты, могут продолжать использовать APK, но для обновлений рекомендуется перейти на AAB.
Дополнительные возможности
- Динамические функции (Dynamic Features): Разработчики могут создавать модули, которые загружаются только при необходимости. Например, приложение для редактирования фото может загружать модуль с фильтрами только после покупки.
- Instant Apps: AAB поддерживает технологию Google Play Instant, позволяющую запускать приложения без установки.
- Play Asset Delivery: Для игр AAB позволяет доставлять большие ресурсы (текстуры, звуки) через Google Play, оптимизируя загрузку.
Ограничения и критика
Зависимость от Google Play
AAB не может быть установлен напрямую на устройство. Для установки требуется либо Google Play, либо инструмент bundletool, который может конвертировать AAB в набор APK. Это создаёт зависимость от экосистемы Google и ограничивает распространение приложений через сторонние магазины или прямыми ссылками.
Сложность отладки
Разработчики не могут протестировать AAB непосредственно на устройстве. Для тестирования необходимо использовать bundletool для генерации APK или специальные инструменты в Android Studio. Это добавляет шаг в процесс разработки.
Конфиденциальность
Google Play получает доступ к полному коду приложения, что может вызывать опасения у разработчиков, использующих проприетарные алгоритмы. Однако Google утверждает, что AAB не раскрывает больше информации, чем традиционный APK, и что код не анализируется без согласия разработчика.
Поддержка сторонних магазинов
Некоторые сторонние магазины приложений (например, Amazon Appstore, Huawei AppGallery) не поддерживают AAB. Для публикации в них разработчикам приходится дополнительно создавать универсальные APK.
Интересные факты
- Первым крупным приложением, перешедшим на AAB, стала игра «Clash Royale» от Supercell. Размер загрузки сократился на 20%.
- Формат AAB не является открытым стандартом. Google контролирует его развитие и использование.
- Инструмент
bundletoolс открытым исходным кодом позволяет разработчикам и сторонним магазинам работать с AAB, но не предоставляет всех функций серверной части Google Play. - В 2022 году Google объявила, что AAB поддерживает сжатие ресурсов с помощью алгоритма Brotli, что дополнительно уменьшает размер загрузки.
Источники
- Документация Android Developers: «Android App Bundle» (Google, 2023)
- «Android App Bundle: A new way to publish Android apps» (Google I/O 2018)
- «Google Play will require new apps to use Android App Bundle from August 2021» (Android Developers Blog, 2020)
- «Bundletool: How to build and test Android App Bundles» (GitHub, 2023)
- «Dynamic Delivery: How Android App Bundles work» (Google, 2022)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →