CODE_SIGN_IDENTITY parameter for xcodebuild (Xcode 4)



我正在使用 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}

xcodebuildxcrun命令之间交换代码签名标识(请参阅 -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}

完成你的工作设置,你应该已经准备好了!

这将绕过空白问题。该插件是救星,因为它运行良好,您可以使用其他参数自定义构建。

最新更新