Ответ 1
Яблоко вроде перегруппировало/перепрофилировало поля.
Идти вперед, если вы посмотрите на вкладке "Информация" для своей целевой задачи, вы должны использовать "Версия версий Bundle, короткую" в качестве вашей версии (например, 3.4.0) и "Bundle version" в качестве вашей сборки (например, 500 или 1A500). Если вы не видите их обоих, вы можете их добавить. Они будут отображаться в соответствующие текстовые поля Version и Build на вкладке "Сводка"; они являются одинаковыми значениями.
При просмотре вкладки "Информация", если вы щелкните правой кнопкой мыши и выберите Показать исходные клавиши/значения, вы увидите фактические имена CFBundleShortVersionString
(Версия) и CFBundleVersion
(Build).
Версия обычно используется, как вы, кажется, используете ее с Xcode 3. Я не уверен, на каком уровне вы спрашиваете о разности версии/сборки, поэтому я отвечу на это философски.
Существуют разные схемы, но популярный:
{MajorVersion}. {MinorVersion}. {} Редакция
- Основная версия. Основные изменения, редизайн и функциональность изменения
- Незначительная версия - незначительные улучшения, дополнения к функциям
- Версия. Номер исправления для исправлений ошибок.
Затем сборка используется отдельно, чтобы указать общее количество сборок для выпуска или для всего срока службы продукта.
Многие разработчики начинают номер сборки в 0, и каждый раз, когда они строятся, они увеличивают число на единицу, увеличиваясь навсегда. В моих проектах у меня есть script, который автоматически увеличивает номер сборки каждый раз, когда я строю. См. Инструкции ниже.
- Версия 1.0.0 может быть построена 542. Для доступа к 1.0.0.
- Версия 1.0.1 может быть построена 578.
- Версия 1.1.0 может быть построена 694.
- Версия 2.0.0 может быть создана 949.
Другие разработчики, включая Apple, имеют номер сборки, состоящий из основной версии + младшая версия + количество сборок для выпуска. Это фактические номера версий программного обеспечения, в отличие от значений, используемых для маркетинга.
Если вы перейдете в меню Xcode > О Xcode, вы увидите номера версии и сборки. Если вы нажмете кнопку Подробнее..., вы увидите множество разных версий. Так как кнопка Подробнее... была удалена в Xcode 5, эта информация также доступна в разделе Программное обеспечение > Разработчик Сведения о системе приложение, доступное, открыв Apple меню > Об этом Mac > Системный отчет....
Например, Xcode 4.2 (4C139). Маркетинговая версия 4.2 - это сборка основной версии 4, построение малой версии C и сборка номер 139. Следующий выпуск (предположительно, 4.3), скорее всего, будет выпуском сборки 4D, а номер сборки начнется с 0 и приращения оттуда.
Версия iPhone Simulator Version/Build одинаковы, как и iPhone, Mac и т.д.
- 3.2: (7W367a)
- 4.0: (8A400)
- 4.1: (8B117)
- 4.2: (8C134)
- 4.3: (8H7)
Обновить. По запросу выполните следующие действия: script, который запускается каждый раз, когда вы создаете приложение в Xcode, чтобы прочитать номер сборки, увеличить его и записать обратно в app {App}-Info.plist
. Существуют дополнительные, дополнительные шаги, если вы хотите записать свои номера версий/сборки в ваши файлы Settings.bundle/Root*.plist
.
Это расширено от практической статьи здесь.
В Xcode 4.2 - 5.0:
- Загрузите проект Xcode.
- В левой панели нажмите на свой проект в самой верхней части иерархии. Это загрузит редактор параметров проекта.
- В левой части окна окна центра щелкните ваше приложение под заголовком TARGETS. Вам нужно будет настроить эту настройку для каждого целевого проекта.
- Выберите вкладку Сборка фаз.
-
- В Xcode 4 в правом нижнем углу нажмите кнопку Добавить этап сборки и выберите Добавить запуск Script.
- В Xcode 5 выберите Редактор меню > Добавить этап сборки > Добавить запуск script Фаза сборки.
- Перетащите новую фазу Запустить Script, чтобы переместить ее непосредственно перед фазой Скопировать исходные материалы (когда файл app-info.plist будет в комплекте с вашим приложением).
- В новой фазе Выполнить Script установите Shell:
/bin/bash
. -
Скопируйте и вставьте следующее в область script для целых чисел сборки:
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.. li >
- Вернитесь на вкладку Сборка факс, перетащите и отпустите Запуск Script, после фазы Копировать ресурсы ресурса, чтобы избежать условие гонки при попытке создать и обновить исходный файл, который содержит ваш номер сборки.
Обратите внимание, что с помощью метода
agvtool
вы можете периодически получать сбои/отмененные сборки без ошибок. По этой причине я не рекомендую использоватьagvtool
с помощью этого script.Тем не менее, на этапе Выполнить Script вы можете использовать следующие script:
"${DEVELOPER_BIN_DIR}/agvtool" next-version -all
Аргумент
next-version
увеличивает номер сборки (bump
также является псевдонимом для одной и той же вещи) и-all
обновляетInfo.plist
с новым номером сборки. -
И если у вас есть набор настроек, в котором вы показываете версию и сборку, вы можете добавить следующее в конец script для обновления версии и сборки. Примечание. Измените значения
PreferenceSpecifiers
в соответствии с вашими настройками.PreferenceSpecifiers:2
означает просмотр элемента по индексу 2 в массивеPreferenceSpecifiers
в вашем файле plist, поэтому для индекса с индексом 0 это параметр 3-й настройки в массиве.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
, вы можете добавить вместо этого script следующее: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