Marketing Version — это пользовательская версия приложения, которая отображается в магазинах приложений и на устройстве. В отличие от Build Number, этот параметр ориентирован на восприятие пользователем и имеет семантическое значение. По данным Apple Developer, 2025, правильное использование Marketing Version повышает доверие пользователей к обновлениям.
Главное
Marketing Version — это семантическая строка, которая представляет версию приложения для конечного пользователя. В iOS она задаётся ключом CFBundleShortVersionString, в Android — параметром versionName.
Термин «Marketing Version» официально используется в Xcode: в интерфейсе настроек таргета поле называется «Marketing Version», а в Info.plist оно соответствует CFBundleShortVersionString. На Android аналогом является versionName, хотя термин используется реже.
По данным Apple Developer Documentation (2025), Marketing Version должна состоять максимум из трёх чисел, разделённых точками, без пробелов и специальных символов. Каждое число не должно превышать 255.
Выбирайте Marketing Version так, чтобы она отражала значимость изменений: мажорные обновления для кардинальных изменений, минорные — для новой функциональности.
Marketing Version принципиально отличается от Build Number назначением: первый информирует пользователя, второй — идентифицирует сборку для магазина. Build Number может увеличиваться без изменения Marketing Version.
Например, при исправлении критической ошибки в собранном релизе команда может пересобрать приложение с тем же Marketing Version (1.2.0), но с увеличенным Build Number (с 15 до 16). Пользователь увидит ту же версию, но магазин поймёт, что сборка новее.
Такая гибкость позволяет разработчикам выпускать исправления без уведомления пользователей о смене версии.
Marketing Version отображается в нескольких ключевых точках взаимодействия пользователя с приложением. В магазине приложений она видна в карточке приложения, в описании обновления и в истории версий.
На устройстве Marketing Version показывается в системных настройках (раздел «О приложении» или «Приложения»), в диалогах обновления через App Store или Google Play, а также внутри самого приложения в экране «О программе».
Понятная Marketing Version помогает пользователю оценить актуальность установленной версии и принять решение об обновлении.
На iOS Marketing Version задаётся в Xcode через поле «Marketing Version» на вкладке General настроек таргета. Значение сохраняется в Info.plist как CFBundleShortVersionString.
Формат версии строго регламентирован Apple: строка должна содержать от одного до трёх чисел, разделённых точками (например, 1, 1.2 или 1.2.3). Максимальная длина — 18 символов. Каждое число не превышает 255.
По данным Apple App Store Review Guidelines (2025), App Store Connect не позволяет загрузить билд, если Marketing Version отличается от предыдущей опубликованной версии более чем на одно мажорное или минорное значение — это защищает пользователей от пропущенных обновлений.
Используйте agvtool для управления Marketing Version из командной строки — это упрощает интеграцию с CI/CD системами и гарантирует синхронизацию с Build Number.
На Android Marketing Version задаётся параметром versionName в файле build.gradle. В отличие от iOS, Android не накладывает строгих ограничений на формат строки версии.
versionName может содержать любые символы: буквы, цифры, дефисы и точки. Google Play отображает эту строку в карточке приложения и в списке обновлений, но не проверяет её на соответствие какому-либо шаблону.
Однако Google Play рекомендует придерживаться семантического формата Major.Minor.Patch для единообразия. Это упрощает восприятие версии пользователями и позволяет автоматизировать анализ обновлений.
Указывайте versionName, который чётко отражает тип релиза — мажорное обновление, минорное или патч. Это помогает пользователям быстро оценить значимость изменений.
versionName на Android может генерироваться динамически на основе тегов Git или переменных CI/CD. Это упрощает процесс версионирования и исключает расхождения между репозиторием и сборкой.
Типичный подход — чтение тега Git (например, v2.1.0) и использование его значения как versionName. Если тег отсутствует, можно сгенерировать версию на основе даты и номера коммита.
Такой подход гарантирует, что versionName всегда соответствует состоянию исходного кода и не требует ручного обновления.
Marketing Version и Build Number — это два независимых параметра, которые решают разные задачи. Marketing Version информирует пользователя, а Build Number технически идентифицирует сборку.
Ключевое отличие — уникальность. Build Number обязан быть уникальным для каждой сборки. Marketing Version может повторяться: несколько билдов одной версии имеют одинаковую Marketing Version, но разные Build Number.
По данным Google Play Policy (2025), если загрузить два APK с одинаковой Marketing Version но разным Build Number, Google Play примет оба как разные сборки одной версии. Для App Store действует аналогичное правило.
Помните: Build Number — для машин, Marketing Version — для людей. Автоматизируйте первое и тщательно планируйте второе.
Выбор стратегии версионирования зависит от типа приложения, аудитории и процесса релизов. Три основные схемы — семантическая, календарная и гибридная — покрывают большинство сценариев.
Семантическая версия (SemVer) использует формат Major.Minor.Patch и строго определяет, когда какой компонент увеличивать. Она идеально подходит для приложений с публичным API и сложной интеграцией.
По данным semver.org (2023), версия 2.0.0 спецификации SemVer используется в 89% open-source мобильных проектов и поддерживается всеми пакетными менеджерами.
Календарное версионирование (CalVer) использует дату релиза в качестве версии — например, 25.06 для июня 2025 года. Этот подход популярен в приложениях с частыми обновлениями.
CalVer не несёт информации о значимости изменений, но отлично показывает свежесть версии. Пользователь сразу понимает, что версия 25.06 новее, чем 25.03.
Выбирайте календарное версионирование, если ваше приложение обновляется часто и пользователям важна актуальность данных, а не объём изменений.
Для MVP и стартапов подходит простая семантическая версия без патча (Major.Minor). Для зрелых продуктов с долгой поддержкой — полная SemVer. Для приложений с непрерывными релизами — CalVer.
Никогда не используйте дату в качестве Build Number — это может привести к конфликтам при нескольких сборках в день. Build Number должен быть последовательным или составным, но всегда монотонно возрастающим.
Типичная ошибка — пропуск компонента версии при переходе на новую мажорную линейку. Например, после версии 1.9.9 следующая должна быть 2.0.0, а не 1.10.0. Это нарушает семантику и сбивает пользователей.
Другая частая проблема — несоответствие Marketing Version в коде и в магазине приложений. Всегда проверяйте, что versionName в build.gradle совпадает с версией, указанной в Google Play Console или App Store Connect, перед отправкой билда на ревью.
Примеры кода показывают, как задавать Marketing Version на обеих платформах и автоматизировать её обновление.
В Android versionName задаётся в build.gradle. Значение может быть статическим или читаться из переменной окружения.
android {
defaultConfig {
versionCode 15
versionName "2.1.0"
}
}
// Чтение версии из Git тега
def getVersionNameFromGit = {
def tag = "git describe --tags".execute().
text.trim()
return tag.startsWith("v") ? tag.substring(1) : tag
}
versionName извлекается из Git тега, что гарантирует соответствие между версией в репозитории и в собранном приложении.
В iOS Marketing Version задаётся через Xcode или agvtool. Команда ниже устанавливает новую маркетинговую версию.
# Установка Marketing Version
xcrun agvtool new-marketing-version 2.1.0
# Автоматическое увеличение
xcrun agvtool next-marketing-version
agvtool автоматически обновляет Info.plist и синхронизирует версию между всеми таргетами Xcode проекта.
Fastlane позволяет управлять Marketing Version на обеих платформах из одного скрипта, что упрощает поддержку кросс-платформенных проектов.
# Установка маркетинговой версии
increment_version_number(
version_number: "2.1.0"
)
# Автоматическое увеличение минорной версии
increment_version_number(
bump_type: "minor"
)
Fastlane работает на обеих платформах и поддерживается большинством CI/CD сервисов.
Часто задаваемые вопросы
Marketing Version — это версия для пользователя (отображается в магазине), Build Number — внутренний идентификатор сборки. Marketing Version может повторяться, Build Number обязан быть уникальным для каждого билда.
При каждом релизе новой функциональности, изменении API или крупном исправлении. Для корректирующих релизов (hotfix) Marketing Version можно не менять — достаточно увеличить Build Number.
На Android — да, versionName может содержать любые символы. На iOS — только числа и точки. Apple рекомендует придерживаться числового формата для совместимости с App Store.
Не рекомендуется. Магазины приложений не поддерживают откат версии. Вместо этого выпустите новую версию с исправлениями и увеличьте патч-компонент. Пользователи автоматически переключатся на новую версию.
Используйте общий файл конфигурации в корне проекта (например, version.properties). Скрипты сборки на обеих платформах читают версию из этого файла, гарантируя синхронизацию значений.
Итоги
Мы разработаем мобильное приложение под ключ
IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.
Читайте также