About android app bundles

Building your first app bundle

Android App Bundle is the new and official publishing format for Android applications.

This article is available as a video and linked at the end of the post.

With the Android App Bundle we created a format that unlocks, amongst other things, shipping smaller apps to your users. Smaller apps are more likely to be installed and less likely to be uninstalled when disk space gets tight.

In this post we’ll take a closer look at how to build your first app bundle, how you can upload it using the Play Console and dive into some configuration options.

Getting started doesn’t require any changes to your existing codebase.

All you’ll need to do is create an Android App Bundle, using the command line or Android Studio.

Building on the command line

On the command line, you’ll run one of the bundle tasks like this:

Then locate the bundle in your application’s build directory. The default location is app/build/outputs/bundle/release .

This bundle needs to be signed. When using jarsigner , this is how you sign the bundle:

Once the variables are replaced with actual values and the keystore password is entered, the bundle will be signed and ready for upload.

Building in Android Studio

In Android Studio, select “Build => Generate Signed Bundle / APK” and follow the dialog.

Whether you use the command line or Android Studio, the process will leave you with a built and signed release bundle that’s ready for upload to the Play Store.

Uploading through the Play Console

To upload your app bundle to the Play Store, create a new release on a chosen release track. You can drag and drop the bundle into the “App bundles and APKs” section or use the Google Play Developer API.

Once the Bundle is uploaded, the Play Store can optimize the APKs it delivers to users’ devices based on their configuration. This in turn reduces download and installation size.

Exploring your Android App Bundle

To take a look at how the Play Store ships your app to a user’s device, you can click on the “Details” button at the end of the bundle’s row.

In the details screen you already see a lot of information on your app bundle such as version code, minSdk level, target SDK, required features, permissions, screen layouts, localizations and much more.

And you also can download signed APKs for your app, to see exactly what the Play Store delivers to a specific device. To navigate there, click on “Explore Bundle” and then open the “Downloads” tab.

You can either select a specific device or apply one or more of the many filters from the “Add filter” tab.

Download the app bundle and install locally

In the app bundle explorer, at the end of your screen, there is a “Download” button which provides a zip file, containing several APK, which are tailored to the specific device in question.

After you download and unzip the file, the containing APK can be installed on a local emulator or device by using `adb install — multiple *.apk` from the containing directory.

While each apk in this set is relevant to guarantee correct execution of your app, I want to point out that the base.apk always has to be installed on a device in order to provide your app’s core functionality. Next to code and resources the base module also contains the merged AndroidManifest and shared dependencies for the entire application.

Each feature module or configuration split provides its own resources and can contain code, but the base module is what ties it all together.

Disabling optimizations

You can disable the optimization in each module’s build.gradle file. All you have to do is edit the language , density or abi property and set enableSplit to false . This will tell the build system that it should not optimize this specific dimension.

Unless you have a good reason to, I recommend not touching this section as setting enableSplit to false can dramatically increase the on-device installation size of your app.

There could be exceptions, such as when your app has its own language selector built in and you want to have all potential languages available for selection at all times. But even then, using the Android App Bundle provides you with ways to load features on demand instead. This could be used to avoid to pre-install parts of your app that only a subset of users might need.

Читайте также:  Настройка выключения экрана андроид

And since we enable you to download and install features in a programmatic way, we provide an unbundled API that you can use. It is part of the PlayCore library and is covered as part of the next post and this video in our Modern Android Development Skills series.

Источник

Что такое 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 выглядит вот так:

  • Скачайте установщик APKMirror по этой ссылке (один раз);
  • Найдите и скачайте приложение в формате Android App Bundle;

Установить AAB как обычный APK-файл нельзя

  • Нажмите на архив и откройте его с помощью APKMirror;
  • Следуйте инструкциям, которые установщик выведет на экран.

Чем Android App Bundle лучше APK

Несмотря на то что что пакет AAB содержит базовый APK-файл, даже распаковав архив вручную, вы всё равно не сможете его установить. Дело в том, что пакет обычно включает в себя ещё ряд дополнительных компонентов, которые необходимы приложению для нормальной установки. Поэтому тут строго обязательно нужно-приложение установщик, которое работает со сторонними AAB. Так что Google Play для этой роли точно не годится.

