2010-12-29 2 views
6

У меня есть сценарий, который выполняет некоторую предварительную обработку перед фактической сборкой в ​​Xcode. Есть ли способ сказать, когда Xcode выполняет «сборку и архивирование»? Я хочу сделать «svn commit» как часть шага архива. Я сбросил переменные среды, которые есть во время сборки, но они выглядят одинаково для архива как нормальная сборка.Как узнать, выполняет ли Xcode «сборку и архивирование» в сценарии?

Что-нибудь еще, что можно проверить, если он строит архив?

Любой другой способ автоматически совершить фиксацию до того, как он построит архив? Я не хочу делать фиксацию для каждой сборки, так как это делает дерево svn более сложным для навигации по IMO.

Я использую Xcode 3.2.5.

Спасибо! Норма

ответ

0

Я рекомендую вам получать ежедневную систему сборки с независимым скриптом из графического интерфейса Xcode. Это сделает только svn commit триггер Сборка и архивирование и распространение. Вы можете запустить строить и архив с xcrun команды, как описано здесь:

Xcode "Build and Archive" from command line

+0

Я думаю, что это может быть маршрут, который я должен принять. Другой вариант - использовать другую конфигурацию, когда я хочу сделать архив. Все еще полагается на то, что я выбираю правильную конфигурацию, но тогда Xcode все равно сможет выполнить эту работу. – TejasSoft

2

Я хотел, чтобы избежать сборки командной строки и архив, так как я прочитал, что он не строит .ipa файл с профилем инициализации встроенного в этом. Использование этого упрощает отправку его в тестеры.

Что я сделал следующее:

У меня есть 4 конфигурации. Debug, Release, Ad Hoc Release и Release Store.

Я использую Debug и Release для сборки без выполнения фиксации. Я использую Ad Hoc, когда хочу отправить бета-тестеру, и App Store для окончательного тестирования и представления в App Store.

Вот код, который я добавил в свой сценарий предварительной сборки.

# Get the version number from the .plist file 
VER_NUM=`cat "${SRCROOT}/${INFOPLIST_FILE}" | grep -A 1 CFBundleVersion | grep string | sed 's/]*>//g' | sed 's/^[ ]*//'` 

# Check build type to see if svn commit should be done 
if [ "${BUILD_STYLE}" == "App Store Distribution" ] 
then 
SVN_COMMIT=yes 
fi 

if [ "${BUILD_STYLE}" == "Ad Hoc Distribution" ] 
then 
SVN_COMMIT=yes 
fi 

if [ "${SVN_COMMIT}" == "yes" ] 
then 
echo "Commiting the project to SVN" 
BUILD_TIME=`date` 
svn commit -m "\"Version ${VER_NUM} for ${BUILD_STYLE} ${BUILD_TIME}\"" 
fi 

Это был мой быстрый и грязный ответ на проблему. Должно быть более элегантное решение, но пока это будет работать. Если Apple просто добавит переменную окружения, чтобы показать, что это сборка архива, которая решила бы ее.