Apple сортувала / переставляла поля.
Вперед, якщо ви подивитесь на вкладку "Інформація" для вашої цілі програми, ви повинні використовувати "Ваша версія (наприклад, 3.4.0)" та "Версія пакета" для своєї збірки (наприклад, 500 або 1A500) ). Якщо ви не бачите їх обох, можете додати їх. Вони будуть відображати відповідні текстові поля Версія та Створювати на вкладці Зведення; вони однакові значення.
Переглядаючи вкладку Інформація, якщо ви клацніть правою кнопкою миші та виберіть Показати неочищені ключі / цінності , ви побачите фактичні назви CFBundleShortVersionString
(Версія) та CFBundleVersion
(Збірка).
Версія зазвичай використовується тим, як, здається, ви використовуєте її з Xcode 3. Я не впевнений, на якому рівні ви запитуєте про різницю Version / Build, тому я відповім на це по-філософськи.
Існують всілякі схеми, але популярною є:
{MajorVersion}. {MinorVersion}. {Редакція}
- Основна версія - Основні зміни, оновлення та зміни функціональності
- Незначна версія - Незначні вдосконалення, доповнення до функціональності
- Версія - номер виправлення для виправлень помилок
Тоді збірка використовується окремо, щоб вказати загальну кількість збірок для випуску або за весь термін експлуатації продукту.
Багато розробників запускають номер збірки на 0, і кожен раз, коли вони будують, вони збільшують число на одиницю, збільшуючись назавжди. У своїх проектах у мене є сценарій, який автоматично збільшує кількість збірки кожен раз, коли я будую. Дивіться інструкції до цього нижче.
- Випуск 1.0.0 може бути складений 542. Щоб вийти до версії 1.0.0, знадобилося 542 збірки.
- Випуск 1.0.1 може бути побудований 578.
- Випуск 1.1.0 може бути складений 694.
- Випуск 2.0.0 може бути складений 949.
Інші розробники, включаючи Apple, мають номер збірки, що складається з основної версії + другорядна версія + кількість збірок для випуску. Це фактичні номери версій програмного забезпечення на відміну від значень, що використовуються для маркетингу.
Якщо ви перейдете до меню Xcode > About Xcode , ви побачите номери версій та збірок. Якщо ви натиснете кнопку " Більше інформації ...", ви побачите купу різних версій. Оскільки Детальніше ... кнопка була видалена в Xcode 5, ця інформація також доступна з програмного забезпечення> Developer розділу Інформації про системі додатки, доступна при відкритті компанії Apple меню> About This Mac > System Report ... .
Наприклад, Xcode 4.2 (4C139). Маркетингова версія 4.2 - це основна версія 4, збір незначної версії C та номер збірки 139. Наступним випуском (імовірно, 4.3) буде, ймовірно, випуск Build 4D, а номер збірки починатиметься з 0 і збільшується звідти.
Номери версії / побудови iPhone Simulator - це однаковий спосіб, як і iPhone, Macs тощо.
- 3.2: (7W367a)
- 4,0: (8A400)
- 4.1: (8B117)
- 4.2: (8C134)
- 4,3: (8H7)
Оновлення : За запитом, ось кроки по створенню сценарію, який запускається щоразу, коли ви створюєте додаток у Xcode, щоб прочитати номер збірки, збільшити його та записати його назад у {App}-Info.plist
файл програми. Існують необов'язкові додаткові кроки, якщо ви хочете записати номери версій / збірок у ваші Settings.bundle/Root*.plist
файли.
Це поширюється на статтю про практику .
У Xcode 4.2 - 5.0:
- Завантажте свій проект Xcode.
- На панелі ліворуч натисніть на проект в самому верху ієрархії. Це завантажить редактор налаштувань проекту.
- У лівій частині панелі центрального вікна натисніть на додаток під заголовком ЦІЛИ . Вам потрібно буде налаштувати цю настройку для кожної цілі проекту.
- Перейдіть на вкладку Фази збірки .
- У Xcode 4 в нижньому правому куті натисніть кнопку Додати фазу збірки та виберіть Додати запустити сценарій .
- У Xcode 5 виберіть меню Редактор > Додати фазу збірки > Додати етап запуску сценарію збірки .
- Перетягніть нову фазу запустити сценарій, щоб перемістити її безпосередньо перед фазою « Копіювати ресурси ресурсів» (коли файл програми-info.plist буде в комплекті з вашим додатком).
- У новому Run Script фази, набір Shell :
/bin/bash
.
Скопіюйте та вставте в область сценарію для цілих чисел збірки:
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
Як зазначав @Bdebeez, також доступний інструмент Apple Generic Versioning Tool ( agvtool
). Якщо ви віддаєте перевагу використовувати його замість цього, слід спочатку змінити кілька речей:
- Перейдіть на вкладку Налаштування збірки .
- У розділі Версія встановіть Поточну версію проекту на початковий номер збірки, який ви хочете використовувати, наприклад, 1 .
- Поверніться на вкладку « Фази збірки », перетягніть фазу запуску сценарію після фази « Копіювати ресурси ресурсу», щоб уникнути перегонового стану при спробі складання та оновлення вихідного файлу, що включає номер вашого збірки.
Зауважте, що за допомогою agvtool
методу ви все ще можете періодично отримувати збій / скасування збірок без помилок. З цієї причини я не рекомендую використовувати agvtool
цей сценарій.
Тим не менш, на етапі запуску сценарію ви можете використовувати такий сценарій:
"${DEVELOPER_BIN_DIR}/agvtool" next-version -all
next-version
Збільшення аргументу номер збірки ( bump
також псевдонім для одного і того ж), і -all
поновлення Info.plist
з новим номером збірки.
І якщо у вас є комплект налаштувань, де ви показуєте версію та збірку, ви можете додати наступне до кінця сценарію, щоб оновити версію та збірку. Примітка: Змініть PreferenceSpecifiers
значення, щоб відповідати вашим налаштуванням. PreferenceSpecifiers:2
означає, що подивіться на елемент в індексі 2 під PreferenceSpecifiers
масивом у вашому файлі плістів, тож для індексу, заснованого на 0, це третя настройка параметрів у масиві.
productVersion=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "$INFOPLIST_FILE")
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $buildNumber" Settings.bundle/Root.plist
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" Settings.bundle/Root.plist
Якщо ви використовуєте agvtool
замість Info.plist
прямого читання , ви можете замість цього додати до свого сценарію:
buildNumber=$("${DEVELOPER_BIN_DIR}/agvtool" what-version -terse)
productVersion=$("${DEVELOPER_BIN_DIR}/agvtool" what-marketing-version -terse1)
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $buildNumber" Settings.bundle/Root.plist
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" Settings.bundle/Root.plist
А якщо у вас є універсальний додаток для iPad та iPhone, ви також можете встановити настройки для файлу iPhone:
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $buildNumber" Settings.bundle/Root~iphone.plist
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" Settings.bundle/Root~iphone.plist