Xcode 8.0 自动管理签名行为
Xcode 8.0 Automatically Manage Signing behaviour
我使用“自动管理签名”选项已有一段时间了。然而,当我在最近的 Xcode 8.0 版本中这样做时,它迫使我使用开发人员代码签名身份,即使是在构建设置中发布和分发,这本身就很奇怪。当我提交相关二进制文件时,我收到了来自 Apple 的可怕的 Missing Push Notification Entitlement 电子邮件。为了弥补它,我禁用了自动选项并返回手动指定配置文件,这让我可以在分发构建设置中保留分发配置文件并保存来自 Apple 的警告电子邮件。
为什么自动管理以这种方式工作以及如何调整其行为?
随着 Xcode 8 的发布,Apple 引入了一种管理签名配置的新方法。现在您有两个选项 Manual
和 Automatic
。
这个新的 Automatic Signing
的工作方式与以前的 Xcode 版本不同。之前,当您设置 Automatic
配置文件时,Xcode 使用您计算机中与您尝试使用的权利和捆绑标识符相匹配的第一个配置文件和证书。
在 Xcode 8 中,Automatic Signing
将为您管理配置文件、权利和证书,但仅限于 Development
。如果你 select 自动,你将被迫使用 Development signing
和 Xcode 创建的配置文件。
他们在 WWDC 2016 (Session 401 - What's new in Xcode app signing) 上解释了这种新的签名方法并描述了一些 'Best Practices'。当您构建分发并使用 Automatic Signing
或 Manual
时,您应该存档 Development
然后导出(从管理器或命令行工具 xcodebuild -exportArchive
)为 Distribution
.组织者将为 Distribution
重新签署您的应用,即使它已存档 Development
。
您描述的另一个问题 "Missing Push Notification Entitlement" 是因为 Xcode 8 改变了它应用权利的方式。对于以前版本的 Xcode,您不必显式添加 APS Environment
权利,如果您的配置文件具有该权利就足够了。确保在 Capabilities
选项卡中启用了 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 does not automatically copy the aps-environment entitlement
from provisioning profiles at build time. This behavior is
intentional. To use this entitlement, either enable Push Notifications
in the project editor’s Capabilities pane, or manually add the
entitlement to your entitlements file. (28076333)
这里是启用手动签名的过程
在项目编辑器中,从 Project/Target 弹出菜单中选择目标,单击签名和功能,然后显示签名设置。
单击全部或特定构建配置。
例如,您可以对 Release 配置使用自动签名,对 Debug 配置使用手动签名。
取消选择“自动管理签名”。
注意:如果目标不使用配置文件(例如,框架),请从“团队”弹出菜单中选择一个团队。
从“配置文件”弹出菜单中,选择一个自定义配置文件。
该菜单包含与目标包 ID 匹配的所有团队的所有自定义配置文件。该菜单可能包含已过期和无效的配置文件——例如,您的开发者帐户中的 App ID 已更改的配置文件。
如果您要使用的配置文件没有出现在菜单中,您可以下载配置文件或导入配置文件。
更多信息:https://help.apple.com/xcode/mac/current/#/dev1bf96f17e
我使用“自动管理签名”选项已有一段时间了。然而,当我在最近的 Xcode 8.0 版本中这样做时,它迫使我使用开发人员代码签名身份,即使是在构建设置中发布和分发,这本身就很奇怪。当我提交相关二进制文件时,我收到了来自 Apple 的可怕的 Missing Push Notification Entitlement 电子邮件。为了弥补它,我禁用了自动选项并返回手动指定配置文件,这让我可以在分发构建设置中保留分发配置文件并保存来自 Apple 的警告电子邮件。
为什么自动管理以这种方式工作以及如何调整其行为?
随着 Xcode 8 的发布,Apple 引入了一种管理签名配置的新方法。现在您有两个选项 Manual
和 Automatic
。
这个新的 Automatic Signing
的工作方式与以前的 Xcode 版本不同。之前,当您设置 Automatic
配置文件时,Xcode 使用您计算机中与您尝试使用的权利和捆绑标识符相匹配的第一个配置文件和证书。
在 Xcode 8 中,Automatic Signing
将为您管理配置文件、权利和证书,但仅限于 Development
。如果你 select 自动,你将被迫使用 Development signing
和 Xcode 创建的配置文件。
他们在 WWDC 2016 (Session 401 - What's new in Xcode app signing) 上解释了这种新的签名方法并描述了一些 'Best Practices'。当您构建分发并使用 Automatic Signing
或 Manual
时,您应该存档 Development
然后导出(从管理器或命令行工具 xcodebuild -exportArchive
)为 Distribution
.组织者将为 Distribution
重新签署您的应用,即使它已存档 Development
。
您描述的另一个问题 "Missing Push Notification Entitlement" 是因为 Xcode 8 改变了它应用权利的方式。对于以前版本的 Xcode,您不必显式添加 APS Environment
权利,如果您的配置文件具有该权利就足够了。确保在 Capabilities
选项卡中启用了 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 does not automatically copy the aps-environment entitlement from provisioning profiles at build time. This behavior is intentional. To use this entitlement, either enable Push Notifications in the project editor’s Capabilities pane, or manually add the entitlement to your entitlements file. (28076333)
这里是启用手动签名的过程
在项目编辑器中,从 Project/Target 弹出菜单中选择目标,单击签名和功能,然后显示签名设置。
单击全部或特定构建配置。
例如,您可以对 Release 配置使用自动签名,对 Debug 配置使用手动签名。
取消选择“自动管理签名”。
注意:如果目标不使用配置文件(例如,框架),请从“团队”弹出菜单中选择一个团队。
从“配置文件”弹出菜单中,选择一个自定义配置文件。
该菜单包含与目标包 ID 匹配的所有团队的所有自定义配置文件。该菜单可能包含已过期和无效的配置文件——例如,您的开发者帐户中的 App ID 已更改的配置文件。
如果您要使用的配置文件没有出现在菜单中,您可以下载配置文件或导入配置文件。
更多信息:https://help.apple.com/xcode/mac/current/#/dev1bf96f17e