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 面板操做
  • 使用自動簽名
相關文章
相關標籤/搜索