Подтвердить что ты не робот

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

Три поля версии/сборки для приложения iOS:

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

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

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

Мой вопрос:

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

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

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


Примечание к Android/Google Play:

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

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

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

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


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

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

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

4b9b3361

Ответ 1

Техническая нота 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)

Ответ 2

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

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

Источник

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

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

Источник

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

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

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

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

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

Error messages

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

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

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

Нет.

Ответ 3

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

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

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

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

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

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

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

Ответ 4

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

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

Ответ 5

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

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

Xcode Organizer Validator error: must increment the version number.

Этот вопрос содержит приведенный выше снимок экрана Xcode Organizer Validator, который отказывается проверять приложение, если 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'].

Ответ 6

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

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

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

Подробнее о CFBundleShortVersionString и CFBundleVersion см. ниже: fooobar.com/questions/67554/...

Ответ 7

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

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