Наборы app bundle что это
Что такое Android App Bundle (AAB)
Возможно, Вы слышали термин «APK». Однако все более распространенным становится новый термин «Android App Bundle» (AAB). Так что же такое AAB и заменит ли он APK?
Что такое Android App Bundle
Начиная с августа 2021 года, Google будет требовать, чтобы все приложения Android, опубликованные в Play Store, использовали формат «Android App Bundle». Раньше приложения могли использовать формат AAB или старый формат APK.
AAB имеет все те же ресурсы, но также включает компоненты, называемые «Динамические функции» и «Пакеты активов». Преимущества этих функций заставляют Google отказываться от APK в пользу AAB.
Проще говоря, App Bundle включает в себя все компоненты для создания APK. Когда Вы загружаете App Bundle из Play Store, он создает APK, предназначенный для Вашего конкретного устройства.
Каковы преимущества AAB
Android App Bundle имеют несколько преимуществ. Прежде всего, AAB создают APK-файлы меньшего размера. Поскольку Bundle создает приложение специально для Вашего устройства, могут потребоваться не все компоненты, что приведет к уменьшению размеров файлов.
Также не все эти компоненты нужно загружать заранее. Концепция «динамической доставки» означает, что Вы изначально получаете приложение, которое может загружать и устанавливать новые функции по мере необходимости. Поэтому, если Вы никогда не используете определенные функции, они не загружаются на Ваше устройство.
Короче говоря, преимущество AAB в том, что они просто более гибкие и динамичные. Меньшие размеры файлов, более простая предварительная загрузка и предоставление компонентов по мере необходимости делают APK-файлы более разумными.
Заменят ли App Bundles файлы APK
Когда Google объявил, что для Play Store потребуются пакеты Android App Bundle вместо APK, возникло общее недоразумение: означает ли это, что Вы больше не сможете устанавливать APK на свое устройство? Ответ — нет.
Фактически, как объяснялось в разделе выше, App Bundle создают APK-файлы. APK — это то, что запускает Android, но AAB — это то, что разработчик загружает в Play Store.
App Bundles могут заменять APK-файлы в Play Store, но не на самих устройствах Android. Вы по-прежнему можете загружать APK-файлы на свое устройство, как всегда. Фактически, Вы также можете загружать неопубликованные файлы AAB. Будьте уверены, что это всего лишь изменение в Play Store, а не в том, как ОС Android работает с файлами приложений.
Заметки из Зазеркалья
Внимание! С августа 2021 года публиковать новые приложения в Google Play можно будет только в виде Android App Bundle (AAB).
Android App Bundle включает в себя весь скомпилированный код и ресурсы вашего приложения, а также перекладывает создание APK и подписки на Google Play. Конечные APK-файлы под конкретные устройства и архитектуры процессоров в этом случае магазин собирает сам. В случае необходимости их можно будет получить потом из консоли разработчика. Пакет Android App Bundle позволяет упростить работу по сборке приложения меньшего размера, что может повысить успешность установки и сократить количество удалений. Пакет имеет расширение файла «.aab».
Магазин уже больше года принимает приложения для загрузки в формате AAB и теперь начинается постепенный отказ от публикации приложений в формате APK, который используется для установки приложений на устройство.
Переходить на новую мобильную платформу 8.3.19 сейчас нет никакой срочности, если вы не планируете выпускать новое приложение в магазине. Обновлять в формате APК существующие приложения можно будет в течение нескольких месяцев и после августа 2021.
Следите за сообщениями от Google.
Сборщик мобильных приложений подготовлен для сборки нового формата. В новой версии разработчику необходимо создать ключ загрузки в настройках поставщика и собрать приложение в новом формате на мобильной платформе версии 8.3.19.52 и выше.
Также исправлен и описан процесс автоматической загрузки результатов сборки приложения как в формате APK, так и в формате AAB.
В документации по сборщику мобильных приложений можно найти новую информацию по ключам подписи и загрузки в настройках поставщика, о сборке приложения в новом формате и об автоматической загрузке приложения в магазин Google Play:
Справка Google по публикации приложений в магазине:
Переход на сборку Android App Bundle в сборщике мобильных приложений и публикацию в магазине Google Play
Прежде всего, обновите сборщик мобильных приложений на версию из последних дистрибутивов мобильной платформы 8.3.19.
После этого загрузите в него непосредственно дистрибутив мобильной платформы 8.3.19. Именно в такой последовательности.
В противном случае старый сборщик может неправильно загрузить в базу новый дистрибутив, что потенциально приведет к ошибкам сборки.
Перевод существующей публикации на сборку Android App Bundle
Шаг 1. Зарегистрируйтесь в сервисе подписания приложений Google Play
1. Откройте Play Console.
2. Выберите приложение.
После этого будет открыта «Программа подписания приложений».
Шаг 2. Отправьте оригинальный ключ подписи приложения в Google
1. В «Программе подписания приложений» выберите «Экспортировать и загрузить ключ из Java Keystore«.
2. Оригинальный ключ подписи приложения следует выгрузить в сборщике мобильных приложений:
3. Полученный файл с расширением «.pepk» загрузите на странице «Программа подписания приложений» в Play Console.
Внимание! Не рекомендуется создавать ключ подписи в магазине Google Play, поскольку его нельзя получить из магазина и использовать в сборщике мобильных приложений.
Внимание! Включение автоматической подписки приложения распространяется на весь срок действия вашего приложения.
В целях обеспечения безопасности после регистрации в программе подписания вы не сможете получить копию ключа подписи вашего приложения и не сможете удалить его с серверов Google, не удалив само приложение.
Шаг 3. Создайте ключ загрузки
1. Создайте ключ загрузки:
1) В сборщике мобильных приложений в меню «Сервис» выберите команду «Настройка параметров поставщика«.
2) Откройте вкладку «Параметры для ОС Android» и в группе «Ключ загрузки приложения» нажмите ссылку «Экспорт сертификата ключа«.
2. Полученный файл с расширением «.pem» загрузите в Play Console в «Программе подписания приложений«, там же, где загружали ключ подписи.
В качестве ключа загрузки можно также использовать ключ подписи приложения, но этот способ не рекомендуется, т.к. является менее безопасным.
Внимание! Если вы потеряете свой ключ загрузки или если он будет скомпрометирован, то чтобы отозвать свой старый ключ загрузки и сгенерировать новый, следует связаться с техподдержкой Google.
Поскольку ключ подписи вашего приложения защищен Google, вы можете продолжать загружать новые версии своего приложения в качестве обновлений исходного приложения, даже если вы измените ключи загрузки.
Шаг 4. Завершите регистрацию в сервисе подписания приложений Google Play
1. В программе подписания в магазине нажмите кнопку «Сохранить«.
2. Далее следует принять «Условия использования«.
После этого обновления приложения можно загружать в магазин Google Play только в формате AAB (Android App Bundle).
Шаг 5. Соберите мобильное приложение и отправьте его в Google Play с помощью ключа загрузки
1. В новом сборщике мобильных приложений, в карточке приложения на закладке «Для ОС Android» для отправки приложения в магазин Google Play следует выбрать результат сборки приложения (APK, AAB или собирать все).
Выберите «Все варианты результирующих файлов» или «Только aab-файл (пакет для магазина)«.
2. Сборщик соберет пакет для магазина и подпишет его ключом загрузки.
3. Собранный AAB-файла опубликуйте в магазине.
4. Подготовьте и разверните выпуск вашего приложения в магазине.
Создание публикации нового приложения
Шаг 1. Создайте ключ загрузки и соберите приложение
1. Если еще не создали, то создайте ключ загрузки в настройках поставщика на закладке «Параметры для ОС Android» в сборщике мобильных приложений.
2. Соберите приложение в формате AAB.
Шаг 2. Подготовьте выпуск
1. Подготовьте и внедрите выпуск приложения в магазине Google Play, следуя инструкциям магазина.
2. Выбрав тип версии (закрытая, альфа, бета и т.д.), настройте параметры подписания приложений в разделе «Разрешите Google защищать ключ подписи приложения и управлять им«.
3. Выберите «Экспортировать и загрузить ключ из Java Keystore«.
4. Найдите оригинальный ключ подписи приложения. Его можно выгрузить из настроек поставщика на закладке «Параметры для ОС Android» в сборщике мобильных приложений с помощью команды «Экспорт закрытого ключа«.
5. Полученный файл с расширением «.pepk» загрузите в магазин.
6. Найдите оригинальный ключ загрузки. Его можно выгрузить из настроек поставщика на закладке «Параметры для ОС Android» в сборщике мобильных приложений с помощью команды «Экспорт сертификата«.
7. Полученный файл с расширением «.pem» загрузите в магазин в «Программу подписания приложений» там же, где загружали ключ подписи.
8. Выберите «Обновить».
9. Чтобы продолжить, нужно принять Условия использования и зарегистрироваться в сервисе подписания приложений.
10. Собранный AAB-файл выгрузите из сборщика и опубликуйте в магазине, в созданном выпуске.
Что такое Android App Bundle и в чём его отличие от APK
Наверное, все знают, что APK – это формат, в котором приложения для Android размещаются в Google Play и на сторонних платформах. Но если при загрузке из официального каталога установка происходит автоматически, и пользователь никак не взаимодействует с установочным файлом, то при использовании альтернативных площадок, всё происходит несколько иначе. Сначала вы скачиваете сам APK-файл и уже вручную его устанавливаете. Но некоторое время назад на альтернативных платформах, помимо привычных APK-файлов, стали появляться какие-то Android App Bundles. Разбираемся, что это и зачем вообще нужно.
Android App Bundle — это как APK, только лучше
Android App Bundle – это новый, так называемый «пакетный», формат приложений для Android. В отличие от APK, которые для успешной установки должны соответствовать параметрам смартфона, на который их устанавливают, AAB – это универсальный формат, который уже содержит в себе сведения обо всех устройствах и разных сочетаниях железа сразу.
Если вы откроете APKMirror – пожалуй, самый популярный альтернативный сайт с приложениями, — и перейдёте на страницу любого приложения, то увидите, что у него есть несколько разных версий APK. Каждая из них соответствует смартфонам с определёнными особенностями. Обычно это версия Android, тип процессора или показатель DPI, но бывают и другие.
Как установить Android App Bundle
Посмотрите, сколько APK-файлов у Instagram. Их все заменяет один пакет AAB
Android App Bundle представлены только в единственном экземпляре. Потому что они изначально созданы универсальными и совместимыми с различными устройствами, независимо от сочетаний их аппаратного обеспечения и технических характеристик. При установке пакет сам выдаст смартфону подходящий установочный файл, и тот его установит.
Что такое Camera2 API, зачем это нужно и как узнать, поддерживает ли её ваш смартфон
Поскольку Android App Bundle – это пакет различных компонентов, то они поставляются не в виде целостного файла, а в виде ZIP-архива. Это несёт как минимум одно существенное ограничение – AAB нельзя установить так же просто, как обычные APK-файлы просто по нажатию. С AAB это не прокатывает. Поэтому для их установки необходим специальный клиент, который всё распакует и установит вам на устройство.
Я для этой цели пользуюсь клиентом APKMirror. С ним установка Android App Bundle выглядит вот так:
Установить AAB как обычный APK-файл нельзя
Чем Android App Bundle лучше APK
Несмотря на то что что пакет AAB содержит базовый APK-файл, даже распаковав архив вручную, вы всё равно не сможете его установить. Дело в том, что пакет обычно включает в себя ещё ряд дополнительных компонентов, которые необходимы приложению для нормальной установки. Поэтому тут строго обязательно нужно-приложение установщик, которое работает со сторонними AAB. Так что Google Play для этой роли точно не годится.
В августе 2021 года Google полностью переходит на формат AAB
Может показаться, что всё это слишком сложно и запоминать всю последовательность действий, описанных выше, не имеет смысла. Однако это большое заблуждение, потому что уже в августе 2021 года Google откажется от использования классических APK. То есть все новые приложения и те, которые обновятся к тому времени, уже не будут иметь выделенных APK, а будут представлены на сторонних площадках только в виде AAB.
Google настаивает на использовании Android App Bundle, потому что они, несмотря на универсальность, более легковесны, чем классические APK, и их легче поддерживать. Формат AAB позволяет разработчикам создать только одну сборку приложения, которую будет проще обновлять, контролировать и совершенствовать. Так что учитесь работать с «бандлами», иначе останетесь без стороннего ПО.
Новости, статьи и анонсы публикаций
Свободное общение и обсуждение материалов
Будильники на телефонах появились достаточно давно, и, благодаря этим приложениям, мы теперь можем вставать в то время, которое было запланировано ранее. Сейчас даже самый простой будильник на Android это намного больше, чем просто громкая мелодия с утра, и я постараюсь сегодня вам это доказать. Вы совершенно справедливо можете нас спросить: а почему бы не воспользоваться стандартной мелодией на смартфоне? Об этом мы тоже сегодня поговорим.
Пожалуй, у Google нет другого настолько же загадочного и противоречивого проекта, как Fuchsia OS. Изначально заявленная как тестовая платформа, предназначенная для испытания новых функций для уже существующих операционных систем, в конечном итоге она вышла в релиз, став вполне себе коммерческой. Google установила её на свои умные дисплеи Nest Hub, заменив созданную специально под них операционку Cast OS. В компании никак не объяснили своего решения, а, напротив, постарались сделать всё максимально тихо, чтобы не привлекать лишнего внимания. Но, судя по всему, внимание ей-таки потребовалось, потому что сама Google прочит Fuchsia OS большое будущее.
Как Android пришел к AAB? Что будет с APK? Разбор
Не так давно прогремела новость о том, что Android отказывается от APK-файлов и переходит на AAB. Вы наверняка уже эту новость прочитали, во всём разобрались и успокоились, так как новость проходная. Тем не менее, мы считаем, что переход к новой системе публикации приложений App Bundle — это часть большого пути, которую проделала система Android, чтобы стать по-настоящему быстрой, эффективной и супероптимизированной платформой. Поэтому мы подготовили большой и очень интересный материал. И сегодня мы раскроем вам массу страшных тайн Android.
Проблема Android
У системы Android есть одна очень важная особенность, которая является как огромным преимуществом, так и огромной проблемой.
Поэтому вся история развития системы Android — это история борьбы, компромиссов и поиска баланса.
Условно историю Android можно поделить на 4 этапа: когда Android тормозил, много жрал, оптимизировался и, наконец, находился в балансе.
Этап 1. Dalvik: Android тормозит
Этап 2. ART: Android потребляет
Этап 3. Profiling: Android оптимизируется
Этап 4. AAB: Android балансирует
И сегодня мы поговорим про все четыре этапа. Но начнём с небольшой ремарки.
Чтобы соблюсти первые два базовых требования к системе, а именно: поддержка разных архитектур и простота программирования. В качестве основного языка программирования в системе Android была выбрана Java. Почему так?
У Java есть несколько классных свойств: он изначально был создан как мультиплатформенный: пишешь один раз — работает везде.
Но, есть и недостаток. Достигается это всё очень грязными методами, а именно при помощи виртуальной Java-машины. Тут стоит пояснить.
Дело в том, что люди пишут код на понятных для человека языках программирования, но машины не понимают такой код, они понимают машинный код, то есть бинарный код. А значит, в процессе финальной сборки приложения, человеческий код нужно перевести в машинный код. Такой процесс называется компиляцией. А приложение скомпилированное под требуемую архитектуру называется нативным.
Нативные приложения — самые быстрые, потому они записаны на языке понятном железу. А теперь смотрите внимательно: приложения написанные на Java компилируется не в нативный код, а в промежуточный код, который называется байт-кодом.
А вот уже из этого байт-кода можно достаточно быстро перевести приложение под любую архитектуру при помощи виртуальной Java-машины.
Иными словами, приложения написанные на Java — это всегда не нативные приложения, которые требуют дополнительной пост-компиляции., а значит дополнительных издержек.
И Android-приложения — не исключение.
Единственное что, в Android вместо виртуальной машины Java используется собственная, куда более эффективная, виртуальная машина Dalvik или ART. А также вместо байт-кода Java используется собственный, куда более эффективный, байт-код, который внутри APK-шек записыватся в файлах с расширением DEX (анимация).
Тем не менее, это не меняет сути, т.к. Android-приложения содержат много Java-кода и это проблема, которую как-то нужно решать. Так вот на протяжении своей истории эта проблема решалась по-разному.
ЭТАП 1. Dalvik: Android тормозит
Вплоть до Android версии 4.4 KitKat приложения запускались через виртуальную машину Dalvik, которая работала по принципу Just In time компиляции или JIT-компиляции. То есть приложения транслировались в нативный код прямо во время исполнения, то есть “на лету”.
Мы уже рассказывали про JIT-компиляцию в ролике про Android на Windows 11, если не видели — посмотрите. Е
Ответ простой: такой подход позволял экономить много памяти — в первую очередь, оперативной. Тогда устройства были не такие мощные как сейчас, у многих на борту было не больше 200 Мб ОЗУ. А JIT-компиляция позволяла, так сказать, загружать в оперативку только ту часть приложения, которая используется.
Плюс ко всему, сам по себе байт-код компактный, поэтому и на диске приложения занимали очень мало места.
Да и были возможности оптимизации: скомпилированный код можно записать в кэш и дальше уже из кэша брать как бы нативный код. В общем, можно жить…
Помните же Dalvik-кэш? Вот это как раз он…
ЭТАП 2. ART: Android потребляет
Тем не менее пользователи и приложения становились всё более требовательными к отзывчивости. И в Android 4.4 KitKat была представленная новая виртуальная машина ART или Android Runtime. А в Android 5.0 Lollipop ART полностью заменила Dalvik.
Вместе с новой средой выполнения, Android поменял стратегию на 180 градусов. Вместо компиляции во время исполнения приложения ART стала использовать компиляцию перед исполнением. То есть компиляция теперь делается во время установки приложения. Такой вид компиляции называет Ahead Of Time компиляция или сокращенно AOT-компиляция.
И естественно, Android залетал! Приложения стали быстрее запускаться и работать без каких либо дополнительных задержек. Фактически все приложения внезапно стали “нативными” для железа!
Вообще согласитесь, Android 5-й версии был хорош. Система летала, представили Material Design… Просто счастье.
ЭТАП 3. Profiling: Android оптимизируется
Поэтому в Google подумали: компилируя приложение целиком, не делаем ли мы лишнюю работу? А вот и делаем!
Как выяснилось, по статистике пользователи очень редко используют более 10-20% кода приложения. Иными словами, в большинстве случаев заранее будет достаточно скомпилировать только малую часть, которая будет действительно использоваться часто, а для редких уголков приложения, в которые мы не заходим, можно будет и JIT-компиляцию использовать.
Но вот только, какую часть кода нужно скомпилировать заранее, ведь даже разработчики приложений не знают, как именно пользователи будут юзать их программу.
Поэтому в Android 7.0 Nougat Google представили технологию PGC — Profile guided compilation. То есть это компиляция, основанная на профилях использования приложения. Думаю вы уже примерно догадываетесь как эта штука работает.
Естественно от AOT-компиляции на этапе установки отказались. Поэтому во время первого запуска приложения стали снова использовать старую добрую JIT-компиляцию, результат которой, естественно, сохранится в кэш. Тоже самое повторится и во время второго запуска, и третьего. Но когда вы поставите телефон на зарядку и крепко заснете, тогда проснется так называемый «Демон» (это, если что, официальное название специальной службы), который проанализирует кеши всех приложений, которые вы использовали в течение дня. После этого он создаст профили с оптимизированным кодом. И так каждую ночь…
Но и эту проблему Google решили. В Android 9.0 Pie они представили Облачные профили.
Они просто собрали профили приложений со всех пользователей, проанализировали их и создали усредненный профиль для каждого приложения, который теперь стал автоматически скачиваться во время установки приложения из Google Play Store.
Всё это позволило значительно повысить скорость первого запуска приложения, да и в целом, первые дни использования девайса. А, как известно, первое впечатление, второй раз произвести не получится.
И вот мы с вами видим какой огромный путь проделала система Android.
Система стала в десятки раз отзывчивее, оптимизированее и дружелюбнее к пользователям.
Но несмотря на огромное количество изменений под капотом самой системы оставалось одна очень важная проблема: огромное разнообразие устройств. Поэтому переходим к заключительному этапу становления Android.
ЭТАП 4. AAB: Android балансирует
На последнем этапе Google решил уменьшить не только размер скомпилированного кода, но и размер самих приложений.
И в 2018 году они представили новый формат публикаций приложений, который называется Android App Bundle, или просто AAB.
Это не новая технология. Всё это уже давно работает, но просто только сейчас она станет единственным правильным способом публикации приложений. В чём прикол?
Система Android поддерживает 4 архитектуры, 6 разрешений графики и более 150 языков.
Поэтому если собрать универсальный APK, который будет включать в себя вообще все необходимые файлы для всех девайсов (всю графику, все библиотеки, все языки) — такой файл будет просто неподъемно весить. А если собрать по идеальной APK-шке под каждое устройство, то придется генерировать тысячи таких APK.
Поэтому, чтобы разработчики не парились, Google придумал умную систему публикации.
Во время финальной сборки приложения они просто формируют бандл, то есть архив вообще со всеми необходимыми файлами под все девайсы. Делается это автоматически через Android Studio. И загружают этот архив в Google Play.
А дальше, когда вы заходите в Google Play и скачиваете приложение, то Google Play сам собирает для вас идеальную APK-шку только с необходимым набором данных: подгружается только графика необходимого разрешения, библиотеки только под вашу архитектуру и только тот языковой пакет, который выбран у вас в системе.
Кстати, да, если в системе у вас выбрано несколько языков, то подгрузится больше языковых пакетов. Вот так всё просто и умно.
Тем не менее, последствия от этого нововведения воистину колоссальные. Для Google это позволяет экономить ежедневно 10 ПБ трафика, который тратится на скачку и приложений и обновлений.
А для пользователей это позволят сэкономить просто кучу места на устройстве. Ведь многие приложения похудели более чем на 30 процентов.
Иными словами, от нововведения сплошные блага.
Те кто испугался, что APK больше не будет, это не так. Вы, по-прежнему, сможете скачивать и устанавливать APK-файлы с других источников, тут нет никаких ограничений. Точно также нет ограничений и на сторонние магазины приложений, они также смогут использовать App Bundle или по старинке заставлять разработчиков самим собрать APK. Полная свобода и анархия.
И в качестве финального аккорда. Если вам кажется, что все эти оптимизации, связанные с компиляцией, скоростью загрузки приложений, размером APK и вещи, которые проделал Google с Android, это всё фигня. В качестве аргумента что это не так, мы решили по приколу сравнить размер приложений на Android и iOS и вот, что обнаружили.
Размер приложения Facebook на iOS 246 МБ, на Android — 57. Разница в 4,3 раза!
Instagram. iOS 150 МБ, Android — 39, разница 3.8 раза!
Snapchat 234 против 63 МБ.
TikTok 230 против 67 МБ… и так далее.
В итоге только на выбранном небольшом списке приложений мы получили экономию, более чем в 1 ГБ! Мы считаем — это достойно, именно поэтому Android настоящая народная ОС.
Выводы
Что в итоге. За время своего существования система Android прошла просто огромный путь оптимизации и стала по-настоящему универсальной, быстрой и эффективной системой, которая отлично работает на массе разных устройств. Вот бы все ОС так развивались. (Да, Microsoft?)
А что касается второй и моей, уж чего греха таить, любимой системы, которая также прекрасно работает на разных устройствах. О ней поговорим в другой раз.