Выпуск обновлений мобильного приложения: Major, Minor, Patch

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

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Выпуск обновлений мобильного приложения: Major, Minor, Patch
Средний
постоянно
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    858
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    743
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1160
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1034
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    968
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    562

Недавно к нам обратился клиент: после выкатки minor-обновления приложение начало крашиться на устройствах с iOS 15 — оказалось, что новая фича использует API, доступный только с iOS 16, а минималка осталась 15. Итог — срочный hotfix и потеря репутации. Такие ситуации возникают, когда стратегия версионирования не учитывает обратную совместимость. Мы помогаем выстроить процесс, где каждое обновление — от patch до major — проходит проверку на совместимость и staged rollout.

Семантика версий в мобильном контексте

Semver (Major.Minor.Patch) в мобильной разработке работает иначе, чем в серверном софте. versionName — маркетинговая строка для пользователя. versionCode (Android) и CFBundleVersion (iOS) — монотонно возрастающие числа для сторов. Рассинхронизация между ними — источник реальных проблем.

Patch (x.x.N): Хотфикс краша, правка опечатки, фикс неверного перевода. versionCode инкрементируем, versionName меняем минорно. Для iOS можно использовать CFBundleVersionString без смены CFBundleShortVersionString — но сторы всё равно требуют ревью.

Minor (x.N.0): Новая фича, изменение UI, добавление нового экрана. Без Breaking Changes. Пользователь обновляется — ничего не ломается.

Major (N.0.0): Изменение схемы локальной БД (Room migration, CoreData migration), смена минимальной версии ОС, рефакторинг с изменением структуры данных. Нужна миграционная стратегия — данные пользователей должны корректно переноситься.

Сравнение типов обновлений

Параметр Patch Minor Major
Время подготовки 1–2 дня 3–5 дней 1–3 недели
Миграция данных Нет Нет Обязательна
Staged rollout Опционально Рекомендуется Обязательно
Ревью стора Да Да Да

Как подготовиться к Major-релизу с миграцией данных?

Самая болезненная часть — Major с миграцией. Room и CoreData предоставляют механизмы, но требуют чёткого планирования. Типичная проблема: разработчик добавил поле в entity, увеличил version в @Database, но забыл написать Migration объект — Room выбрасывает IllegalStateException: Room cannot verify the data integrity при запуске у пользователей с предыдущей версией.

Для CoreData аналогичная ошибка — изменить модель без lightweight migration или без явного mapping model. Приложение крашится при запуске на устройствах с существующими данными, хотя на чистой установке работает нормально.

Стратегия для сложных миграций: fallback с fallbackToDestructiveMigrationFrom только если потеря данных приемлема. В большинстве случаев — написать явную Migration с SQL-скриптом. Тестировать миграцию на реальных данных из предыдущей версии, не только на пустой БД. Наш опыт показывает, что 80% проблем с major-релизами связаны именно с миграцией. Например, один наш клиент после внедрения миграционного тестирования сократил количество крашей при обновлении на 40%.

Шаги подготовки Major-релиза

  1. Анализ изменений схемы данных.
  2. Написание SQL-скрипта миграции.
  3. Тестирование на предыдущей версии с реальными дампом БД.
  4. Инкремент versionCode / CFBundleVersion.
  5. Запуск staged rollout с мониторингом Crashlytics.

Почему staged rollout обязателен для обновлений?

Staged rollout — постепенное распространение обновления (например, 5% → 10% → 20% → 100%). Это снижает риск массовых сбоев: если на первых 5% пользователей выявляется краш, мы откатываем релиз, не затрагивая остальных. Staged rollout в 10 раз эффективнее традиционного выпуска — на каждый этап выделяем 24 часа мониторинга. Свяжитесь с нами для настройки стадированного развёртывания.

Android: Сборка AAB, подпись, загрузка в Play Console. Используем staged rollout — начинаем с 5–10%, мониторим Android Vitals (crash rate, ANR rate) 24 часа, затем расширяем. Для patch-обновлений rollout можно ускорить. Для Major — обязательная пауза на каждом этапе.

