Оптимізація розміру збірки (App Size) мобільного додатку

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Оптимізація розміру збірки (App Size) мобільного додатку
Середній
~2-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

Оптимізація розміру сборки мобільної програми

Розмір програми впливає на конверсію установки прямо: Google дані говорять про падіння конверсії на ~1% на кожен додатковий МБ розміру скачування на пристроях з повільним інтернетом. Android встановлює ліміт скачування без Wi-Fi (200 МБ за замовчуванням). iOS App Store показує попередження при скачуванні через сотовану сеть понад 200 МБ. Це не абстрактні метрики — це реальні бар'єри для установки.

Android: AAB та Play Feature Delivery

Перехід з APK на AAB (Android App Bundle) — перший та найпростіший крок. Google Play динамічно збирає оптимізований APK для кожного пристрою: лише потрібні ABI (arm64-v8a, x86_64), лише потрібні density ресурси (xxhdpi для пристроїв з xxhdpi екраном). Типова економія — 20-40% від розміру universal APK.

Якщо проект ще збирається в APK без AAB — це техдолг, який потрібно закрити в першу чергу.

R8 та ProGuard. R8 включений за замовчуванням у release-сборках з AGP 3.4+. Але minifyEnabled true та shrinkResources true у buildTypes.release потрібно перевірити явно — у legacy-проектах вони часто відключені «щоб не сломалось». Повний ProGuard дає 30-50% скорочення розміру коду.

Після включення мініфікації обов'язково: тестування release-сборки (не debug), додавання правил у proguard-rules.pro для reflection-heavy бібліотек (Gson, Retrofit, Room міграції), Crashlytics з mapping.txt для читабельних стектрейсів.

Ресурси. webp замість PNG/JPEG для всіх растрових зображень, крім випадків де прозорість з артефактами недопустима. Android Studio підтримує конвертацію прямо з IDE. Векторні drawables замість PNG для іконок та простої графіки — розмір вектора 1-3 КБ проти 50-200 КБ набору PNG для різних щільностей.

Unused resources: shrinkResources true видаляє невикористовувані ресурси автоматично. Але ресурси, підключені динамічно через Resources.getIdentifier(), можуть бути помилково видалені — потрібен keep.xml файл.

Нативні бібліотеки (.so). Якщо проект включає NDK-бібліотеки, перевіряємо список ABI: abiFilters 'arm64-v8a', 'x86_64' для production. armeabi-v7a потрібен лише якщо підтримуєте пристрої до 2014 року. Кожен лишній ABI — копія всіх .so файлів.

iOS: App Thinning та Bitcode

App Store автоматично застосовує App Thinning: різні варіанти сборки для різних пристроїв (2x/3x assets, arm64 лише для сучасних пристроїв). У Xcode Organizer → App Size Report можна побачити розмір сборки для конкретних типів пристроїв.

Assets.xcassets. Зображення мають бути саме там, а не в bundle безпосередньо — лише так працює Asset Catalog Compiler та App Thinning. WebP підтримується з iOS 14. PDF для vector assets у Asset Catalog — зручно, але Xcode растеризує їх при сборці, реальних переваг розміру не дає. SVG через UIGraphicsImageRenderer або SwiftUI Image з systemName для SF Symbols.

On-Demand Resources. Для програм з великою кількістю контенту (ігри, освіта) — розбиття ресурсів на теги та завантаження за потребою. Початковий розмір скачування мінімальний, ресурси підтягуються по мірі прохождення.

Дублюючі залежності. CocoaPods та Swift Package Manager можуть включити одну бібліотеку двічі в різних версіях. otool -L на бінарнику або аналіз через bloaty покаже реальний внесок кожного фреймворку.

Аудит залежностей — нередко дає більший ефект

Найпростіший спосіб скоротити розмір — убрати невикористовувані залежності. SDK, який підключили «на всякий випадок», SDK, від якого залишилась одна функція — кандидати на видалення.

Тип залежності Типичний внесок у розмір
Рекламні SDK (AdMob, IronSource) 3-8 МБ
ML-бібліотеки (TensorFlow Lite, Core ML моделі) 5-50 МБ
Аналітика (Firebase, Amplitude) 1-3 МБ
Карти (Google Maps SDK) 8-15 МБ

Firebase можна підключати модульно — лише потрібні компоненти, без pod 'Firebase' який тащить все відразу.

Термін оптимізації: три-сім робочих днів: аудит залежностей та конфігурації сборки, реалізація змін, вимірювання результату.