Какие версии / номера приложений для iOS ДОЛЖНЫ быть увеличены после выпуска App Store?

Поля версии / сборки для приложения iOS включают в себя:

"Версия"CFBundleShortVersionString (Строка - iOS, OS X) указывает номер версии выпуска пакета, который идентифицирует выпущенную итерацию приложения. Номер версии выпуска - это строка, состоящая из трех целых чисел, разделенных точками.

«Сборка»CFBundleVersion (Строка - iOS, OS X) указывает номер версии сборки пакета, который идентифицирует итерацию (выпущенную или невыпущенную) пакета. Номер версии сборки должен быть строкой, состоящей из трех неотрицательных целых чисел, разделенных точками, причем первое целое число больше нуля. Строка должна содержать только цифры (0-9) и точку (.). Ведущие нули усекаются от каждого целого числа и будут игнорироваться (т. Е. 1.02.3 эквивалентно 1.2.3). Этот ключ не локализуем.

«Номер версии iTunes Connect»: номер версии, который вы указываете при создании новой версии приложения в iTunes Connect.

Мой вопрос:

Какие номера версий / сбороктребуется увеличить когда новая версия приложения загружается в iTunes Connect и / или выпускается в App Store?

Может либо "версия"CFBundleShortVersionString или "построить"CFBundleVersion остаются неизменными между обновлениями приложений?

Дополнительные баллы за источники Apple или точные сообщения об ошибках, которые iTunesConnect отображает при загрузке неверной версии / номера сборки.

Примечание для Android / Google Play:

Обсуждение, вызывающее этот вопрос, заключается в том, что общедоступная «версия» приложения для Android в Google Play Storeне должны быть увеличены и находится вни за что подтверждено.android:versionName может оставаться неизменным между выпусками, обновлением, понижением или быть любой произвольной строкой, а не чем-то, что выглядит как действительный «номер версии».

android:versionName - Строковое значение, представляющее версию выпуска кода приложения, как это должно быть показано пользователям.

Значение представляет собой строку, так что вы можете описать версию приложения в виде<major>.<minor>.<point> строка,или как любой другой тип абсолютного или относительного идентификатора версии.

Разница между versionName и versionNumber в Android

В то время какandroid:versionCode принудительно является целым приращением при выпуске.

Документация Apple

Как отмечено внедавно принятый ответApple недавно опубликовала Техническое примечание, в котором подробно описывается их версия и схема номеров сборок:

Техническое примечание Apple TN2420 - номера версий и номера сборки

 Yunus Nedim Mehel10 авг. 2015 г., 16:08
Подробный ответ со скриншотом:stackoverflow.com/a/31921249/936957

Ответы на вопрос(7)

CFBundleVersion, Увеличение короткой строки версии не обязательно, хотя вам, вероятно, следует увеличить ее, поскольку она сообщает пользователю, что приложение новое. Однако Apple утверждает, что нумерация должна соответствовать традиционным соглашениям о версиях программного обеспечения, и iTunes Connect может жаловаться, если вы попытаетесь повторно загрузить уже существующую версию.

Короче говоря, это может сработать, но, вероятно, нет.

 pkamb15 янв. 2014 г., 00:01
Ищете авторитетные ответы на какие клавишидолжен быть увеличен. ЕслиCFBundleShortVersionString не нужно увеличивать, «одна и та же» версия для пользователя может быть загружена в App Store несколько раз?

CFBundleShortVersionString является общедоступным «именем» версии (например, «2.5» или «3.8.1»). Вы должны увеличить его на каждомвыпуск.

CFBundleVersion это частныйстроить номер. Это не видно в AppStore. Вы должны увеличить его на каждомзагружать, Это означает, что если вы когда-нибудь отклоните двоичный файл до того, как он выйдет в сеть, и вы захотите загрузить новый двоичный файл, он будет иметь тот жеCFBundleShortVersionString но должно быть вышеCFBundleVersion (пример: общедоступный «2.5», частный «2.5», затем двоичное отклонение и повторная загрузка приватного «2.5.1»)

Изменить 16 ноября 2016 г .:

/!\ TheCFBundleVersion свойство также используется (наряду сCFBundleName) вUser-Agent заголовок отправленNSURLConnection в вашем коде.

Пример: еслиCFBundleName являетсяMyApp а такжеCFBundleVersion равен 2.21, то любой программный HTTP-запрос отправляется непосредственно вашим кодом с использованиемNSURLConnection вставит заголовок:

User-Agent: MyApp/2.21 CFNetwork/... Darwin/...

(Это не относится к запросам, автоматически выдаваемым UIWebView).

 pkamb17 дек. 2014 г., 19:02
