Проект Xcode "Номер сборки" - PullRequest
       2

Проект Xcode "Номер сборки"

30 голосов
/ 10 сентября 2011

Что такое номер сборки и как его использовать?Это так же, как номер версии?

Ответы [ 8 ]

20 голосов
/ 11 сентября 2011

Кроме того, если вы добавите CFBuildDate в качестве строки и CFBuildNumber в качестве строки в ваш info.plist, следующий сценарий оболочки (при добавлении к этапу сборки сценария выполнения / bin / bash автоматически обновит ваш номер и дату сборки:

    # Auto Increment Version Script
buildPlist=${INFOPLIST_FILE}
CFBuildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBuildNumber" $buildPlist)
CFBuildNumber=$(($CFBuildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBuildNumber $CFBuildNumber" $buildPlist
CFBuildDate=$(date +%Y%m%d%H%M%S)
/usr/libexec/PlistBuddy -c "Set :CFBuildDate $CFBuildDate" $buildPlist
16 голосов
/ 20 июня 2012

Я использую Xcode 4.3.3 (4E3002) и мне удалось автоматически увеличивать номер сборки (CFBundleVersion) при каждой сборке, выполнив следующие шаги:

  1. Выберите пункт меню Product / Edit Scheme ... (Command + <) </li>
  2. Расширенная фаза сборки
  3. Выбрать предварительные действия
  4. Нажмите на знак плюс, чтобы добавить «Действие запуска нового сценария»
  5. Введено "/ bin / bash" как "Shell"
  6. Выберите одну из целей в «Предоставить настройки сборки из»
  7. Введен следующий код:

    buildPlist=$SRCROOT/$INFOPLIST_FILE
    PlistBuddy="/usr/libexec/PlistBuddy"
    
    CFBundleVersion=`$PlistBuddy -c "Print CFBundleVersion" $buildPlist`
    CFBundleVersion=$(($CFBundleVersion + 1))
    $PlistBuddy -c "Set :CFBundleVersion $CFBundleVersion" $buildPlist
    

Веселись!

10 голосов
/ 02 декабря 2011

Многие люди используют номер сборки, чтобы отследить общее количество раз, когда проект «собран» (просто скомпилирован для небольших проектов, возможно, более сложный процесс для более крупных).

Номер сборки - это абсолютное значение, увеличиваемое при каждой сборке.Номер версии, с другой стороны, представляет собой произвольный «ярлык» или «тег», используемый в качестве сокращения для определенного номера сборки.

Итак, скажем, вы построили свой проект 123 раза, номер сборки равен123 ", но вы можете решить назвать это" версией 1.0 "для простоты.Если вы соберете еще 20 раз, чтобы исправить ошибку, ваш номер сборки будет 143, но ваша версия будет «1.01» или «1.1», или как вы решите их назвать.их номера сборки на контроль версий.Таким образом, команда CVS / SVN может использовать номер редакции в качестве своего номера сборки.Я также видел проекты git, которые используют SHA последнего коммита в качестве номера сборки (хотя некоторые инструменты управления предполагают, что номер сборки является инкрементным значением - и, очевидно, в случае SHA это не так).

5 голосов
/ 24 декабря 2012

Номер сборки - это внутренний номер, который указывает текущее состояние приложения. Он отличается от номера версии тем, что он, как правило, не предназначен для пользователя и не обозначает никаких различий / функций / обновлений, как это обычно бывает с номером версии.

Думайте об этом так:

  • Build (CFBundleVersion): номер сборки. Обычно вы начинаете с 1 и увеличиваете на 1 с каждой сборкой приложения. Он быстро позволяет сравнивать, какая сборка более свежая, и обозначает смысл прогресса кодовой базы. Они могут быть чрезвычайно полезны при работе с QA, и необходимо убедиться, что ошибки регистрируются в правильных сборках.
  • Маркетинговая версия (CFBundleShortVersionString) - номер пользователя, который вы используете для обозначения этой версии вашего приложения. Обычно это происходит по схеме версий Major.minor (например, MyAwesomeApp 1.2), чтобы пользователи знали, какие выпуски являются небольшими обновлениями для обслуживания, а какие важными новыми функциями.

Чтобы эффективно использовать это в своих проектах, Apple предоставляет отличный инструмент, называемый agvtool. Это позволяет легко установить как номер сборки, так и маркетинговую версию. Это особенно полезно при написании сценариев (например, простое обновление номера сборки для каждой сборки или даже запрос текущего номера сборки). Он может даже делать более экзотические вещи, такие как пометка SVN для вас, когда вы обновляете номер сборки.

Чтобы использовать это:

  • Установите свой проект в Xcode, под управлением версиями, чтобы использовать "Apple Generic".
  • в терминале
    • agvtool new-version 1 (установите номер сборки на 1)
    • agvtool new-marketing-version 1.0 (установите Маркетинговую версию на 1.0)

См. справочную страницу agvtool для тонны полезной информации

4 голосов
/ 06 июня 2012

Если вы хотите использовать поле DATE для CFBuildDate, используйте:

# get UTC date
CFBuildDate=$(date -u +"%a %b %d %T GMT %Y")

кстати отличный совет от cdasher

3 голосов
/ 10 сентября 2011

Номер сборки предназначен для незначительных обновлений (обычно они получают довольно высокое значение 1 в начале и могут заканчиваться на 1000), например: если вы изменили пару строк кода, но не изменили логику или не добавили новые функции в свое обновление.Номер версии предназначен для довольно больших обновлений, например: новые функции в вашем приложении.Затем вы можете изменить его с 1,8 на 2,0.

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

Это работает в Xcode 6, а также изменяет информационный словарь dSYM, только при архивации:

if [ "${CONFIGURATION}" = "Release" ]; then

buildPlist="${SOURCE_ROOT}/${PROJECT_NAME}/${PROJECT_NAME}-Info.plist"

PlistBuddy="/usr/libexec/PlistBuddy"

CFBundleVersion=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}")
CFBundleVersion=$(($CFBundleVersion + 1))

$PlistBuddy -c "Set :CFBundleVersion $CFBundleVersion" "$buildPlist"
$PlistBuddy -c "Set :CFBundleVersion $CFBundleVersion" "$INFOPLIST_FILE"
$PlistBuddy -c "Set :CFBundleVersion $CFBundleVersion" "${DWARF_DSYM_FOLDER_PATH}/${WRAPPER_NAME}.dSYM/Contents/Info.plist"
fi
1 голос
/ 20 января 2015

Это работает для меня в Xcode 6:

cd ${SOURCE_ROOT}
buildPlist=${SOURCE_ROOT}/${PROJECT_NAME}/${PROJECT_NAME}-Info.plist
PlistBuddy="/usr/libexec/PlistBuddy"

buildNumber=`git rev-list HEAD --count`
buildNumber=$(($buildNumber + 1))

$PlistBuddy -c "Set :CFBundleVersion $buildNumber" $buildPlist
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...