В августе 2021 года Google полностью переходит на формат AAB

Может показаться, что всё это слишком сложно и запоминать всю последовательность действий, описанных выше, не имеет смысла. Однако это большое заблуждение, потому что уже в августе 2021 года Google откажется от использования классических APK. То есть все новые приложения и те, которые обновятся к тому времени, уже не будут иметь выделенных APK, а будут представлены на сторонних площадках только в виде AAB.

Google настаивает на использовании Android App Bundle, потому что они, несмотря на универсальность, более легковесны, чем классические APK, и их легче поддерживать. Формат AAB позволяет разработчикам создать только одну сборку приложения, которую будет проще обновлять, контролировать и совершенствовать. Так что учитесь работать с «бандлами», иначе останетесь без стороннего ПО.

Источник

Android App Bundles: What are they and how to create them

At Google I/O 2018, the search giant introduced Android App Bundles, a new file type built to keep file size and complexity under control. The new file is meant to better serve the diverse spread of devices that run Android.

Traditionally, Android apps are distributed using a special file called an Android Package, which uses the file extension .apk. APKs are basically zip files containing all the bits and pieces the app needs, like the program code and the resource files (graphics, audio, language files, and so on). When a developer submits an app to Google Play, they upload an APK, which is then distributed by Google and downloaded when a user installs the app.

Go in depth: The great thing about Android is its incredibly varied ecosystem. The operating system supports a wide range of processing system architectures, screen sizes and densities, and languages. An APK can handle all of that, as well as localization information (both text and graphics) for any number of different countries, without much trouble, though it can create a challenge for developers.

Читайте также:  Honeywell scanpal eda50k прошивка андроид 7

Making an app that works on the tiniest smartphone and the biggest Android TV can create a seriously large file, making it inaccessible to a number of lower-end devices. To keep file sizes low, some developers create multiple APKs containing files for specific screen densities or processors. Developers can upload these different files to Google Play, and Google will push the relevant ones to a device when the user installs it.

The problem with that method is it makes for more complex builds — that’s where Android App Bundles come in. The new file format includes all your app’s compiled code and resources, but allows Google Play to generate and serve optimized APKs for each user’s device.

Saving space

Since app bundles only send the relevant chunks to individual devices, the actual size of the APK can be much smaller. According to Google, popular apps like Twitter could shrink around 35 percent. In other cases this could be has high as 50 percent.

The total number of permutations for language packs, screen densities, and supported CPU architectures can grow very quickly. According to Twitter, its app can be delivered in one of 500 different combinations via Android App Bundles. Maintaining 500 separate APK files would be time consuming and costly. This way Twitter can build one bundle and let Google Play sort out all the different permutations.

How to create Android App Bundles

Android Studio has been updated to handle this new build process and can now build a signed Android App Bundle ready for upload to Google Play. An app bundle is different from an traditional APK in that you can’t deploy it directly to a device. It first needs go to the Play Store, where Google Play will then handle the bundle and deliver the necessary tailored APK to devices.

There is a new Build Bundle option in the Build menu, alongside the traditional Build APK option.

You can find more details about the internal structure of bundles on Google’s Build, deploy, and upload Android App Bundles page.

Dynamic Delivery

Now that bundles allow an app to be split into different chunks, the next logical progression is to offer functionality in chunks. If a user doesn’t need certain functionality, why download it? The example Google gives is of app that allows consumers to sell and purchase items over the web. Many users will only ever purchase and never sell, and the selling code will sit on the device wasting resources. With Dynamic Delivery, the selling functionality isn’t included in the base APK installed. When the user wants sell something, the app will download the extra code and resources needed.

Wrap-up

Android App Bundles could be a game changer for app delivery and management. Not only will we be getting space-optimized apps, but the possibilities of Dynamic Delivery means functionality can be added to apps as needed.

What are your thoughts? Are Bundles a step in the right direction?

Источник

Новый способ публикации приложений с помощью Android App Bundle

