我正在使用 Xcode 3 附带xcodebuild
实用程序在 Hudson 下自动化我的构建。该命令如下所示:
xcodebuild -project Project.xcodeproj -target Target -configuration Release -sdk iphoneos CODE_SIGN_IDENTITY[sdk=iphoneos*]="iPhone Distribution:XXXXXX"
我正在尝试对 Xcode 4 使用相同的命令,但似乎xcodebuild
只是忽略CODE_SIGN_IDENTITY
参数并使用在 Xcode 中为目标选择的预配配置文件进行签名。
这对我来说非常重要,因为我必须使用 3-4 个不同的配置文件签署构建版本。它适用于 Xcode 3,但不适用于 Xcode 4。
知道如何解决这个问题吗?
较新的 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"
我遇到了以下问题:
我们的开发人员使用"iPhone 开发"签名标识,但我需要为我们的自动集成系统使用"iPhone 分发"签名标识。
所以我添加了这一行:
codesign -f --sign "iPhone Distribution: XXXXXXX" ${PATH_TO_APP}
在xcodebuild
和xcrun
命令之间交换代码签名标识(请参阅 -f
标志(。
我所知,在Xcode 4中,签名是使用xcrun
工具完成的:
/usr/bin/xcrun -sdk "iphoneos" PackageApplication -v "myapp.app" -o "myapp.ipa" --sign "iPhone Developer: XXXXX" --embed "XXXXX.mobileprovisioning"
使用起来有点不舒服,因为您必须同时指定您的身份和移动配置文件。如果使用目录中的最后一个~/Library/MobileDevice/Provisioning Profiles/
尤其不舒服,因为每次从预配门户自动更新预配配置文件时,其名称都会更改。
只需将 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"
我找到了使用 jenkins 构建的一个很好的解决方法。
首先,在设置作业之前,下载一个名为的 jenkins 插件:
参数化触发器插件
https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Trigger+Plugin
完成此操作后,创建作业,并在创建作业时选择
"此版本已参数化"复选框
创建字符串参数。 我称我的CODE_SIGN_IDENTITY。
因此,字符串参数中的名称字段应为:
姓名:CODE_SIGN_IDENTITY
默认值:iPhone开发商:XXX XXXXX
描述: 无论你想放什么
然后在您的 Xcode 插件中,找到"自定义 xcodebuild 参数"字段。
在"自定义 xcodebuild 参数"字段中,放置以下值:
CODE_SIGN_IDENTITY=${CODE_SIGN_IDENTITY}
完成你的工作设置,你应该已经准备好了!
这将绕过空白问题。该插件是救星,因为它运行良好,您可以使用其他参数自定义构建。