Xcode 8.0自动管理签名行为

时间:2016-09-11 20:36:02

标签: ios xcode8 entitlements

喂,

我有一段时间使用自动管理签名选项。然而,当我在最近的Xcode 8.0版本中这样做时,它迫使我使用开发人员代码签名身份甚至在Build Settings中发布和分发,这本身就很奇怪。当我提交相对二进制文件时,我会收到来自Apple的可怕的Missing Push Notification Entitlement电子邮件。为了弥补这一点,我禁用了自动选项并手动返回指定配置文件,这使我可以在分发版本设置中保留分发配置文件,并从Apple中保存警告电子邮件。

为什么自动管理以这种方式工作以及如何调整其行为?

2 个答案:

答案 0 :(得分:51)

随着Xcode 8的发布,Apple推出了一种管理签名配置的新方法。现在,您有两个选项ManualAutomatic

这个新的Automatic Signing与之前的Xcode版本的工作方式不同。以前,当您设置Automatic配置文件时,Xcode正在使用您计算机中与您尝试使用的权利和软件包标识符相匹配的第一个配置文件和证书。

在Xcode 8中,Automatic Signing将为您管理配置文件,权利和证书,但仅适用于Development。如果选择自动,则必须使用Development signing和Xcode创建的配置文件。

WWDC 2016 (Session 401 - What's new in Xcode app signing)上,他们解释了这种新的签名方法并描述了一些“最佳实践”。在构建分发并使用Automatic SigningManual时,您应该归档Development,然后导出(从组织者或命令行工具xcodebuild -exportArchive){{1 }}。即使Distribution已归档,组织者也会为Distribution的应用重新签名。

您描述的另一个问题“缺少推送通知权限”是因为Xcode 8改变了它应用权利的方式。使用以前版本的Xcode,您不必显式添加Development权利,如果您的配置文件具有该权利就足够了。确保您在APS Environment标签中启用了Push Notification功能,并检查其中是否存在错误。

(编辑:这种新行为是有意的,并在Xcode 8发行说明中进行了描述:https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Introduction.html#//apple_ref/doc/uid/TP40001051-CH1-DontLinkElementID_44

  

Xcode 8不会自动复制aps-environment权利   从构建时的配置文件。这种行为是   故意的。要使用此权利,请启用推送通知   在项目编辑器的Capabilities窗格中,或手动添加   您的权利文件的权利。 (28076333)

答案 1 :(得分:0)

这是启用手动签名的过程

  1. 在项目编辑器中,从“项目/目标”弹出菜单中选择目标,单击“签名和功能”,然后显示“签名”设置。

  2. 单击“全部”或特定的构建配置。

    例如,您可以将自动签名用于Release配置,并将手动签名用于Debug配置。

  3. 取消选择“自动管理签名”。

    注意:如果目标未使用配置文件(例如框架),请从“团队”弹出菜单中选择一个团队。

  4. 从“供应配置文件”弹出菜单中,选择一个自定义供应配置文件。

    该菜单包含与目标的捆绑软件ID匹配的所有团队的所有自定义配置配置文件。菜单中可能包含过期和无效的配置文件,例如,开发者帐户中具有更改的App ID的配置文件。

    如果您要使用的配置文件未显示在菜单中,则可以下载该配置文件或导入该配置文件。

有关更多信息:https://help.apple.com/xcode/mac/current/#/dev1bf96f17e