На недавно прошедшей Google I/O 2018, среди множества нововведений, объявили также о добавлении нового формата приложений.

Этот формат получил название Android App Bundle и представляет собой улучшенный способ сборки вашего приложения. С его помощью можно легко оптимизировать размер приложения, при этом не нужно будет вносить какие-либо изменения в код. Android App Bundle включает весь скомпилированный код и ресурсы, отсеивая затем то, что не нужно конкретному устройству.

Важно! На данный момент Android App Bundle работает только в preview-версии Android Studio. Последняя версия Android Studio 3.2 Canary доступна здесь.

Формат Android App Bundle

Android App Bundle представляет собой файл (с расширением .aab), который загружается в Google. Каждый бандл включает скомпилированный код и ресурсы для всех модулей приложения и поддерживаемых конфигураций устройств.

Проще говоря, бандлы это подписанные ZIP-файлы, которые упорядочивают код и ресурсы приложения в модули.

Из этих модулей Google Play генерирует различные APK, которые предоставляются пользователям, такие как: базовые APK, dynamic feature APK, конфигурационные APK и (для устройств, которые не поддерживают разделённые APK) мульти-APK. Каталоги, окрашенные в синий цвет, представляют собой код и ресурсы, которые Google Play использует для создания конфигурационного APK для каждого модуля.

Примечание: бандл нужно создавать для каждого уникального приложения или applicationID. То есть, если вы используете несколько product flavor в своём приложении для создания различных APK, и каждая из этих веток использует уникальный applicationID, то вам нужно будет создать отдельный бандл для каждой ветки.

Код и ресурсы для каждого модуля организованы аналогично стандартным APK, и это логично, поскольку каждый из этих модулей может быть сгенерирован как отдельный APK. Ниже можно увидеть более подробное описание некоторых файлов и каталогов Android App Bundle:

  • base/, feature1/, feature2/. Каждый из этих каталогов представляет собой модуль приложения. Базовый модуль приложения всегда содержится в базовом каталоге бандла. Директории же с дополнительными особенностями, каждой из которых присваивается специальное имя, находятся отдельно.
  • файлы Protocol Buffer (.pb). Эти файлы содержат метаданные, которые помогают описать содержимое бандла в магазинах приложений. Например, BundleConfig.pb, находящийся в корневом каталоге бандла, предоставляет информацию о самом бандле, например, какая версия build tools используется для сборки. Другие файлы, такие как recourse.pb и native.pb, описывают, как определённый код и ресурсы должны использоваться для различных конфигураций устройств. Google Play использует эту информацию для генерации APK, оптимизированного для устройства пользователя.
  • manifest/. В отличие от APK, бандлы хранят файл AndroidManifest.xml каждого модуля в отдельном каталоге.
  • dex/. В отличие от APK, бандлы хранят DEX-файлы каждого модуля в отдельном каталоге.
  • root/. Этот каталог хранит файлы, которые позже перемещаются в директорию root любого APK, который включает в себя модуль, в котором находится этот каталог. Например, каталог base/root/ бандла может включать ресурсы Java, которые загружаются приложением с помощью использования Class.getResources(). Эти файлы позже перемещаются в директорию root APK приложения и каждого мульти-APK, которые генерирует Google Play. Пути в этом каталоге также сохраняются, то есть, подкаталоги тоже перемещаются вместе с root.
    Примечание: если содержимое этого каталога конфликтует с другими файлами и каталогами в корне APK, Play Console отклонит загрузку бандла. Например, вы не сможете включить каталог root/lib/, поскольку он будет конфликтовать с каталогом lib, уже находящимся в APK.
  • res/, lib/, assets/. Эти каталоги идентичны тем, что используются в стандартном APK. При загрузке приложения, Google Play проверяет в этих каталогах и пакетах только те файлы, которые соответствуют конфигурации целевого устройства.
Читайте также:  Android exception error code

Сборка App Bundle с помощью Android Studio

Создание бандла с помощью Android Studio очень похоже на создание APK. Для сборки достаточно выбрать в меню Build — Build Bundle(s)/APK(s) > Build Bundle(s) и IDE создаст бандл для выбранного варианта сборки и разместит его в каталоге