Большое различие между требованиями к загрузке / выпуску.
 Gabriel11 янв. 2015 г., 10:08
@nestor Ты прав, я был неправ. Разрешены только цифры. Позвольте мне отредактировать мой ответ.
 Néstor09 янв. 2015 г., 08:27
@gabriel, я пытался установить номер сборки в X.X-rc2, но валидатор Организатора не позволяет мне устанавливать что-либо отличное от X.Y.Z, где X, Y и Z являются целыми числами: S. Было бы здорово иметь номер сборки -rc2, вам когда-нибудь удавалось представить один выпуск вместе с ним?
 AechoLiu12 дек. 2016 г., 03:55
@gabriel, я использую скрипт для разбораX.X-rc2 вX.X.2для системы CI для генерацииbuildNumber для загрузки в iTunesConnect.

обе.

При загрузке новой версии вам нужно будет создать новую версию в iTunes Connect, которая автоматически превысит предыдущие версии. Эта версия в iTunes Connect будет ожидать двоичный файл с тем же номером версии, поэтомуCFBundleShortVersionString должен быть увеличен.

Если вы обновили версию, но забыли увеличитьCFBundleVersion, вы столкнетесь с ошибкой во время загрузки. Смотрите ответ и скриншот от pkamb.

Подробнее оCFBundleShortVersionString а такжеCFBundleVersion, посмотри пожалуйста:https://stackoverflow.com/a/31921249/936957

CFBundleVersion а такжеCFBundleShortVersionString ДОЛЖЕН увеличиваться при выпуске новой версии в App Store.

Кроме того, одна из строк должна соответствовать версии, указанной в iTunes Connect.

Этот вопрос включает в себя приведенный выше скриншот валидатора Xcode Organizer, отказывающегося проверять приложение, когдаCFBundleVersion а такжеCFBundleShortVersionString не были увеличены.

Этот пакет недействителен. Значение для ключаCFBundleVersion [1.0] в файле Info.plist должен содержать версию более высокого уровня, чем в ранее загруженной версии [1.134].

Этот пакет недействителен. Значение для ключаCFBundleShortVersionString [1.0] в файле Info.plist должен содержать версию более высокого уровня, чем в ранее загруженной версии [1.134].

Валидатор также выдает ошибку, доказывающую, что одна из строк должна соответствовать версии приложения, созданного в iTunes Connect.

Несоответствие версий. Ни CFBundleVersion ['1.0'], ни CFBundleShortVersionString ['1.0'] в Info.plist не соответствуют версии приложения, установленной в iTunes Connect ['1.4'].

чем номер последней версии приложения. Это хорошая практика, чтобы держать их такими же. Вы должны найти их в вашем -info.plist.

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

 Andy15 янв. 2014 г., 00:21
«Это хорошая практика, чтобы держать их такими же» - это не обязательно так. Если у вас есть тестеры, работающие над вашим приложением, вы можете увеличить номер сборки по мере внесения изменений, но оставить номер версии прежним. Используя непрерывную интеграцию, вы можете обновить свой номер сборки, например, перед развертыванием в тестировщиках.
 pkamb15 янв. 2014 г., 00:08
Спасибо за дополнительную информацию. Вы должны отредактировать свой ответ, чтобы добавить свой опыт при загрузке сборки.
 xoail15 янв. 2014 г., 00:01
Да, оба должны быть увеличены. Прошлой ночью, когда я пытался представить их, прежде чем увеличивать их, он жаловался на оба ключа.
 xoail15 янв. 2014 г., 00:23
@ И ты прав, в этом есть смысл. Спасибо за указание варианта использования. Я думал только с точки зрения единой среды разработки / тестирования.
 pkamb14 янв. 2014 г., 23:59
Я упомянул оба этих ключа в своем вопросе. Ваш ответ здесь, что оба эти значения должны быть увеличены? Можете ли вы лучше поддержать свой ответ?

CFBundleShortVersionString должен соответствовать номеру версии, которую вы указали в iTunes Connect. Это также номер версии, который отображается, когда пользователь просматривает ваше приложение в App Store.

Номер версии отображается в магазине, и эта версия должна соответствовать номеру версии, который вы введете позже в iTunes Connect.

Источник

CFBundleVersion не отображается в App Store, но используется iTunes для определения момента обновления вашего приложения.

Если вы обновите строку сборки, как описано в разделе «Установка номера версии и строки сборки», iTunes обнаружит, что строка сборки изменилась, и правильно синхронизирует новый пакет iOS App Store с тестовыми устройствами.

Источник

Отвечая на ваши вопросы более конкретно ...

Какие номера версий / сборок необходимо увеличивать при загрузке новой версии приложения в магазин приложений?

