Параметр CODE_SIGN_IDENTITY для xcodebuild (Xcode4) - PullRequest
9 голосов
/ 13 февраля 2012

Я использую xcodebuild утилиту, поставляемую с Xcode3, для автоматизации моих сборок под Hudson.Команда выглядит следующим образом:

xcodebuild -project Project.xcodeproj -target Target -configuration Release -sdk iphoneos CODE_SIGN_IDENTITY[sdk=iphoneos*]="iPhone Distribution:XXXXXX"

Я пытаюсь использовать ту же команду для Xcode4, но кажется, что xcodebuild просто игнорирует параметр CODE_SIGN_IDENTITY и подписывает профиль обеспечения, который выбран дляцель в Xcode.

Это очень важно для меня, так как я должен подписать сборку с 3-4 различными профилями.Это работает нормально с Xcode3, но не работает с Xcode4.

Есть идеи, как решить эту проблему?

Ответы [ 5 ]

7 голосов
/ 20 февраля 2013

Более новый xcodebuild теперь позволяет указывать настройки. Взято с developer.apple.com :

xcodebuild [-project projectname] [-target targetname ...]
           [-configuration configurationname] [-sdk [sdkfullpath | sdkname]]
           [buildaction ...] [setting=value ...] [-userdefault=value ...]

Я также нашел этот ресурс для объяснения доступных настроек

CODE_SIGN_IDENTITY (Code Signing Identity)
    Description: Identifier. Specifies the name of a code signing identity.
    Example value: iPhone Developer

Однако PROVISIONING_PROFILE отсутствует в индексе доступных команд.

Команда, которую я наконец-то использовал, указала настройки «CODE_SIGN_IDENTITY» и «PROVISIONING_PROFILE».

xcodebuild -sdk <iphoneos> -target <target_name> -configuration <Debug> CODE_SIGN_IDENTITY="iPhone Developer: Mister Smith" PROVISIONING_PROFILE="XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX"
3 голосов
/ 01 октября 2012

У меня была следующая проблема:

Наши разработчики использовали идентификацию подписи «iPhone Development», но мне нужно было использовать идентификацию подписи «iPhone Distribution» для нашей автоматизированной системы интеграции.

Итак, я добавил строку:

codesign -f --sign "iPhone Distribution: XXXXXXX" ${PATH_TO_APP}

между командами xcodebuild и xcrun для замены идентификаторов подписи кода (см. Флаг -f).

1 голос
/ 14 февраля 2012

Просто используйте CODE_SIGN_IDENTITY = "iPhone Distribution: XXXXXX" с XCode 4 (без [sdk = iphoneos *])

xcodebuild -project Project.xcodeproj -target Target -configuration Release -sdk iphoneos CODE_SIGN_IDENTITY="iPhone Distribution:XXXXXX"
1 голос
/ 14 февраля 2012

Насколько я знаю, в Xcode 4 подпись выполняется с помощью инструмента xcrun:

/usr/bin/xcrun -sdk "iphoneos" PackageApplication -v "myapp.app" -o "myapp.ipa" --sign "iPhone Developer: XXXXX" --embed "XXXXX.mobileprovisioning"

Использовать это немного неудобно, поскольку вы должны указать как свою личность, так и файл mobileprovisioning.Особенно неудобно, если вы используете последний из каталога ~/Library/MobileDevice/Provisioning Profiles/, потому что его имя меняется каждый раз, когда профили инициализации обновляются автоматически с Provisioning Portal.

0 голосов
/ 06 мая 2013

Я нашел отличный обходной путь для строительства с Дженкинсом.

Во-первых, перед настройкой задания загрузите плагин jenkins под названием:

Параметризованный плагин триггера

https://wiki.jenkins -ci.org / display / JENKINS /Параметризованный + Триггер + Плагин

После того, как вы это сделаете, создайте свою работу и при создании работы установите флажок

«Эта сборка параметризована»

Создатьстроковый параметр.Я называю мой CODE_SIGN_IDENTITY.

Поэтому поле имени в строковом параметре должно быть:


Имя: CODE_SIGN_IDENTITY

Значение по умолчанию: iPhone Разработчик: XXX XXXXX

Описание: все, что вы хотите поместить туда


Затем в вашем плагине XCode найдите поле 'Custom xcodebuild arguments'.

В поле Настраиваемые аргументы xcodebuild введите следующее значение:

CODE_SIGN_IDENTITY = $ {CODE_SIGN_IDENTITY}

Закончите настройку своей работы, и все будет готово!

Это позволит обойти проблему пробелов.Плагин спасает жизнь, так как прекрасно работает, и вы можете настроить свою сборку с другими параметрами.

...