Если создаётся бандл для debug-версии приложения, Android Studio автоматически подпишет бандл с помощью отладочного ключа подписи. Для загрузки бандла в Google Play он должен быть подписан.

После того, как Android Studio завершит создание подписанного бандла, его можно будет открыть и проанализировать. Анализ бандла позволяет проверить содержимое и работает аналогично APK Analyzer.

Для создания App Bundle IDE использует тот же инструмент с открытыми исходным кодом, называемый bundletool, который Google Play использует для последующего преобразования бандла в подписанные APK.

Прежде чем загрузить бандл в консоль Google Play, его нужно подписать. Чтобы создать подписанный App Bundle, нужно выполнить следующие действия:

  1. Выбрать в меню Build — Generate Signed Bundle/APK.
  2. В появившемся диалоге выбрать Android App Bundle и нажать Next.
  3. В выпадающем списке выбрать модуль, для которого требуется создать бандл, после чего нажать Next.
  4. Предоставить информацию о созданном ключе подписи либо создание нового ключа подписи. Вы можете использовать те же ключи, которые используете для генерации подписи APK.
  5. Если вы хотите, чтобы Android Studio также сохранила ключ подписи в виде зашифрованного файла, то нужно поставить флажок Export encrypted key. Чтобы иметь возможность загружать бандл, необходимо также загрузить этот зашифрованный файл в консоль Google Play и зарегистрировать подписку приложения с помощью Google Play.
  6. Нажать Next.
  7. Выбрать папку назначения для бандла, тип сборки и product flavor проекта.
  8. Нажать Finish.

После того, как Android Studio завершит создание подписанного бандла, его можно будет найти и проанализировать, выбрав соответствующую опцию во всплывающем уведомлении. Если был выбран экспорт ключа подписи, то к нему можно будет быстро перейти, щёлкнув по стрелке вниз в правом нижнем углу всплывающего уведомления, чтобы развернуть его, и затем выбрав Show Exported Key File.

Загрузка App Bundle в консоль Google Play

После того, как бандл создан, его можно загрузить в Google Play для проверки, тестирования или публикации приложения. Прежде чем приступить к работе, следует соблюсти следующие условия:

  1. Зарегистрироваться в программе Google Play App Signing.
  2. Если приложение включает dynamic feature modules, то его можно загружать и тестировать через внутренний тестовый трек консоли Google Play. Однако чтобы опубликовать приложение, нужно принять программу Dynamic Feature, которая на данный момент находится в стадии бета-версии.
  3. Google Play поддерживает загрузку приложений размером не более 100 МБ.

Анализ APK с помощью проводника

Когда бандл загружен, Google Play автоматически генерирует разделённые APK и мульти-APK для всех конфигураций устройств, поддерживаемых приложением. В Play Console можно можно использовать App Bundle Explorer для просмотра всех вариантов APK, сгенерированных Google Play; анализа данных, таких как поддерживаемые устройства и экономия размера APK; загрузки созданных APK для тестирования.

Обновление приложения

После загрузки приложения в Play Console, для обновления приложения достаточно повысить код версии, а также создать и загрузить новый бандл. Затем Google Play сгенерирует обновлённые APK с новым кодом версии и будет предоставлять их по мере необходимости.

Заключение

Использование Android App Bundle даёт большие преимущества для оптимизации APK приложений. С помощью этого способа мы обновили одно из наших приложений, «Менеджер паролей от Wi-Fi сетей«, заменив в нём стандартный APK на App Bundle. Таким образом, размер APK файлов уменьшился на целый мегабайт, что является очень хорошим результатом.

Кроме того, Google на данный момент тестирует дополнение к App Bundle, Dynamic feature modules, с помощью которого можно разбивать базовый APK на части, которые будут докачиваться при необходимости, пока что эта технология находится в бета-версии.

Возможно, единственным недостатком банлдов на данный момент назвать необходимость использовать preview-версию Android Studio, однако эта проблема временная.

Источник

Оцените статью