Оптимизация размера сборки (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
    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

Оптимизация размера сборки (App Size) мобильного приложения

App size влияет на конверсию установки напрямую: 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' который тащит всё сразу.

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