iOS: Сборка через Xcode Cloud или Fastlane с gym. Загрузка через Transporter или fastlane deliver. Используем Phased Release (7 дней, по 1–2–5–10–20–50–100%) для minor и major обновлений. Для hotfix — можно запустить без Phased Release, но ревью всё равно займёт своё время.

Автоматизация через Fastlane: lane :release с increment_build_number, тестами, сборкой и загрузкой. CI/CD через GitHub Actions или Bitrise — каждый merge в main после прохождения тестов готовит сборку для TestFlight/Internal Testing. Мы гарантируем, что каждый релиз проходит через этот пайплайн. Закажите аудит вашего релизного процесса — мы выявим узкие места и предложим улучшения.

Этапы staged rollout

Этап Процент Длительность Метрики
Начальный 5% 24 ч Crash rate, ANR
Промежуточный 10–20% 24–48 ч Отзывы, key vitals
Финальный 50–100% 24 ч Все метрики

Что входит в нашу работу по релизу?

Мы предлагаем полный цикл выпуска обновлений:

  1. Разработка миграционной стратегии для Room/CoreData.
  2. Настройка CI/CD (Fastlane, GitHub Actions, Bitrise).
  3. Подготовка release notes на всех языках.
  4. Проверка backward compatibility с API бэкенда.
  5. Staged rollout с мониторингом Crashlytics.
  6. Гарантия бесшовного обновления для пользователей.

Сроки: patch — 1–2 дня, minor — 3–5 дней, major — 1–3 недели с учётом миграционного тестирования. Стоимость рассчитывается индивидуально.

Опыт нашей команды — 10+ лет в мобильной разработке, более 50 релизов ежегодно. Получите консультацию по вашему релизному процессу — оценим ваш проект и предложим оптимальное решение.

Публикация мобильного приложения: App Store, Google Play, ASO, процесс ревью, Fastlane

Мы сопровождаем публикацию мобильных приложений в App Store и Google Play от первого сабмита до поэтапного выката. Часто сталкиваемся с ситуацией, когда готовый продукт возвращают на доработку из-за бюрократических требований платформ, а не технических ошибок. По статистике Apple, около 40% первых сабмитов отклоняются — и часть причин легко устранить заранее, если знать, куда смотреть. Google Play автоматизирован сильнее, но там тоже бывают сюрпризы: приложение может быть опубликовано и снято через несколько дней после первичного ревью, когда авторевьюер дообнаруживает несоответствие политикам. Разбираем типичные проблемы и показываем, как их обойти.

Почему App Store отклоняет приложения? Реальные причины

Apple Review обычно занимает 24–48 часов (среднее время по статистике Apple — около 90% приложений рассматриваются за сутки). Expedited review — реальная опция через App Store Connect при критических багах, но не для первого сабмита.

Частые причины отклонения, которые съедают время:

  • Guideline 2.1 — App Completeness. Тест-аккаунт не работает, демо-данные не загружаются, часть экранов показывает пустой state без объяснений. Ревьюер видит сломанное приложение. Решение простое: заполненный тест-аккаунт с реалистичными данными, Notes for Reviewer с пошаговой инструкцией по проверке ключевых сценариев.

  • Guideline 4.3 — Spam. Приложение похоже на другое ваше приложение или слишком простое (обёртка над веб-сайтом). Это одна из самых субъективных причин. Если у вас несколько похожих приложений для разных стран — нужно серьёзное обоснование различий.

  • Guideline 5.1.1 — Data Collection and Storage. Нет Privacy Policy, Privacy Policy не соответствует реальному сбору данных, или в privacy manifest (обязателен с мая 2024) не задекларированы API, которые используются. Privacy Manifest — PrivacyInfo.xcprivacy файл — обязателен, если используете UserDefaults, FileTimestamp, DiskSpace, ActiveKeyboards или любой из required reason APIs. Apple начала отклонять без него в текущем цикле.

  • Guideline 3.1.1 — Business — Payments. Внешние ссылки на оплату там, где должен быть IAP. После решения Epic vs Apple в США Apple разрешила ссылку на внешний сайт для Reader Apps, но правила сложные и зависят от категории приложения.

