Різниця між версією Xcode (CFBundleShortVersionString) і збіркою (CFBundleVersion)


94

Підсумок цільової програми

У Xcode 4 я бачу це для мого цільового резюме:

Вхід "Версія" відповідає CFBundleShortVersionStringфайлу info.plist, а вхід "Збірка" відповідає CFBundleVersion.

Яка різниця між цими двома? Я бачу дуже багато людей в Інтернеті, які хочуть поставити однакове значення для обох, і я підозрюю, що це зворотна сумісність.

У мене є два запитання:

1) Якби я починав з нуля, яка б найкраща практика встановлення версій вашого додатка?

2) У всіх попередніх випусках мого додатка я лише використовував CFBundleVersion. Щоб не зіпсувати процес оновлення, чи слід продовжувати збільшувати так CFBundleVersionсамо, як я був, чи можливо перейти на "правильний шлях", якщо вважати, що такий існує?


3
Це копія stackoverflow.com/questions/6851660/version-vs-build-in-xcode-4, але, можливо, цю версію викладено краще (і має скріншот).
Даніель Дікісон,

Чи потрібно було щось робити, щоб показати поле «Збірка» у своєму Зведенні? Я бачу лише версію, але поля збірки немає.
Kenny Wyland

Відповіді:


68

У документі Apple "Посилання на ключі до списку властивостей інформації" сказано, що CFBundleShortVersionStringце версія випуску, тоді як CFBundleVersion- будь-яка збірка, випущена чи ні. Крім того, CFBundleShortVersionStringможе бути локалізовано, хоча я не знаю, чому ви цього хочете, оскільки вони кажуть, що це має бути "рядок, що складається з трьох цілих чисел, розділених періодами". Для побудови випуску було б розумно зробити ці два числа однаковими. Для збірки розробок ви можете додати щось інше на CFBundleVersion, можливо, іншу крапку і ціле число.


Але якщо в даний час я використовую 1.3.1 як свій, CFBundleVersionа нічого як свій CFBundleShortVersionString, і я хочу перейти на використання CFBundleVersionдля представлення внутрішніх збірок, тоді мені потрібно принаймні почати з цілого числа вище 1.3.1, так? Або це перемикання просто вимагає неприємностей?
Філіп Уолтон,

Версія ( CFBundleShortVersionString) - це єдине, що буде важливо для надсилання в Apple. Build ( CFBundleVersion) призначений для використання, як вам подобається, у розробці, або для показу у вашому додатку. Використовуйте восьмеричну (базу-8) та повторіть у зворотному порядку на 12, якщо хочете.
nekno

16
nekno: Насправді CFBundleVersion - це те, що важливо для Apple. Перевірте це повідомлення про помилку, яке Apple видає під час надсилання програми: "Двійковий файл, який ви завантажили, був недійсним. Ключ CFBundleVersion у файлі Info.plist повинен містити вищу версію, ніж версія раніше завантаженої версії."
malhal

10
Деякі країни використовують інші цифри, які сучасні арабські використовують у західному світі, наприклад східноарабські (٠, ١, ٢, ٣, ٤, ٥, ٦, ٧, ٨, ٩) або іврит (א, ב, ג, ד, ה, ו, ז, ח, ט) - і ці два також записуються справа наліво. Існує набагато більше інших числових систем (див. En.wikipedia.org/wiki/Category:Numerals ) Тож, я здогадуюсь, це те, що Apple розуміє під «локалізованим» номером версії.
Руслан Уланов

До речі, три цифри з розділовими знаками не потрібні. Натомість я використовую значення дати та часу, наприклад, 201606070620для обох значень у транспортній програмі iOS 7-8-9.
Василь Бурк

3

На запитання JWWalker про те, чому ви хочете локалізувати CFBundleShortVersionString, це буде десятковий роздільник. Наприклад, у локалях, де десятковий роздільник насправді є комою, версія "1.5" буде "1,5".


30
IMO, вам не потрібно локалізувати номери версій. Я живу в регіоні, де десятковим роздільником є ​​кома (Німеччина), і я звик до номерів версій, розділених крапкою. Насправді, я не пам’ятаю, що коли-небудь бачив номер версії з комою.
Крістіан Шпехт

2
Я також живу в регіоні, де кома використовується як десятковий роздільник, хоча 1,3,1 - це дивне значення, 1.3.1 - набагато краще.
Люсьєн

1
Я думаю, це означає, що ви можете мати різні версії програми для різних регіонів. 1.2.1> en.lproj 1.2.2> fr.lproj Незважаючи на те, що весь plist копіюється при локалізації файлу, тому обидва номери версій скопійовані, щоб обидва "можна було локалізувати"
brian.clear

1

Швидке виправлення:

Просто додайте CFBundleShortVersionStringфайл у файл plist і відредагуйте свою версію.

  1. Розкрийте своє InfoPlist.strings
  2. Виділіть його та вставте наведений нижче код у (припускаючи, що він у режимі вихідного коду)

{"CFBundleShortVersionString" = "1.1";}

  1. Змініть 1.1 на будь-яку нову збірку.
  2. Створюйте та подавайте без помилок!

введіть тут опис зображення


1

Див. Документацію Apple щодо завантаження двійкових файлів.

Нумерація версій та збірок: iTunes Connect витягує номер попередньої версії та номер збірки з двійкового файлу. Номер попередньої версії - це номер версії Xcode або ключ "Рядок версії пакета, короткий" у списку Info.pl. Номер збірки - це номер збірки Xcode або клавіша "Версія пакета" у списку Info.pl. Номер версії попереднього випуску та номер збірки відображатимуться на вкладці Попередній випуск, як описано в Перегляді збірок.

Завантаження двійкового файлу для програми

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.