Xcode Signing 机制

Xcode Signing 机制

历史遗留问题

做iOS开发经验稍长的同学都知道Xcode8以前的证书管理机制做的比较简单。就是一旦发现你的机器没有provisionProfile所关联的证书,就会在界面上显示红色按钮,你点击“Fix it”,然后Xcode就revoke provisionProfile所关联的证书,然后在帮你申请一个新的。

这个单人单机的情况下没有什么问题,不过你如果有2台以上的mac就会发现“Fix it”这个按钮不能随便点。多台mac一般都是把私钥copy到每一台电脑上,如果在哪台电脑上点了“Fix it”,这时辛辛苦苦复制好的私钥就会revoke,瞬间所有mac都不能正常干活了。如果是一个人有多台电脑还好点,这个问题在团队里面更严重,多人有多人电脑时,很可能会有人误点到“Fix it”按钮,而造成整个团队罢工的情况。所以一般小组成员都会互相告诫不能随便点“Fix it”按钮,甚至有人还写了插件来禁用这个按钮。

这种痛苦的情况在Xcode8上得到了彻底解决。

Xcode8引入的新的开发证书的更新机制

Xcode8引入的最大改变就是provisionProfile中关联的证书变成了多个,一个develop版本的provisionProfile中可以关联所有开发人员自己的证书。只要在机器上有列表中的任何一个证书就能进行代码签名,这样在新成员来时仅仅更新它自己的证书以及provisionProfile就行,并不会影响其他人,这个步骤在Xcode8中非常简单,只需要一个点击就能搞定

Xcode的这些操作都是在后台进行的,不过你如果想要了解估计的细节可以在左侧的“Show the Report navigator(最后一个选项)”选项卡中看到

最佳实践

  • Automatically manage signning
    在这种模式下每个开发人员都会有自己的develop证书,这时尽量用自己develop证书来archive,而不要用公共的开发证书,避免了别人不小心把公用证书revoke导致的一系列问题

  • manully manage signning
    手动管理证书的时候主要不要选和自己帐号相关联的证书,因为自己的帐号只有自己有,到团队其他成员的机器上就不能工作了。这时候就选develope这样的默认值就行了

相关引用