7

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

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

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

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

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

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

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

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

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

Благодарности

ответ

4

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

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

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

0

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

-1

Это может быть слишком поздно для оригинального плаката, но может помочь другим. для моего процесса сборки, я использую 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

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