Какие версии/номера сборки iOS-приложений должны быть увеличены после выпуска App Store?

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

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

  • "создать" CFBundleVersion (String-iOS, OS X) указывает номер версии сборки bundle, который идентифицирует итерацию (выпущенную или неизданную) пакета. Номер версии сборки должен быть строкой, состоящей из трех неотрицательных целых чисел, разделенных периодом, причем первое целое число должно быть больше нуля. Строка должна содержать только numeric (0-9) и period (.) письмена. Ведущие нули усекаются из каждого целого числа и игнорируются (то есть 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 делает не необходимо увеличить и находится в ни проверено. The android:versionName может оставаться неизменным между выпусками, обновлением, понижением или любой случайной строкой, а не что-то, что кажется действительным "номером версии".

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

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

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

а android:versionCode применяется для инкрементный-по-освободить целое.


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

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

Apple Technical Note TN2420 - номера версий и номера сборки

7 ответов


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. Убедитесь, что у вас есть номер версии и номер сборки установлен правильно поможет вам избежать автоматического отклонения вашего приложения за то, что они неправильно настроены.

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

на основе контрольного списка, следующие (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)


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

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

источник

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

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

источник

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

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

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

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

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

Error messages

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

да. Используяsemver.org стандарт.

являются ли числа CFBundleShortVersionString и CFBundleVersion каким-либо образом по сравнению друг с другом?

нет.


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

CFBundleVersion частный построить количество. Его не видно в AppStore. Вы должны увеличивать его при каждом загрузить. Это означает, что если вы когда-либо отклоните двоичный файл, прежде чем он выйдет в интернет, и вы хотите загрузить новый binary, он будет иметь то же самое CFBundleShortVersionString но должен иметь высшее CFBundleVersion (пример: public "2.5", private" 2.5", а затем binary отклонить и повторно загрузить private"2.5.1")

редактировать 16 ноября 2016:

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

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

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

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


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

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


и CFBundleVersion и CFBundleShortVersionString должны увеличиваться при выпуске новой версии в App Store.

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

Xcode Organizer Validator error: must increment the version number.

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

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

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

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

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

вам нужно увеличить и.

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

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

подробнее о CFBundleShortVersionString и CFBundleVersion смотрите здесь: https://stackoverflow.com/a/31921249/936957


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

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