Xcode8 新特性 -- 新应用签名机制

这是我 WWDC2016 笔记中的一篇,本文仅做为我的记录使用,也欢迎在许可协议范围内转载或使用,可是烦请保留原文连接,谢谢您的理解合做。架构

签名

Xcode8 提供新的签名管理功能,带来了如下新特性:ui

  • 新的基础架构
  • 新的工做流程和 UI
  • 可操做消息提醒
  • 状态报告

之前处理应用签名对于开发者来讲是很是烦人的事,多人开发或者多设备开发常常遇到须要导出证书或 revoke / recreate 证书的问题,但 Xocde8 通过从新设计后在这方面更加方便易用,烦人的 Fix Issue 按钮再也不出现,取而代之的是更加友好的自动操做或者是错误提示。首先简要地回顾下签名机制。spa

签名机制

代码签名可让用户验证咱们的身份(macOS 上使用没有签名的应用将会出现提示或不容许使用,而在 iOS 上更是不能安装),防止签名后的应用被修改,以及容许访问系统的服务。整个签名机制主要由如下三个文件组成:签名证书(Signing certificates),配置文件(Provisioning profiles)和受权文件(Entitlements)。设计

签名证书

签名证书

  • 由苹果签发
  • 分红开发证书和分发证书
  • 开发设备必须有对应证书的密钥
  • 苹果不会保存该密钥

配置文件

配置文件

  • 一样由苹果签发
  • 应用专用
  • 决定应用可否在一个特定设备上运行
  • 联系可以使用的受权文件

受权文件

受权文件

  • 声明可以使用的系统服务
  • 各 target 有对应的受权文件
  • 可以使用 Capabilities 面板管理

总的来讲,在签名时配置文件和可选的受权文件会和咱们的程序一同进行打包,而证书则用于生成代码封条(code seal)。code

如下就是 Xcode8 提供的新特性如何帮助咱们更专一于开发上:开发

每台 Mac 设备将拥有独立的开发证书

独立证书

在 Xcode8 之前,咱们若是想用同一个开发者帐号在不一样的 Mac 上开发,就必须从证书生成的 Mac 上把证书和密钥导出到另外一台 Mac 上安装。但 Xcode8 后,每台 Mac 都会根据开发者帐号生成一个设备独立的开发证书,这样咱们就免去证书导出或者是 revoke / recreate 证书的烦恼。不过度发证书仍是只能由一台设备存有。get

支持自动管理证书和自定义管理证书

自动管理证书

自动管理证书

自动管理证书将会根据你所选择的开发者帐号自动为你处理配置文件和签名证书的设置,而且只在必要时进行提醒。工作流

若是你好奇 Xcode 为你作了什么,在报告面板里还列出了每个步骤和缘由。例如,我刚在 Capabilities 把 CloudKit 打开,从新 build 一次后出现如下消息:it

build 报告

另外,自动管理证书仅对 Xcode 生成的配置文件有效,因此不用担忧手动生成的会被修改。io

自定义管理证书

自定义证书

在自定义管理证书模式下,Xcode8 容许你对各 Configurations 进行配置文件和签名证书的设置。不过在面板上将会提示你出现什么错误。

新引用配置文件的方式

新 PROVISIONING_PROFILE_SPECIFIER 编译参数将摒弃之前经过 unique id 引用配置文件的方式,改成经过“TeamID + 配置文件名称”的方式去引用(在工程文件中保存为:PROVISIONING_PROFILE_SPECIFIER = “XXXXXXXXXX/ProvisionFileName”),这样作的好处是之前当咱们添加一个小伙伴到团队或一个新设备后配置文件就须要从新生成,但之后这些都交给 Xcode 本身处理吧。

最佳实践

  • 不要设置 CODE_SIGN_IDENTITY
  • 使用新的 General 和 Capabilities 面板操做
  • 使用自动签名
相关文章
相关标签/搜索