Налаштування 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
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Налаштування 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
            // 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 днів.