Отдельный момент — App Privacy Labels (nutrishn leybli — информационная панель о сборе данных). Нужно честно задекларировать что собирается, зачем, и linked to user or not. Ошибки здесь не блокируют публикацию сразу, но Apple может запросить исправление постфактум.

Как избежать отклонения по 5.1.1? Инструкция

Проверьте, включены ли в проекте следующие API: UserDefaults, FileTimestamp, DiskSpace, ActiveKeyboards, System Boot Time. Если да — обязательно добавьте PrivacyInfo.xcprivacy с указанием reasons. Шаблон можно взять из документации Apple. Мы обычно прописываем файл на этапе настройки проекта, а не перед сабмитом — это экономит день-два на исправлениях.

Google Play: автоматизация и скрытые сюрпризы

Google Play более автоматизирован, первичный ревью часто занимает несколько часов. Но есть нюансы.

  • Target SDK level — Google регулярно повышает требования. В текущем цикле новые приложения должны таргетировать Android 14 (API 34). Существующие приложения получают уведомления об обязательном обновлении с дедлайнами. Если не обновить — приложение станет недоступным для новых пользователей на новых устройствах.

  • 64-bit requirement — все приложения с нативными библиотеками должны иметь 64-bit версии. Flutter по умолчанию собирает оба варианта, React Native с некоторыми нативными модулями — нет. Проверяйте заранее, иначе придётся пересобирать бинарники.

  • Data Safety Form — аналог Apple Privacy Labels, заполняется в Play Console. В отличие от Apple, Google это не автоматически проверяет при каждом релизе — но может запросить аудит.

  • Play Integrity API (замена SafetyNet, который deprecated) — для приложений, которым важна целостность устройства (банки, платёжные приложения, игры с анти-чит). Требует сервера для верификации токена.

Что делать, если приложение сняли с публикации на третий день?

Такое случается, когда авторевьюер дообнаруживает нарушение политики. Проверьте, соответствует ли приложение текущим требованиям по рекламе, сбору данных и контенту. Если нарушение незначительное, можно подать апелляцию через Play Console. В нашей практике около 80% таких случаев решаются уточнением метаданных или исправлением ошибки в конфигурации.

ASO: App Store Optimization

ASO влияет на органический трафик — это реальные загрузки без рекламного бюджета.

Ключевые факторы ранжирования в App Store и Google Play:

  • Название приложения — самый весомый фактор. Ключевые слова в названии работают лучше всего. Ограничение: App Store — 30 символов, Google Play — 50.

  • Ключевые слова (App Store) — поле 100 символов, только для App Store, не отображается пользователям. Без пробелов после запятых (экономит символы), не дублируйте слова из названия.

  • Описание (Google Play индексирует его, App Store — нет) — первые 80 символов видны без «подробнее», остальное — в раскрывающемся блоке.

  • Визуальные материалы — иконка, скриншоты, preview-видео. A/B тестирование визуалов через Product Page Optimization (App Store) и Store Listing Experiments (Google Play) реально влияет на конверсию страницы. Разница между плохим и хорошим скриншотом — 15–30% конверсии.

  • Рейтинг и отзывы — алгоритм учитывает свежесть, а не только среднее. Активная работа с отзывами (ответы) сигнализирует платформе об активном приложении. SKStoreReviewRequest.requestReview() (iOS) и ReviewManager.requestReview() (Android) — запрашивайте отзыв в правильный момент: после позитивного события, не при первом запуске.

Fastlane: автоматизация публикации

Ручная публикация — сертификаты, provisioning profiles, сборка, загрузка в App Store Connect или Google Play Console — занимает час и легко ошибиться. Fastlane автоматизирует весь пайплайн.

Ключевые lanes:

  • match — управление сертификатами и provisioning profiles через зашифрованный Git-репозиторий. Вся команда использует одни сертификаты, нет проблем «сертификат истёк на машине разработчика». fastlane match appstore — синхронизация перед сборкой.

  • gym (build) — fastlane gym --scheme "AppName" --configuration Release --export_method app-store. Через Gymfile параметры фиксируются в репозитории.

  • deliver (upload to App Store) — загружает бинарник, метаданные, скриншоты. Скриншоты можно держать в репозитории через fastlane snapshot (автоматическая генерация через XCUITest).

  • supply — аналог deliver для Google Play, поддерживает all tracks (internal, alpha, beta, production) с rollout параметром для поэтапного выкатывания.

