Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Кроме того, если вы добавите CFBuildDate в качестве строки и CFBuildNumber в качестве строки в ваш info.plist, следующая оболочка script (при добавлении к вашей версии script build phase/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

Ответ 2

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

  • Выберите пункт меню Product/Edit Scheme... (Command + <)
  • Расширена фаза сборки
  • Выберите предварительные действия
  • Нажав на знак "плюс", добавьте "Новый запуск Script Действие"
  • Введено "/bin/ bash" в качестве "оболочки"
  • Выберите одну из целей в разделе "Предоставить настройки сборки из
  • Введите следующий код:

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

Удачи!

Ответ 3

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

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

Итак, скажите, что вы построили свой проект 123 раза, ваш номер сборки - "123", но для простоты вы можете обратиться к нему как "версия 1.0". Если вы исправите еще 20 раз, чтобы исправить ошибку, ваш номер сборки - 143, но ваша версия "1.01" или "1.1" или что вы решите назвать ее.

Я также видел проекты, которые основывают свои номера сборки на контроле источника. Поэтому команда CVS/SVN может использовать номер версии в качестве номера сборки. Я также видел проекты git, которые используют SHA последнего коммита как номер сборки (хотя некоторые инструменты управления предполагают, что номер сборки является инкрементным значением - и, очевидно, в случае SHA это не так).

Ответ 4

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

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

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

Ответ 5

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

Ответ 6

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

Подумайте об этом так:

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

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

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

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

Смотрите справочную страницу agvtool за тонну хорошей информации

Ответ 7

Это работает для меня в 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

Ответ 8

Это работает в 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