【问题标题】:What's the usage of the code signing identity of Release in the project of XcodeXcode项目中Release的代码签名标识有什么用
【发布时间】:2015-01-13 23:36:40
【问题描述】:

据我所知,代码签名身份用于签署应用程序。并且代码签名身份对调试很有用(在构建设置->代码签名身份中使用开发人员证书),因为应用程序将直接在配置的设备上运行

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

如果我们想要分发我们的应用程序,我们需要先将其归档。然后将其导出到 ipa。在导出的过程中,Xcode会弹出一个窗口让你重新选择分发证书。

所以如果我们可以在这里选择分发证书,为什么我们需要在项目设置中指定证书? (在 Build Setting->Code Signing Identity, Release 中)?

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

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

P.S 我用的是 XCode 5 和 6。

【问题讨论】:

  • 您应该测试使用 Release(或您用于最终构建的任何配置)配置构建的应用程序,虽然如果您通过 Xcode 运行它会留下错误的地方,但它可以节省大量当您自己测试应用程序时,有时间这样做。
  • @A-Live,如果我们直接从 Xcode 在设备上启动应用程序,我们会使用 Debug 配置。如果我们创建用于测试的 ad-hoc 应用程序,如我所说,从存档导出到 ad-hoc 将弹出一个窗口让我再次选择证书,而不是自动使用我在 Release 配置中指定的证书。所以我不太明白为什么Xcode为分发证书提供Release配置而不使用(导出时再次弹出)

标签: ios xcode code-signing


【解决方案1】:

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

一方面,您可以修改诸如编译器优化以及调试和发布构建配置之间使用的链接或剥离行为之类的东西——例如是否剥离调试符号。

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

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

这些(非常明智地命名为默认值)确实只是为了适合您和您团队的用例。例如,我的团队有一个具有 Debug、Staging 和 Release 构建配置的项目。它们之间存在不同的编译器优化,我们使用不同的配置来编译/输出和链接(或不)某些仅在 Staging 中有意义的代码部分,而在 Release 中它们可能没有意义.我们/也/有不同的团队共享代码库。在我们的案例中,当我们将源代码“发送”到客户端时,作为这样做之前的最后一步,我们确保它使用他们的代码签名和配置设置来构建和运行。

作为另一个示例,我经常根据向谁交付构建产品或交付构建产品的位置来更改存档使用的构建配置。这不是我认为是静态的设置。

我希望这会有所帮助!

【讨论】:

  • 感谢 graymouser。这对我理解配置有很大帮助。但是这个问题的重点是,在 Building Setting->Code Signing Identiy 中,我们将为每个配置(Debug 或 Release)选择证书。我不知道发布配置的证书是做什么用的。如果它用于分发,那么在应用程序存档并准备导出到 iPA(ad hoc 或提交到应用商店)后,Xcode 会再次要求我选择分发证书。它不会自动使用配置中的证书。
  • @RoyMa 如果您登录 Apple 开发中心,然后前往配置门户,然后查看 Certificates->All,您会看到您和您的开发人员拥有标记为“ iOS 开发”,还有其他的“生产”。当您最初制作证书时(如果您单击“+”,您可以再次看到界面),它会询问您正在制作哪种证书:开发,或各种与生产相关的证书之一(其中“ main”一个是“App Store and Ad Hoc”,但还有很多其他的)。 1/2
  • @RoyMa 代码签名身份通知 Xcode 在签名时尝试使用哪个证书,并且还与选择的配置文件有关;选择的身份需要能够实际使用配置文件。对于开发,这通常是完全透明的,因为您可能会自动使用 Apple 为帐户创建的默认 iOS 团队配置。例如,如果您有一个开发人员团队,您希望将代码签名身份设置为魔术字符串“iPhone Developer”,这将尝试在团队中发现适当的身份。 2/2
猜你喜欢
  • 2017-11-20
  • 2010-12-05
  • 1970-01-01
  • 2011-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-14
  • 1970-01-01
相关资源
最近更新 更多