Обе. Один отображается в App Store, другой используется iTunes для обновления приложения.

Может ли CFBundleShortVersionString или CFBundleVersion оставаться неизменным между обновлениями приложения?

Нет. (Мета вопрос, какой здесь будет вариант использования? Если вы каким-либо образом редактировали полезную нагрузку, сборка будет другой, и пользователь захочет узнать об этом). Если вы попытаетесь, вы увидите сообщения об ошибках, как показано ниже:

Или они сравниваются с предыдущим соответствующим номером, чтобы гарантировать, что численно большее число будет загружено с новой версией приложения?

Да. С помощьюsemver.org стандарт.

Сравниваются ли числа CFBundleShortVersionString и CFBundleVersion с другими?

Нет.

 pkamb15 янв. 2014 г., 00:23
Спасибо, отличное редактирование. Специально для этой ссылки. Валидатор организатора показывает ошибки «должны содержать более высокую версию» как для CFBundleVersion, так и для CFBundleShortVersionString.
 jeet.chanchawat07 июл. 2014 г., 08:43
+1 для ссылки SemVer ... Учитывая номер версии MAJOR.MINOR.PATCH, увеличивайте версию: MAJOR при внесении несовместимых изменений API, версию MINOR при добавлении функциональности обратно-совместимым способом и версию PATCH при обратном -совместимые исправления ошибок.
 Andy15 янв. 2014 г., 00:18
Да, если вы попытаетесь вставить приложение в App Store, не обновляя оба, вы увидите сообщение об ошибке, например,stackoverflow.com/questions/19367893/...
 pkamb15 янв. 2014 г., 00:07
Хорошо, я знаю, как используются два числа. Вопрос: оба онитребуется увеличиваться при выпуске новой версии приложения?
Решение Вопроса

Техническое примечание Apple TN2420, номера версий и номера сборки

Резюме:Пара (Version, Build number) Должно быть уникальным.Последовательность действительна: (1.0.1, 12) -> (1.0.1, 13) -> (1.0.2, 13) -> (1.0.2, 14) ...Version (CFBundleShortVersionString) должен быть в порядке возрастания.Build number (CFBundleVersion) должен быть в порядке возрастания.Контрольный список номера версии и номера сборки

Вот некоторые вещи, которые вы можете проверить при отправке новой сборки в App Store. Убедитесь, что у вас правильно установлены номер версии и номер сборки, чтобы избежать автоматического отклонения вашего приложения за неправильную настройку.

Для каждой новой версии вашего приложения вам нужно придумать новый номер версии. Этот номер должен быть больше, чем последний номер версии, который вы использовали. Хотя вы можете предоставить множество сборок для любого конкретного выпуска вашего Приложения, вам нужно использовать только один новый номер версии для каждого нового выпуска вашего приложения.Вы не можете повторно использовать номера версий.Для каждой новой сборки, которую вы отправляете, вам нужно будет придумать новый номер сборки, значение которого больше, чем последний использованный вами номер сборки (для той же версии).Вы можете повторно использовать номера сборки в разных поездах выпуска, но вы не можете повторно использовать номера сборки в одной последовательности выпуска.

На основании контрольного списка, следующее(Version, Build Number) последовательность действительна тоже.

Дело: повторное использованиеBuild Number в разных поездах выпуска.

(1.0.0, 1) -> (1.0.0, 2) -> ... -> (1.0.0, 11) -> (1.0.1, 1) -> (1.0.1, 2)

 Emil20 мар. 2018 г., 18:05
Я не совсем понимаю. Одним из условий является «Вы не можете повторно использовать номера версий», но в последнем примере номера версий остаются неизменными, в то время как номера сборок увеличиваются. Я что-то неправильно понимаю?
 AechoLiu25 июл. 2016 г., 03:16
@enamrik, ты прав. Я обновляю это снова. Извините за ввод в заблуждение.
 pkamb30 апр. 2018 г., 21:46
@EmilParikh Номера версий могут быть загружены в Apple несколько раздо выпускакаждый с уникальным номером сборки. Но как только он будет выпущен, вы не сможете повторно использовать этот номер версии.
 pkamb24 июн. 2016 г., 21:43
Отличный ответ и ссылка! Этот документ, похоже, был добавлен на сайт Apple2015-10-08, Я собираюсь отметить это как принятый ответ, спасибо!
 enamrik24 июл. 2016 г., 10:21
Может кто-нибудь изменить это, чтобы быть правильным ответом? Это вводит в заблуждение людей, потому что информация неверна. CFBundleShortVersionString является общедоступной версией, а CFBundleVersion является номером сборки, а не наоборот.

Ваш ответ на вопрос