2014-04-10 3 views
11

Я создаю приложение iPad с файлом Settings.bundle. Я пишу скрипты сборки, чтобы отобразить номер версии приложения и номер интеграции ботов xcode (а не номер сборки пакета). Я искал в Интернете и не нашел решения. Вот что я получил еще:Как добавить Xcode Bot Integration Number в сценарий сборки

-- Add the app version number 
cd $PROJECT_DIR 
cd "$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.app" 

RELEASE_VERSION=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" Info.plist) 
/usr/libexec/PlistBuddy -c "Set :PreferenceSpecifiers:1:DefaultValue $RELEASE_VERSION" Settings.bundle/Root.plist 

-- Add the build version number 
BUILD_NUMBER=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" Info.plist) 
/usr/libexec/PlistBuddy -c "Set :PreferenceSpecifiers:2:DefaultValue $BUILD_NUMBER" Settings.bundle/Root.plist 

В числе сборки версии, я хотел бы заменить CFBundleVersion с номером Xcode бот интеграции.

ответ

15

Я реализовал это с помощью Shell Script сборки Phase в моей Xcode проекта. В моем случае я использовал номер интеграции, чтобы установить внутреннюю версию моего встроенного продукта. Мой сценарий выглядит следующим образом:

if [ "the$XCS_INTEGRATION_NUMBER" == "the" ]; then 
    echo "Not an integration build…" 
    xcrun agvtool new-version "10.13" 
else 
    echo "Setting integration build number: $XCS_INTEGRATION_NUMBER" 
    xcrun agvtool new-version "$XCS_INTEGRATION_NUMBER" 
fi 

Обратите внимание, что XCS_INTEGRATION_NUMBER существует по умолчанию в сервере среды сборки Xcode. Если вы хотите имитировать сборку интеграции (для целей этого скрипта), вы можете просто добавить ее в свои настройки сборки в качестве настраиваемой переменной.

1

Я недавно наткнулся на эту же проблему. Там это очень прагматичный, но некрасиво способ получения информации о последнем номере интеграции Xcode Боты работает:

sudo grep -r "integration =" /Library/Server/Xcode/Logs/xcsbuildd.log | tail -1 | cut -d'=' -f 2| cut -d';' -f 1 |tr -d '\040\011\012\015' 

Я также создал StackOverflow вопрос для того, чтобы найти более комплексный и менее Hacky способ достижения этой цели : Register for messages from collabd like XCSBuildService to receive Xcode Bots integration number

Но, возможно, способ для синтаксического анализа xcsbuildd.log, как описано выше, является достаточным для ваших целей.

+0

Это не работает для меня. Я всегда получаю пустой результат – iDev

5

Я добавил (+) в Run Script мои цели сборки фазы непосредственно перед Источники Compile шаг. Этот однострочный скрипт работает для меня, чтобы установить номер интеграции в качестве номера сборки. Спасибо, Келин, я просто хотел немного упростить ситуацию.

[ -z "$XCS_INTEGRATION_NUMBER" ] && echo "Build #0" || xcrun agvtool new-version ${XCS_INTEGRATION_NUMBER} 
7

На самом деле вам не требуется agvtool, чтобы установить номер сборки в номер интеграции ботов Xcode. Просто установите номер сборки в $ {XCS_INTEGRATION_NUMBER} в настройках вашего проекта.

 Смежные вопросы

  • Нет связанных вопросов^_^