Почему App Bundle весит больше, чем когда это файл .apk?

Мое приложение после установки весило 12 МБ, когда я использовал старый добрый .apk. Я хотел использовать Android App Bundle, поэтому:

  1. # P2 #
    # P3 #

получить .aab файл (вес: 15мб - для сравнения .apk был 16 мб)

  1. # P5 #
    # P6 #
  2. # P7 #
    # P8 #

и установлен на моем телефоне, но только чистая установка весит 25 МБ! Таким образом, вместо того, чтобы весить меньше, чем предыдущие ~ 16 МБ после установки, он весит более значительно.

Я тестировал это на Moto G5, Android Oreo, который (чертежи: xxhdpi)

Я сделал что-то не так? Может это ошибка из bundletool?

РЕДАКТИРОВАТЬ: при использовании флага --connected-device на шаге 2. Сгенерированные .apks намного меньше, но в конце (шаг 3) окончательное хранилище моего приложения по-прежнему составляет 25/26 МБ :(


person Adam Styrc    schedule 16.11.2018    source источник
comment
У вашего приложения есть собственные библиотеки?   -  person Pierre    schedule 16.11.2018
comment
Нет, у меня нет собственных библиотек   -  person Adam Styrc    schedule 28.11.2018
comment
Как вы измеряете размер APK-файлов, созданных из пакета?   -  person Pierre    schedule 28.11.2018
comment
Я загрузил в Google Play - bundletool был неточным - а там отображается размер. Когда дело доходит до окончательного размера после установки, я проверяю настройки Android- ›Приложения-› Мое приложение и размер после установки составляет 25/26 МБ.   -  person Adam Styrc    schedule 29.11.2018
comment
Размер, сообщаемый Android, - это размер, который ваше приложение принимает на устройстве: поскольку платформа оптимизирует файл dex, размер, который он занимает на устройстве, может быть намного больше, чем фактический размер файла, который вы видите на своем компьютере. А размер, сообщаемый Play Console, - это размер загружаемого файла, который обычно меньше, чем файл, который вы видите на своем компьютере, поскольку он дополнительно сжимается.   -  person Pierre    schedule 29.11.2018
comment
Хорошо, наверное, это решает вопрос;)   -  person Adam Styrc    schedule 29.11.2018


Ответы (3)


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

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

person Pierre    schedule 29.11.2018

Что я понял из https://developer.android.com/guide/app-bundle/

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

Функция динамической доставки Google Play использует ваш набор приложений Android для создания и обслуживания APK-файлов, оптимизированных для каждой конфигурации устройства. Это приводит к уменьшению загрузки приложения для конечных пользователей за счет удаления неиспользуемого кода и ресурсов, необходимых для других устройств.

Таким образом, в основном apk будет собираться с использованием динамической доставки, которая объединяет только необходимые ресурсы и гарантирует, что сборка, установленная на конкретном дизайне, оптимизирована. Нет упоминания о том, что размер пакета меньше, но это гарантирует, что размер загрузки для конечного пользователя будет меньше.

Но почему нам следует подумать об использовании Android App Bundle?

Прежде всего, этот подход способствует созданию чистой и разделенной структуры вашей кодовой базы. Из-за того, как работают пакеты (и особенно с динамической доставкой, о которой мы поговорим позже), модуляризация по функциям станет частью вашего приложения. Это похоже на модульный подход в приложениях Instant или общий подход модульности по функциям. Тем не менее, это помогает разделить различные части вашего приложения и упростить работу с вашей кодовой базой.

Если раньше нам, возможно, требовалось создать несколько APK для разных версий API, типов устройств и т. Д., Пакеты Android App Bundle означают, что теперь мы можем просто загрузить один артефакт со всеми ресурсами нашего приложения, а инструменты позаботятся о том, что необходимо создать и доставить нашим пользователям. Это, по сути, автоматизирует этот процесс для нас и означает, что мы можем перенести этот фокус на другие части нашего процесса разработки.

Поскольку App Bundle создает APK, предназначенный для определенного устройства и его конфигурации, это означает, что поставляемые APK обычно имеют меньший размер. Это действительно будет зависеть от вашего приложения, так как основная экономия будет связана с ресурсами, специфичными для плотности / локали, и любого другого неиспользуемого кода. Некоторые из этих сокращений размера первых пользователей App Bundle показывают отличные результаты:

Знаменитые приложения

Пакеты приложений знакомят нас с новой концепцией, известной как динамическая доставка. Это позволяет нашим приложениям предоставлять пользователям новые функции и разрешать их загрузку и установку во время выполнения в качестве расширения к нашему приложению. Это позволяет нам уменьшить начальный размер нашего приложения и предлагать эти дополнительные возможности только тем пользователям, которые действительно могут их использовать.

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

person Hossam Hassan    schedule 16.11.2018
comment
Вам действительно следует пометить весь скопированный текст как процитированный и дать ссылку на источник, чтобы вас не пригвоздили к плагиату. - person Mike M.; 16.11.2018
comment
@HossamHassan, который объясняет, что такое App Bundle, но не отвечает на вопрос - person Adam Styrc; 16.11.2018
comment
youtu.be/QdoEcfibG-s?t=949 - возможно, нужно использовать - флаг подключенного устройства с помощью bundletool? - person Adam Styrc; 16.11.2018

Новая модель обслуживания приложений Google Play, называемая динамической доставкой, затем использует ваш набор приложений для создания и обслуживания оптимизированных APK для конфигурации устройства каждого пользователя, поэтому они загружают только код и ресурсы. им нужно запустить ваше приложение. Вам больше не нужно создавать, подписывать и управлять несколькими APK-файлами для поддержки разных устройств, а пользователи получают более мелкие и оптимизированные загрузки.

Насколько я понимаю, AAB может быть больше, но когда телефон устанавливает приложение, Google Play сгенерирует APK для этого конкретного устройства, который будет меньше .

Например:

Размер моего файла ABB составляет 30 МБ.

Когда я установил свое приложение через Google Play, размер файла на моем телефоне составлял всего 10 МБ.

person ayoub boumzebra    schedule 01.03.2021