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


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

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

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

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

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

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

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


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

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

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

7 71

7 ответов:

Apple Technical Note 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) должны быть в возрастающем порядке.

номер версии и номер сборки контрольный список

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

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

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

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

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

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

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

источник

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

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

источник

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

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

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

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

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

Error messages

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

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

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

нет.

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

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

Edit on Nov 16, 2016:

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

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

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

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

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

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

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

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

Xcode Organizer Validator error: must increment the version number.

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

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

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

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