这篇 blog 来自我们内部的分享,内容比较精简,需要更多的细节信息,请参考 WWDC 2016 - 401 的视频
相信每一个开发者在初学 iOS 的时候,都有过被 Code Signing 坑过的经历,特别是当旁边没有人指导的时候,这也是当时我个人学习 iOS 的时候最困扰的地方,证书,provisioning profile, code signing 等等这些和实际的开发无关的概念,现在还记得苦苦看文档的经历。
iOS证书申请和签名打包流程图,图来自这里
Xcode 团队在 Xcode 8 中移除了 fix issue 之后还需要 fix issue 但是可能还是不能 fix issue 的 Fix Issue
按钮,并完全重新设计了 code signing 的交互,流程和架构,不管对于 iOS 初学者还是有经验的程序员,都能大大简化 code signing 的流程,让我们把精力更专注于实际的业务开发上。
Xcode 8 支持两种签名方式,自动化签名 (Automatic Singing
)和自定义签名(Customized Signing
) 的。下面我们说一下基础概念和这两种签名方式。
想了解更多?代码签名探析@objc.io
在这种模式下,Xcode 全自动的为我们管理整个签名的流程,整个过程会在后台执行,会保证所有签名需要的文件是最新的。
我们所需要做的就是勾选上自动化签名,然后选择 team。剩下的 Xcode 都会接管。比如创建证书,创建和更新 profile 等等。但是当插入了一台新的 iOS 设备,Xcode 8 还是会提示是否把这台设备添加到测试设备中,如果选择是,Xcode 8 会自动添加到设备列表里,并自动更新 profile 文件。(鼓掌)
如果比较好奇 Xcode 自动为我们做了什么,可以在 Reports 里看查看 log, (鼓掌) 比如:
Xcode 自动化签名只会自动化开发阶段的签名,不会修改发布的签名设置。既然这样,如何设置 release 版本的签名呢?其实我们在 Archive 的时候,Xcode 默认使用的还是开发证书做的签名,然后在 Orgnizer 里选择 export 到 App Store 发布版本的时候,会让我们重新选择 证书重新签名,这里再选择发布证书(演讲者这里说的是开发证书,应该是口误)。
如果我们想自己管理签名所需的文件,可以选择自定义签名方式。这种模式下,Xcode 不会对签名设置做任何的修改。
操作很简单,就是取消勾选自动化签名,然后就可以对每个 build configuration 做不同的签名设置了,注意不用去 Build Setting 里设置了,直接 General 里就可以完成签名的设置了。如下图,对免费版和收费版设置不同的 profile:
虽然我们设置了自定义签名,但 Xcode 并不是真的什么都不做了,相反如果签名的设置有问题, Xcode 提供更多友好和精确的提示:
blah blah… 一句话:使用自动化签名 (to make your life as easy as possible) blah blah…
Enjoy!