关于 xcode:iOS 配置文件和签名身份

iOS provisioning profiles and signing identities

我有点迷失在所有证书/配置文件中。

当我通过首先在 XCode 中执行"归档"然后"分发"并选择我的临时分发配置文件来进行临时分发时,我在项目->目标->构建设置->代码签名?

一方面,我在不同的地方读到,当您归档构建时,您可以(并且确实应该)使用相同的归档进行临时测试,然后在准备好时只需使用应用商店配置文件并上传到应用商店。那种感觉是有道理的。它还告诉我,我真的可以将项目设置中的配置文件留空,实际使用"分发"操作期间选择的配置文件,签名身份实际上是与中列出的分发证书关联的私钥该配置文件。对吧?

另一方面,testflight 说明 (http://help.testflightapp.com/customer/portal/articles/1333914) 明确指出项目设置也应设置为使用 Ad-hoc 配置文件,以及相同的配置文件必须在项目设置和"分发"中使用。这意味着我不能将同一个存档同时用于临时和应用商店分发,可以吗?每次我想为这个或那个发行版发布时,我是否需要更改项目设置?

此外,如果项目设置在存档/分发场景中产生任何差异,则不清楚应该在那里使用什么代码签名身份。 Testflight 屏幕截图显示 iOS Developer 已设置为调试和发布,但 ad-hoc 和应用商店分发都没有与之关联的单独 iOS 开发人员证书,分发配置文件通常与一个且唯一的分发证书相关联。

有人可以解释一下它实际上应该如何工作吗?

谢谢


是的,您的构建设置很重要。 Xcode 从您的初始代码签名/配置配置文件配置中获取各种权利,并且仅在分发...阶段对它们进行最小的更改。

因此,如果 Xcode 在存档步骤中选择了不正确的配置文件,您最终可能会得到不正确的捆绑种子 ID、钥匙串组、APN 环境和 iCloud 权利。

Distribute... 按钮调用 PackageApplication 脚本,该脚本确保 get-task-allow 为 false(调试器无法连接),嵌入配置文件,然后重新签名并压缩您的应用程序(尽管我可能顺序错了)。

PackageApplication 值得一读。人们可能会指责它不是很聪明,但我认为它应该更严格,并拒绝打包权利与其使用的配置文件不同的应用程序。

你可以在这里找到它Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplication

我认为分发 Ad Hoc 构建的一种稳定工作流程是

  • 从系统中删除所有通配符配置文件
  • 在发布配置中选择您的 App Store 配置文件(在存档阶段使用)
  • 在分发中选择您的 Ad Hoc 配置文件
  • 1. 的原因是通配符配置文件(匹配多个 BundleID 的配置文件,由您手动创建或由 Xcode 自动创建)不值得麻烦。是的,它们可以让你更快地在设备上运行代码,但是如果你想使用推送通知或任何其他有趣的服务,你很快就不得不放弃它们,然后它们会在你的系统上徘徊,迟早 Xcode 会默默地选择其中一个并破坏您的 App Store 提交。

    至于第 2 点(选择 App Store 配置文件),我有点犹豫是否要在项目中指定配置文件,但 App Store 只需在您的证书到期时每年更改一次(除非您编辑证书中的应用标识符,标识符