Открыть сервис

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 в двоичном формате.

Процесс сборки и доставки

  1. Сборка: Разработчик создаёт AAB с помощью Android Studio или командной строки (команда bundletool). Файл содержит все ресурсы и код, но не разделён на отдельные APK.
  2. Загрузка: AAB загружается в консоль Google Play.
  3. Генерация APK: Google Play серверы, используя инструмент bundletool, динамически генерируют набор APK-файлов для каждой конфигурации устройства (разные DPI, языки, архитектуры CPU). Создаются:
  • base APK: обязательный для всех устройств.
  • configuration APKs: содержат ресурсы для конкретной конфигурации (например, изображения для определённой плотности экрана).
  • feature APKs: для дополнительных модулей, если они включены.
  1. Подпись: Все сгенерированные APK подписываются сертификатом разработчика, хранящимся в Google Play.
  2. Доставка: При установке приложения на устройство 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 →