Настройка Android App Bundle (AAB) для оптимизации размера

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.
Разработка и поддержка любых видов мобильных приложений:
Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

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

Предлагаемые услуги
Показано 1 из 1 услугВсе 1735 услуг
Настройка Android App Bundle (AAB) для оптимизации размера
Средняя
от 1 рабочего дня до 3 рабочих дней
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1052
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    445

Настройка Android App Bundle (AAB) для оптимизации размера

С августа 2021 Google Play требует AAB вместо APK для новых приложений. Но просто переключить формат сборки с APK на AAB — недостаточно для реального уменьшения размера. Нужно понять, как работает Google Play Asset Delivery, настроить конфигурационные splits и убрать из base module всё, что туда не должно попасть.

Как AAB уменьшает размер

APK — один файл для всех устройств. AAB — архив с модулями, из которого Google Play собирает оптимизированный APK под конкретное устройство. Samsung Galaxy S23 с arm64-v8a и xxhdpi экраном получает только arm64-v8a нативные библиотеки и xxhdpi ресурсы — без x86, armeabi-v7a и xhdpi/hdpi вариантов.

Размер скачиваемого APK уменьшается в среднем на 15–35% по сравнению с universal APK — это официальные данные Google для реальных приложений.

Настройка в build.gradle

android {
    bundle {
        language { enableSplit = true }    // отдельный APK под язык
        density { enableSplit = true }     // отдельный APK под плотность экрана
        abi { enableSplit = true }         // отдельный APK под архитектуру CPU
        texture {
            enableSplit = true
            defaultFormat = "ETC2"        // основной формат, для Mali/Adreno baseline
            // ASTC для флагманов с поддержкой (Adreno 530+, Mali-G51+)
        }
    }
}

texture splits — особенно важны для игр и приложений с 3D: ETC2 — universally supported (GLES 3.0+), ASTC — лучшее сжатие на современных устройствах, DXT/S3TC — для x86 (ChromeOS). Без texture splits все форматы упакованы вместе, и это может давать +50–100 MB к размеру.

Проверка размера через bundletool

bundletool build-apks --bundle=app.aab --output=app.apks \
    --ks=keystore.jks --ks-pass=pass:password \
    --ks-key-alias=key --key-pass=pass:password

bundletool get-size total --apks=app.apks \
    --device-spec=pixel7_spec.json

device-spec.json для конкретного устройства получаем через bundletool get-device-spec --adb=<path>. Это даёт точный размер загружаемого APK для целевого устройства ещё до загрузки в Play Store.

R8 и ProGuard — обязательные спутники AAB

buildTypes {
    release {
        minifyEnabled = true
        shrinkResources = true
        proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
    }
}

shrinkResources = true работает только при minifyEnabled = true. Убирает неиспользуемые ресурсы — строки, изображения, layout — на основе статического анализа кода. В реальных проектах это 5–20 MB дополнительного уменьшения.

R8 в full mode (-dontobfuscate — не добавляем для release) агрессивнее удаляет код и инлайнит методы. proguard-android-optimize.txt вместо proguard-android.txt включает дополнительные оптимизации.

Анализ размера через Android Studio

Build → Analyze APK (работает и с AAB через распаковку). Показывает pie chart: classes.dex, res/, lib/, assets/. Сразу видно что занимает больше всего. Типичные находки:

  • assets/ с несжатыми JSON-файлами данных — сжать или перевести в бинарный формат (Protobuf / FlatBuffers)
  • lib/ с нативными библиотеками для всех ABI включая x86 и x86_64 — оставить только arm64-v8a и armeabi-v7a для production build
  • res/drawable-* с PNG там где достаточно VectorDrawable

Сроки

Настройка AAB с bundletool-верификацией — 1–2 дня. Если нужна полная оптимизация размера включая R8 tuning и texture splits — 3–5 дней.