В документе Apple можно было бы более четко указать, как отправить версию обновления.
Как указано в названии, в чем разница между
- номер версии в itunes connect (который необходимо указать при отправке обновления)
- версия пакета в xcode
- строка версий пакета, короткая
Связаны ли они каким-либо образом?
Ответы:
Да, они связаны. Все они относятся к версии вашего приложения.
iTunes Connect
Это номер версии, отображаемый в App Store; Это должен быть чистый номер версии, например
1.2.3
Версия пакета (CFBundleVersion)
Это не обязательно должен быть чистый номер версии. Это может быть что-то вроде
12345
или1.2.3 (Build 12345AB)
. Это отображается в окне «О программе», например, для приложений Mac OS X и часто является скорее «номером сборки», чем «номером версии».Строка версии пакета (CFBundleShortVersionString) Это значение используется как «реальный» номер версии. Это должна быть та же строка, что и для версии в iTunes Connect .
Обновление:
как указано в @snlehton, CFBundleVersion должен быть чистым номером версии, например,
1.2.3
когда вы хотите загрузить свое приложение в (iOS) App Store.источник
1.2.3
а затем увеличиваете версию пакета для каждой сборки.Да, они связаны, но их определение зависит от того, как они используются.
Всегда должен быть номер версии, например 1.0.
Режим использования 1 - установлен только CFBundleVersion
Должен быть номер версии, например 1.0. Должен соответствовать версии iTunes Connect.
Режим использования 2 - установлены CFBundleVersion и CFBundleShortVersionString.
Должен быть номер сборки, например, одно целое число, например 435163.
Должен быть номер версии, например 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, иначе вы рискуете не использовать определенные номера версий в будущем, потому что их невозможно будет увеличить.
источник
Да, все они связаны.
Номер версии в itunesconnect - это номер версии, которую вам необходимо указать. Например, 2.1.1 или 3.1.2 и т.д. Это также должно быть равно CFBundleShortVersionString .
Версия пакета в Xcode ( CFBundleVersion ) представляет собой просто номер сборки, который определяет итерацию (выпущенную или невыпущенную) приложения.
Строка версий пакета , короткая ( CFBundleShortVersionString ) - это число, состоящее из трех целых чисел, разделенных точками. Первый представляет собой любые основные обновления приложения, такие как обновления, реализующие новые функции или важные изменения. Второе целое число обозначает версии, реализующие менее заметные функции. Третье целое число представляет отладочные версии.
источник
Будьте осторожны с CFBundleVersion . Это не только номер производственной сборки. Это значение проверяется Apple в процессе загрузки двоичного файла, и это может привести к сбою.
Убедитесь, что вы установили CFBundleVersion со значением CFBundleShortVersionString, когда вы собираете выпуск для отправки .
См. Этот пост об этом
источник
CFBundleVersion
не обязательно совпадатьCFBundleShortVersionString
. Например, если вы посмотрите на текущий файл .ipa для Chrome (сейчас он находится в магазине приложений), у них будет «34.0.1847.18» дляCFBundleVersion
и «34.1847.18» дляCFBundleShortVersionString
.Принятый ответ - это правильный путь - просто добавив это в качестве примера.
Для нашего последнего выпуска требовалась «короткая строка версии пакета», и я пошел дальше и сопоставил ее с номером версии пакета (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.
источник
Принятый ответ по этой ссылке содержит хорошие сведения: какие версии / номера сборки приложения iOS ДОЛЖНЫ быть увеличены после выпуска App Store?
Из документов Apple
CFBundleVersion (версия пакета )
CFBundleVersion (String - iOS, OS X) указывает номер версии сборки пакета, который определяет итерацию (выпущенную или невыпущенную) пакета. Номер версии сборки должен быть строкой, состоящей из трех неотрицательных целых чисел, разделенных точками, причем первое целое число больше нуля. Строка должна содержать только числовые (0-9) и точки (.) Символы. Начальные нули отсекаются от каждого целого числа и игнорируются (то есть 1.02.3 эквивалентно 1.2.3). Этот ключ нельзя локализовать.
CFBundleShortVersionString (строка версий пакета , короткая)
CFBundleShortVersionString (String - iOS, OS X) указывает номер версии выпуска пакета, который определяет выпущенную итерацию приложения. Номер версии выпуска представляет собой строку, состоящую из трех целых чисел, разделенных точкой. Первое целое число представляет основные версии приложения, например, версии, в которых реализованы новые функции или важные изменения. Второе целое число обозначает версии, реализующие менее заметные функции. Третье целое число представляет отладочные версии.
Значение этого ключа отличается от значения CFBundleVersion, которое определяет итерацию (выпущенную или невыпущенную) приложения. Этот ключ можно локализовать, включив его в ваши файлы InfoPlist.strings.
источник