2012-02-13 2 views
6

Я использую утилиту xcodebuild, поставляемую с Xcode3, чтобы автоматизировать мои сборки под Hudson. Команда выглядит он следующим образом:Параметр CODE_SIGN_IDENTITY для xcodebuild (Xcode4)

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.

Любая идея, как решить эту проблему?

ответ

1

Насколько я знаю, в 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

AFAIK для подписи приложения Xcode/xcodebuild использует/usr/bin/codesign приложение – Dmytro

+0

В любом случае вы решили проблему? Я создаю свои приложения с помощью этой команды. –

+0

@ МишаКарпенко, ссылка github, которую вы поделили, истек. вы можете поделиться мной сценарий еще раз? Спасибо – gstream79

1

Просто используйте 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" 
+0

Не работает для меня. Он просто принимает все, что является профилем по умолчанию для целевой/схемы. – Dmytro

+0

Попробуйте добавить PROVISIONING_PROFILE = "$ provision". Он отлично подходит для меня, когда указаны оба параметра (CODE_SIGN_IDENTITY & PROVISIONING_PROFILE). –

+1

это моя полная команда 'xcodebuild -target Target -sdk iphoneos -configuration« Ad Hoc »« CODE_SIGN_IDENTITY [sdk = iphoneos *] == iPhone Distribution: XXX "" PROVISIONING_PROFILE =/Пользователи/$ USER/Library/MobileDevice/Provisioning Profiles/XXX.mobileprovision "Когда xcodebuild пытается подписать приложение, он получает другой профиль. Тот, который по умолчанию для этой схемы '/usr/bin/codesign - -force --sign "Распространение iPhone: XXX1" "--resource-rules = ResourceRules.plist "--entitlements" App.xcent "" App.app "' And XXX! = XXX1, к сожалению – Dmytro

3

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

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

Так что я добавил строку:

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

между xcodebuild и xcrun командами, чтобы поменять код подписания тождества (см -f флага).

6

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

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

Я также нашел этот ресурс для объяснения available settings

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" 
+2

Аргумент 'PROVISIONING_PROFILE' должен быть UUID, например' FAEB2AC2-33DB-4192-9711-06BD5ACD5ADD'. Вы могли бы получить этот UUID из [iPhoneConfigUtility] (http://support.apple.com/downloads/#iphone%20configuration%20utility) или просто открыть файл .mobileprovision с помощью vim – Xiao

+3

или использовать '/ usr/libexec/PlistBuddy -c" Печать UUID "/dev/stdin <<< $ (security cms -D -i pathtofile.provision) ' –

0

Я нашел большое обходное решение для строительства с дженкинсами.

Во-первых, перед установкой на работу, скачать Дженкинс плагин называется:

Параметризованная Trigger Plugin

https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Trigger+Plugin

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

'Эта сборка спараметрирован флажок

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

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


Имя: CODE_SIGN_IDENTITY

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

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


Затем в вашем плагине Xcode найдите «Cust» om xcodebuild arguments.

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

CODE_SIGN_IDENTITY = $ {} CODE_SIGN_IDENTITY

Завершение настройки вашей работы, и вы должны быть все готово!

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

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