在没有协同设计的情况下使用 xcodebuild 构建 iOS 应用程序

我们正在为另一家公司开发一个应用程序。他们持有签名密钥,不愿与我们分享。

应该可以将 build 和 sign 分开,但是如何在 xcodebuild 的命令行中指定它呢?

59697 次浏览

不幸的是,如果没有代码签名,很难在发布模式下构建应用程序。您将从构建系统中得到如下错误:

CodeSign error: code signing is required for product type 'Application' in SDK
'iOS 5.1'

在这种情况下,您应该将目标配置为在发布模式下使用开发人员/团队通配符(*)签名身份。应用程序将签署时,你建立它,你可以船舶它到您的客户,以便他们可以辞职。这是我们大多数外包开发人员所做的。

然后,您可以删除代码签名信息,方法是删除应用程序中的各种文件,如 _CodeSignature,并使用 codesign工具从应用程序二进制文件中删除信息。但我不确定这有多容易。不过这不是必须的。供应配置文件或签名信息中没有任何敏感信息。

为了跳过代码签名,您可以像下面这样从控制台执行手动构建:

xcodebuild clean build CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO

此外,还可以使用 -configuration-target-sdk参数来定义生成设置。

参考 这个堆栈溢出的答案以获得关于如何在 Xcode 中禁用代码签名的详细描述。

在 ProjectNavigator 中,选择项目并打开项目的“ BuildSettings”部分(而不是任何特定目标)。

在“代码签名”下,找到“代码签名身份”,并为调试和发布模式设置“任何 iOS SDK”为“不代码签名”。

为了完全避免使用 Xcode 7进行代码签名,我使用了以下所有选项:

CODE_SIGN_IDENTITY=""
CODE_SIGNING_REQUIRED="NO"
CODE_SIGN_ENTITLEMENTS=""
CODE_SIGNING_ALLOWED="NO"

最后一个选项,CODE_SIGNING_ALLOWED="NO"似乎起到了作用。