В чем разница между «номером версии» в iTunes Connect, «версией пакета» и «строкой версии пакета» в Xcode? - PullRequest
88 голосов
/ 02 сентября 2011

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

Как и просили в заголовке, В чем разница между

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

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

Ответы [ 6 ]

131 голосов
/ 02 сентября 2011

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

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

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

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

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

25 голосов
/ 23 февраля 2015

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

  • Версия iTunes Connect

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

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

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

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

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

  • Bundle Version (CFBundleVersion)

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

  • Bundle Short Version String (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 и НИКОГДА 1.01, иначе вы рискуете не использовать некоторые номера версий в будущем, потому что их будет невозможно увеличить.

12 голосов
/ 27 апреля 2012

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

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

См. этот пост об этом

12 голосов
/ 02 сентября 2011

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

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

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

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

8 голосов
/ 25 октября 2014

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

Для нашего последнего выпуска требовалась «Короткая строка версии пакета», и я пошел дальше и сопоставил ее с номером версии пакета (1.2.8 для нашего приложения).

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

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

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

2 голосов
/ 14 сентября 2015

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

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...