xcodebuild(Xcode 4)的CODE_SIGN_IDENTITY参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了xcodebuild(Xcode 4)的CODE_SIGN_IDENTITY参数相关的知识,希望对你有一定的参考价值。

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

我也找到了解释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"
另一答案

我有以下问题:

我们的开发人员使用了“ 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/目录中的最后一个,尤其不舒服,因为每次从Provisioning Portal自动更新配置文件时,其名称都会更改。

另一答案

只需使用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}

完成您的工作,应该一切准备就绪!

这将绕过空白问题。该插件可以节省生命,因为它运行出色,您可以使用其他参数自定义构建。

以上是关于xcodebuild(Xcode 4)的CODE_SIGN_IDENTITY参数的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 4 UI 可以很好地构建应用程序,但命令行 xcodebuild 在代码签名时失败

xcodebuild构建时报错unknown error -1=ffffffffffffffff Command /bin/sh failed with exit code 1

xcodebuild 比 Xcode 慢得多?

使用命令行的 Xcode 4 单元测试

为啥在使用 XCode 和 xcodebuild 之间存在差异?

Xcode 7.2 使用 xcodebuild 构建项目失败