Аргументы xcodebuild игнорируются при использовании архива - PullRequest
7 голосов
/ 19 декабря 2011

Меня зовут Лука, и в настоящее время я работаю над непрерывной интеграцией iOS для создания приложений в xcode для распространения (Ad Hoc и App Store) с использованием сценариев оболочки.

Пока я добился хороших результатов с файлами IPA.Моя проблема приходит для распространения в App Store.Чтобы создать .app из сценария (передавая некоторые аргументы), я делаю:

xcodebuild -scheme myScheme -configuration myConfiguration PRODUCT_NAME=myProductName TARGETED_DEVICE_FAMILY=myTargetedDeviceFamily .... etc

Поскольку в XCode 4.2 отправка приложений осуществляется с помощью окна XCode Organizer, я также должен иметь возможность архивировать свой исполняемый файл.

Поэтому я изменяю предыдущую командную строку следующим образом:

xcodebuild -scheme myScheme -configuration myConfiguration PRODUCT_NAME=myProductName TARGETED_DEVICE_FAMILY=myTargetedDeviceFamily .... etc      **archive**

К сожалению, после этого кажется, что аргумент 'archive' заставляет xcodebuild игнорировать другие (PRODUCT_NAME, TARGETED_DEVICE_FAMILY), ....) и мой вывод построен с использованием предопределенных параметров сборки XCode.

Я хочу иметь возможность передавать аргументы с помощью xcodebuild и быть эффективным, но действие 'archive', кажется, предотвращает это.

Я схожу с ума, пожалуйста, помогите:)

Спасибо

Ответы [ 3 ]

4 голосов
/ 08 февраля 2012

Действие archive для xcodebuild, похоже, содержит ошибку в Xcode 4.2. Обычно переопределения для конфигурации проекта могут быть указаны как параметры командной строки или через параметр -xcconfig.

Хотя действие build их учитывает, archive - нет. (Предположительно, это потому, что архив - это мета-действие, которое вызывает сборку внутри, но не пропускает опции для внутреннего вызова.) Существует OpenRadar ошибка , которая описывает эту проблему, так что, вероятно, это было сообщено в Apple.

Наконец, обратите внимание, что если вы собираетесь использовать действие archive из скрипта, вы не можете полагаться на код выхода из xcodebuild. Действие архива всегда дает код выхода 0 (успех, по соглашению). Чтобы обнаружить сбой сборки, вам нужно очистить вывод.

0 голосов
/ 05 декабря 2014

это может быть слишком поздно для оригинального плаката, но может помочь другим.для моего процесса сборки я использую xcodebuild, чтобы сначала выполнить очистку, а затем сборку, а затем использовать xcrun для создания архива:

 /usr/bin/xcrun -sdk iphoneos PackageApplication -v "build/<Path_to_build_dir>/<App_Name>.app" -o "<Path_to_archive_output>.ipa" --sign "<signing identity>" --embed "<path to provision profile>.mobileprovision"

с помощью этой команды я могу создать архив для магазина приложений или дажезагрузить специальную сборку в TestFlight следующим образом:

curl http://testflightapp.com/api/builds.json \
    -F file="<path to archive>" \
    -F api_token='<api token>' \
    -F team_token='<team token>' \
    -F notes='Automated build'  \
    -F notify=True \
    -F distribution_lists='me'

это работает с xcode 6.1

0 голосов
/ 21 июня 2012

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

...