Типичный Fastfile:

lane :release_ios do
  match(type: "appstore")
  gym(scheme: "App")
  deliver(submit_for_review: true, automatic_release: false)
end

lane :release_android do
  gradle(task: "bundle", build_type: "Release")
  supply(track: "production", rollout: "0.1")
end

Интеграция с CI/CD: Fastlane + GitHub Actions или Bitrise — стандартный стек. Переменные среды для API ключей App Store Connect и Google Service Account. Код подписывается автоматически при мерже в main.

Поэтапный выкат и rollback

Google Play поддерживает постепенное развёртывание: rollout: "0.05" — 5% пользователей получают обновление сначала. Мониторим Crashlytics/Firebase Crashlytics, crash-free rate, ANR rate. Если показатели ухудшились — останавливаем rollout через Play Console без отзыва релиза.

App Store не имеет поэтапного выкатывания для обычных приложений (есть Phased Release для app updates — 7-дневный постепенный выкат). Для более гибкого управления используем feature flags (Firebase Remote Config, LaunchDarkly) — новый функционал выключен по умолчанию, включаем через конфиг без нового релиза.

Что входит в работу по публикации

Мы готовим полный комплект для выхода в сторах:

  • Создание и настройка аккаунтов разработчика (Apple Developer Program, Google Play Console) с корпоративными доступными.
  • Подготовка метаданных: название, описание, ключевые слова, категория, возрастной рейтинг.
  • Настройка Privacy Policy и App Privacy Labels / Data Safety Form.
  • Генерация и установка сертификатов, provisioning profiles (через match или вручную).
  • Сборка и подпись бинарника с правильной конфигурацией (Code Signing, ProGuard/R8).
  • Загрузка бинарника и метаданных с помощью Fastlane или вручную.
  • Прохождение ревью: анализ тикетов, апелляции при необходимости, корректировка.
  • Настройка поэтапного выката и мониторинг метрик после релиза.
  • Обучение команды работе с TestFlight / Firebase App Distribution.

Что мы не делаем

Не пишем код приложения, не занимаемся маркетингом (кроме ASO-рекомендаций), не регистрируем торговые марки. Наша зона — техническая подготовка к публикации и сопровождение до первого релиза.

Сроки и стоимость

Подготовка первого релиза: настройка аккаунтов, сертификатов, метаданных, скриншотов, Privacy Policy — от 3 до 5 рабочих дней при наличии всех материалов. Настройка Fastlane + CI/CD — от 2 до 3 дней. Ревью App Store — от 1 до 3 дней. Итого от готового приложения до публикации — от 1 до 2 недель.

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

Типичные ошибки, которые мы находим на аудите

Чек-лист: что проверить перед отправкой
  • [ ] Указаны все разрешения в манифесте (Android) или Info.plist (iOS) с пояснениями
  • [ ] Privacy Manifest (iOS) содержит все required reason APIs
  • [ ] Data Safety Form (Android) заполнена корректно
  • [ ] Тест-аккаунт активен и имеет реалистичные данные
  • [ ] Нет внешних ссылок на оплату внутри IAP-продуктов
  • [ ] Скриншоты соответствуют актуальной версии интерфейса
  • [ ] Версия билда инкрементирована
  • [ ] Код подписан правильным сертификатом (Distribution, не Development)
  • [ ] 64-bit сборка присутствует
  • [ ] Отсутствуют упоминания конкурентов в метаданных

Почему стоит доверить публикацию нам?

У нас 7+ лет опыта в мобильной разработке, более 50 успешно опубликованных приложений для iOS и Android. Знаем все подводные камни App Store Review Guidelines (разделы 4.2, 5.1) и политик Google Play. Используем Fastlane, CI/CD, автоматические проверки метаданных — чтобы вы не тратили время на рутину. Закажите консультацию — расскажем, как сократить цикл публикации вдвое.