Какая разница между "номером версии" в itunes connect, "bundle version", "bundle version string" в xcode?

apple doc мог быть более понятным, как отправить обновленную версию.

Как указано в названии, Какая разница между

  • номер версии в itunes connect (который вы должны указать при отправке обновления)
  • версия пакета в xcode
  • строка версии, короткая

Связаны ли они каким-либо образом?

Ответ 1

Да, они связаны. Все они относятся к версии вашего приложения.

  • iTunes Connect
    Это номер версии, показанный в App Store; Это должен быть чистый номер версии, например 1.2.3

  • Версия Bundle (CFBundleVersion)
    Это не должно быть чистым номером версии. Это может быть что-то вроде 12345 или 1.2.3 (Build 12345AB). Например, это показано в окне "О программе" для приложений Mac OS X и часто больше "Строит номер", чем "Номер версии".

  • Строка версии пакета (CFBundleShortVersionString) Это значение используется как "реальный" номер версии. Эта должна быть той же строкой, что и для версии в iTunes Connect.

Update:
Как указано @snlehton, CFBundleVersion должен быть чистым номером версии, например 1.2.3, когда вы хотите загрузить приложение в (iOS) App Store.

Ответ 2

Да, они связаны друг с другом, но их определение зависит от того, как они используются.

  • Версия iTunes Connect

    Всегда должен быть номер версии, например. 1.0

Режим использования 1 - устанавливается только CFBundleVersion

  • Версия пакета (CFBundleVersion)

    Должен быть номер версии, например. 1,0. Должен соответствовать версии iTunes Connect.

Режим использования 2 - и CFBundleVersion, и CFBundleShortVersionString   установлены

  • Версия пакета (CFBundleVersion)

    Должен быть номер сборки, например. одно целое число, например 435163.

  • Строка короткой версии Bundle (CFBundleShortVersionString)

    Должен быть номер версии, например. 1,0. Должен соответствовать версии iTunes Connect.

Режим использования 2 - лучший способ. Ниже приведены номера примеров для пути обновления приложения:

CFBundleShortVersionString CFBundleVersion 
1.0                        1
1.0.1                      2
1.0.2                      3
1.2                        5  (build 4 was a beta and never released publicly)
1.2.1                      6

Дополнительная заметка о номерах версий. Если вы отправляете небольшое обновление (например, исправление ошибок) в свое приложение, вы никогда не должны пропускать периоды в номере версии, например, всегда используйте 1.0.1 и NEVER 1.01, иначе вы рискуете не быть возможность использования определенных номеров версий в будущем, поскольку их невозможно будет увеличить.

Ответ 3

Будьте осторожны с CFBundleVersion. Это не только номер сборки производства. Это значение проверяется Apple во время процесса загрузки двоичных файлов, и оно может выйти из строя.

Обязательно установите CFBundleVersion со значением CFBundleShortVersionString при создании выпуска для отправки.

Смотрите этот пост об этом

Ответ 4

Да, все они связаны.

Номер версии в itunesconnect - это номер версии, который вам нужно предоставить. Например, 2.1.1 или 3.1.2 и т.д. Это также должно быть равно CFBundleShortVersionString.

Версия Bundle в Xcode (CFBundleVersion) представляет только номер сборки, который идентифицирует итерацию (выпущенную или невыпущенную) приложения.

Строка версий пакета, короткая (CFBundleShortVersionString) - это число, состоящее из трех целых чисел, разделенных точками. Первый представляет собой любые основные обновления приложения, такие как обновления, которые реализуют новые функции или основные изменения. Второе целое обозначает версии, которые реализуют менее заметные функции. Третье целое число представляет версии обслуживания.

Ответ 5

Принятый ответ - это путь - просто добавив это в качестве примера.

Для нашей последней версии требуется строка "Bundle Version String, short", и я пошел дальше и сопоставил ее с номером версии Bundle (1.2.8 для нашего приложения).

Затем я включил Testflight и сделал версию, ожидающую рассмотрения Apple (1.2.8), доступной нашим внутренним тестерам. Тем не менее, тестер обнаружил проблему, требующую исправления, и мы удалили двоичный код на месте. При загрузке новой сборки мы получили сообщение о том, что версия сборки уже загружена.

После прочтения нескольких SO-ссылок и документов Apple, я понял, что нужно сделать версию пакета: 1.2.8.001, а maintaing bundle-version-short - так, как это было. Если требуется новая сборка, мы увеличиваем пакетную версию до 1.2.8.002.

Примечание: загрузка была принята, и сборка отображается в виде "1.2.8.001" в предварительном выпуске. Номер версии остается 1.2.8.

Ответ 6

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

Из яблочных документов

CFBundleVersion (версия Bundle)

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

CFBundleShortVersionString (строка версии пакета, короткая)

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

Значение для этого ключа отличается от значения для CFBundleVersion, которое идентифицирует итерацию (выпущенную или невыпущенную) приложения. Этот ключ можно локализовать, включив его в ваши файлы InfoPlist.strings.