Мониторинг размера приложения по версиям: настройка в CI/CD
Без системного мониторинга размер приложения растёт незаметно. Недавний кейс: стартап с мессенджером за три релиза вырос с 50 до 85 МБ — конверсия установок упала на 12%. После внедрения автоматического трекинга мы откатили регрессию до 55 МБ. Каждый мегабайт сверх порога стоит реальных денег: потери конверсии могут достигать сотен тысяч рублей ежемесячно.
Мы настраиваем автоматический мониторинг размера по версиям для iOS и Android, интегрированный в CI/CD. Вы получаете прозрачную историю изменений, пороговые алерты и блокировку регрессий до релиза.
Почему размер приложения критичен для конверсии?
Согласно данным Google, каждые 6 МБ сверх порога снижают конверсию установки на 1%. App Store предупреждает пользователей при загрузке >200 МБ по мобильной сети — это прямой риск потери клиентов. Для игр и медиа-приложений порог ещё ниже: каждый дополнительный 1 МБ ресурсов уменьшает количество установок на 0.5%. Контроль размера напрямую влияет на LTV и retention.
Какие инструменты выбрать для мониторинга размера?
bundletool точнее ручного анализа в 10 раз, а appstoreconnect-swift-sdk автоматизирует получение данных из App Store Connect. Сравним эффективные решения:
| Платформа | Инструмент | Точность | Автоматизация |
|---|---|---|---|
| iOS | App Store Connect | ±0.1 МБ | Требует API |
| iOS | appstoreconnect-swift-sdk | ±0.01 МБ | Полная (CI/CD) |
| Android | Google Play Console | ±1 МБ | Требует скриптов |
| Android | bundletool | ±0.001 МБ | Полная (CI/CD) |
bundletool обеспечивает точность до байта — на порядок выше ручного анализа. Для iOS appstoreconnect-swift-sdk позволяет получать метрики без ручной выгрузки. Оба инструмента легко интегрируются в GitLab CI или GitHub Actions.
Что мониторить: iOS и Android
iOS: в App Store Connect → TestFlight → App Size отображается сжатый и распакованный размер для каждой версии по типам устройств. App Thinning создаёт уникальные сборки под конкретные модели — мониторинг каждой важен. Ключевые метрики: Compressed (downloaded) size и Uncompressed (installed) size. Типичный диапазон для среднего приложения — 50–150 МБ. Также полезно отслеживать размер linkmap, чтобы видеть вклад каждой библиотеки. Размер IPA — итоговый файл дистрибутива, его тоже стоит контролировать.
Android: в Google Play Console → Android Vitals → App size показывается APK size и AAB download size по устройствам. AAB автоматически урезает ресурсы, поэтому реальный размер установки на 10–30% меньше APK. Прямой APK size не всегда показателен — используйте bundletool для получения точного download size.
Настройка мониторинга в CI/CD
Пошаговый план для обеих платформ:
- iOS: после сборки xcarchive извлекаем размер с помощью Xcode size report или через API App Store Connect.
- Android: из AAB получаем реальный download size через
bundletool get-size total. - В CI-скрипте сравниваем размер с предыдущей версией из main ветки.
- При превышении порога (например, +3 МБ — warning, +8 МБ — error) пайплайн падает или отправляет уведомление.
Пример скрипта для Android
java -jar bundletool.jar get-size total \ --bundle=app-release.aab \ --dimensions=ABI,SCREEN_DENSITY \ --device-spec=device-spec.json Для iOS используем appstoreconnect-swift-sdk для получения размера из App Store Connect.
Блокировка билда при превышении порога
Этот процесс — ключевая защита от регрессий. В CI-скрипте извлекаем размер текущей сборки и сравниваем с размером последней стабильной версии (из main). Если разница превышает порог error, пайплайн завершается с ошибкой. Для порога warning отправляем уведомление в Slack/Telegram. Такая блокировка предотвращает случайное увеличение размера на продакшене.
Пороги и алерты
Действующие пороги настраиваются индивидуально. Для типового приложения разумные значения:
| Порог | Действие | Пример |
|---|---|---|
| Warning: +3 МБ | Уведомление в Slack | +3 МБ из-за новой библиотеки |
| Error: +8 МБ | Блокировка пайплайна | +8 МБ — загружены тестовые видео |
Порог зависит от типа приложения: для мессенджера +3 МБ — критично, для игры с новым уровнем — нормально. Мы настраиваем в процессе.
История размера по версиям
Сохраняем метрики при каждом релизе в базу или JSON. Структура записи: {version, build_number, date, ios_compressed_mb, ios_installed_mb, android_aab_mb, breakdown_by_category}. Breakdown по категориям: Resources (текстуры, звуки) — 60–70%, Frameworks/Libraries, Executable. На iOS linkmap показывает вклад каждой библиотеки. В Android Studio — Analyze APK с побайтовой разбивкой. Ведение истории позволяет анализировать тренды и предсказывать будущий рост.
Что входит в работу и сроки
- Интеграция скриптов в GitLab CI / GitHub Actions
- Настройка порогов и алертов (Slack/Telegram)
- Создание dashboard в Grafana или простого JSON-лога
- Документация по расширению
- Обучение команды (1 час созвон)
Ориентировочные сроки: 1–2 рабочих дня. Стоимость рассчитывается индивидуально под ваш стек и инфраструктуру. Получите консультацию — мы оценим ваш проект за 1 час.
Наши инженеры имеют опыт более 40 проектов по оптимизации мобильных приложений. Закажите настройку мониторинга размера прямо сейчас — ваше приложение останется лёгким.







