Настройка мониторинга размера приложения по версиям
Размер приложения влияет на конверсию установок напрямую. Google опубликовал данные: каждые 6 МБ сверх некоторого порога снижают конверсию установки на 1%. App Store предупреждает пользователей при загрузке >200 МБ по мобильной сети. Без мониторинга размер растёт незаметно: разработчик добавил SDK, дизайнер загрузил raw PNG вместо WebP, кто-то закоммитил тестовые ресурсы — и приложение стало на 15 МБ тяжелее, никто не заметил.
Что и где мониторить
iOS: App Store Connect → TestFlight → App Size показывает размер для каждой версии по типам устройств (Universal, iPhone с конкретным чипом). App Thinning делает разные сборки для разных устройств — мониторим каждый вариант отдельно. Основной показатель: Compressed (downloaded) size и Uncompressed (installed) size.
Android: Google Play Console → Android Vitals → App size. Показывает APK size и AAB (Android App Bundle) download size по устройствам. AAB автоматически урезает ресурсы под конкретное устройство, поэтому реальный размер установки отличается от размера APK.
Автоматический мониторинг в CI/CD
Ручная проверка в App Store Connect — ненадёжна. Нужна автоматическая проверка в CI с порогом и блокировкой пайплайна.
Для iOS после сборки xcarchive извлекаем размер:
# Генерируем IPA с App Thinning
xcodebuild -exportArchive \
-archivePath Build/App.xcarchive \
-exportPath Build/Export \
-exportOptionsPlist ExportOptions.plist
# Получаем размер из SizeReport.txt который Xcode генерирует при экспорте
cat Build/Export/App.ipa | wc -c
Более точный способ — xcrun simctl addmedia с последующим анализом, или использование appstoreconnect-swift-sdk для получения реального App Store size через API.
Для Android — из AAB:
# bundletool для получения реального download size
java -jar bundletool.jar get-size total \
--bundle=app-release.aab \
--dimensions=ABI,SCREEN_DENSITY \
--device-spec=device-spec.json
bundletool — официальный инструмент Google, который имитирует то, что делает Play Store при раздаче APK из AAB.
Пороги и алерты
В CI-скрипте: если размер вырос более чем на N МБ относительно предыдущей версии (или относительно main ветки) — билд считается предупредительным или падает. Разумные пороги:
- Warning: +3 МБ за одну версию
- Error/блокировка: +8 МБ за одну версию
Порог зависит от типа приложения: для мессенджера +3 МБ — много, для игры с новым уровнем — нормально.
Dashboard по версиям
Сохраняем метрики размера в базу (или простой JSON в репозитории) при каждом релизе. Структура записи: {version, build_number, date, ios_compressed_mb, ios_installed_mb, android_aab_mb, breakdown_by_category}.
Breakdown by category — разбивка на составляющие:
- Resources (текстуры, звуки, видео) — обычно 60–70% размера
- Frameworks/Libraries — SDK и статические библиотеки
- Executable — скомпилированный код
На iOS linkmap файл показывает вклад каждой библиотеки и файла в размер бинарника. В Android Studio — Analyze APK (Build → Analyze APK) с побайтовой разбивкой.
Отслеживание тренда по версиям позволяет быстро идентифицировать, в каком релизе размер резко вырос, и найти коммит-виновник.
Сроки настройки: один-два рабочих дня, включая интеграцию в CI и создание базового dashboard.







