使用xcodebuild构建iOS应用程序而不使用codeign

noa*_*mtm 53 xcode build codesign ios

我们正在为另一家公司构建应用程序.他们持有签名密钥,宁愿不与我们分享.

应该可以分离构建和签名,但是如何在xcodebuild的命令行中指定它?

Joe*_*ern 115

为了跳过代码签名,您可以从控制台执行手动构建,如下所示:

xcodebuild clean build CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO
Run Code Online (Sandbox Code Playgroud)

另外,使用-configuration,-target-sdk参数,以便定义构建设置.

请参阅此Stack Overflow应答,以获得有关如何禁用Xcode内部代码签名的详细说明.

  • 这是有效的,但问题是无法生成`codesign --entitlements ... --resource-rules ...`命令所需的Entitlements和ResourceRules文件.如果您打算使用iCloud,这一点尤为重要.自己生成这些文件并非易事.另见http://stackoverflow.com/questions/9280130/how-to-call-builtin-productpackagingutility-in-command-line. (5认同)
  • 在添加 CODE_SIGNING_ALLOWED="NO" 之前,Xcode 9.3 对我不起作用。请参阅下面的本·弗林 (Ben Flynn) 的回答。 (3认同)
  • 不起作用,接收/ usr/bin/codesign --force --sign ...可能是由于配置类型 (2认同)

Ben*_*ynn 24

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

CODE_SIGN_IDENTITY=""
CODE_SIGNING_REQUIRED="NO"
CODE_SIGN_ENTITLEMENTS=""
CODE_SIGNING_ALLOWED="NO"
Run Code Online (Sandbox Code Playgroud)

最后的选择,CODE_SIGNING_ALLOWED="NO"似乎可以解决问题.


Mik*_*ler 8

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

CodeSign error: code signing is required for product type 'Application' in SDK
                'iOS 5.1'
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您应该将目标配置为在发布模式下使用开发人员/团队通配符(*)签名身份.该应用程序将在您构建时与其签名,您可以将其发送给您的客户,以便他们可以将其重新签名.这就是我们大多数外包开发人员所做的事情.

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