Xcode项目中Release的代码签名标识的用法是什么?

时间:2015-01-13 15:13:51

标签: ios xcode code-signing

据我所知,代码签名身份用于签署应用程序。代码签名标识对于Debug(在Build Setting中具有Developer证书 - > Code Signing Identity)很有用,因为该应用程序将直接在配置的设备上运行

但是为什么Debug下面有一个选项叫做Release?

如果我们要分发我们的应用,我们需要先将其存档。然后将其导出到ipa。在导出过程中,Xcode会弹出一个窗口,让您再次选择分发证书。

因此,如果我们可以在此处选择分发证书,为什么我们需要在项目设置中指定证书? (在构建设置 - >代码签名身份,发布)?

让我更加困惑的是,即使我在Release中指定了Developer证书(只是我在Debug中指定的证书),我也可以成功归档应用程序。看起来发布部分没用。

我还检查了存档,发现该应用已签名。另一个问题是从归档到ipa的导出是重新签名的过程吗?

P.S我使用了XCode 5和6.

1 个答案:

答案 0 :(得分:2)

调试和发布只是Xcode在您创建新项目时为您生成的默认“构建配置”。

一方面,您可以修改诸如编译器优化之类的内容以及在调试和发布版本配置之间使用的链接或剥离行为 - 例如是否剥离调试符号。

另一方面,您可以使用这些构建配置来定义编译时定义,可能会更改您的某些默认设置,这些设置仅在编译时密切相关。例如,#if DEBUG#if RELEASE可以包装定义您的默认Web服务器的NSString或NSURL - 一个用于localhost,或者您的实时生产服务器(作为一个简单示例)。

现在,您还可以在构建配置之间更改代码签名和配置设置。对于一个简单的应用程序,你可能根本不关心这个。但是,在其他情况下,您为“发布”设置的配置可能会启用不同的应用内功能(例如推送通知?),而调试则不然。不同的配置也可能指向Apple的沙箱服务器v。live,for Debug或Release。 (我认为这解决了你为什么要这么做的核心问题。)

这些(非常合理命名的默认值)实际上就是适合您和您团队的用例。例如,我的团队有一个具有Debug,Staging和Release构建配置的项目。所有这些都有不同的编译器优化,我们使用不同的配置来编译输入/输出和链接(或不链接)只在Staging中有意义的某些代码段,它们在Release中可能没有意义。我们/还有/不同的团队共享代码库。在我们将源代码“发送”到客户端的情况下,作为最后一步,我们确保它构建并运行代码签名和配置设置。

作为另一个例子,我经常更改存档使用的构建配置,具体取决于我或者在哪里提供构建产品。这不是我认为静态的设置。

我希望这有帮助!