国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

IOS證書之Certificates,Devices,Identifiers&Profiles

2019-11-14 20:35:14
字體:
來源:轉載
供稿:網友

  做IOS開發的,在需要發布應用的時候,會接觸到iOS Dev Center里面的證書制作,按照網上的資料操作,我們可以很容易的制作證書并且完成真機調試或者是產品發布,但是對于Certificates、Devices、Identifiers 和PRofiles是什么,可能仍然一知半解。這篇文章就對Certificates、Devices、Identifiers 和Profiles做個介紹。

概念介紹

  對于擁有個人開發者賬號(99美金/年)或者企業開發者賬號(299美金/年)的用戶,登錄到iOS Dev Center后,可以看到如下的界面(企業開發者賬號下面的截圖):

  上圖中包含了開發和發布iOS應用程序所需的所有內容:Certificates、Identifiers、Devices、Provisioning Profiles。下面將逐一解釋這幾個概念。

  1.Certificate

  證書是用來給應用程序簽名的,只有經過簽名的應用程序才能保證它的來源是可信任的。在Xcode Build Setting的Code Signing Identity中,你可以設置用于為代碼簽名的證書,如下圖所示:

 

  眾所周知,我們申請一個Certificate之前,需要先申請一個Certificate Signing Request (CSR) 文件,而這個過程中實際上是生成了一對公鑰和私鑰,保存在你Mac的Keychain中。代碼簽名正是使用這種基于非對稱秘鑰的加密方式,用私鑰進行簽名,用公鑰進行驗證。如下圖所示,在你Mac的keychain的login中存儲著相關的公鑰和私鑰,而證書中包含了公鑰。你只能用私鑰來進行簽名,所以如果沒有了私鑰,就意味著你不能進行簽名了,所以就無法使用這個證書了,此時你只能revoke之前的證書再申請一個。因此在申請完證書時,最好導出并保存好你的私鑰。當你想與其他人或其他設備共享證書時,把私鑰傳給它就可以了。私鑰保存在你的Mac中,而蘋果生成的Certificate中包含了公鑰。當你用自己的私鑰對代碼簽名后,蘋果就可以用證書中的公鑰來進行驗證,確保是你對代碼進行了簽名,而不是別人冒充你,同時也確保代碼的完整性等。 

  證書主要分為兩類:Development和Production,Development證書用來開發和調試應用程序,Production主要用來分發應用程序(根據證書種類有不同作用)。

  2.App ID

  App ID用于標識一個或者一組App,App ID和Xcode中的Bundle ID是一致的或者匹配的。App ID主要有以下兩種: 

  • Explicit App ID:唯一的App ID,這種App ID用于唯一標識一個應用程序,例如com.ABC.demo1,標識Bundle ID為com.ABC.demo1的程序。
  • Wildcard App ID:通配符App ID,用于標識一組應用程序。例如*可以表示所有應用程序,而com.ABC.*可以表示以com.ABC開頭的所有應用程序。

   每創建一個App ID,我們都可以設置該App ID所使用的APP Services,也就是其所使用的額外服務。每種額外服務都有著不同的要求,例如,如果要使用Apple Push Notification Services,則必須是一個explicit App ID,以便能唯一標識一個應用程序。下圖顯示了所有可選的服務:

  3.Device

  Devices中包含了該賬戶中所有可用于開發和測試的設備,每臺設備使用UDID來唯一標識。每個賬戶中的設備數量限制是100個。

  4.Provisioning Profile

  一個Provisioning Profile文件包含了上述的所有內容:證書、App ID、設備。

  試想一下,如果我們要打包或者在真機上運行一個應用程序,我們首先需要證書來進行簽名,用來標識這個應用程序是合法的、安全的、完整的等等;然后需要指明它的App ID,并且驗證Bundle ID是否與其一致;再次,如果是真機調試,需要確認這臺設備能否用來運行程序。Provisioning Profile把這些信息全部打包在一起,方便我們在調試和發布程序打包時使用,這樣我們只要在不同的情況下選擇不同的profile文件就可以了。而且這個Provisioning Profile文件會在打包時嵌入.ipa的包里。

  如下圖所示,一個用于Development的Provisioning Profile中包含了該Provisioning Profile對應的App ID,可使用的證書和設備。這意味著使用這個Provisioning Profile打包程序必須擁有相應的證書,并且是將App ID對應的程序運行到Devices中包含的設備上去。

  在一臺設備上運行應用程序的過程如下:

  與證書一樣,Provisioning Profile也分為Development和Distribution兩種:

  • Development 
  • Distribution 
    • In House
    • Ad Hoc
    • App Store

  In House 與Ad Hoc的不同之處在于:In House沒有設備數量限制,而Ad Hoc是用來測試用的,Ad Hoc的包只能運行在該賬戶內已登記的可用設備上,有最多100個設備的數量限制。所以這兩種Provisioning Profile文件的區別就在于其中的設備限制不一樣而已,而它們所使用的Certificate是相同的。

開發/發布流程

  了解了上面的概念,再來看開發及發布流程就非常簡單了。

  1.開發/真機調試流程

  根據上面的介紹,可以知道進行Development主要有以下幾個步驟:

  • 申請證書
  • 加入設備
  • 生成Provisioning Profile
  • 設置Xcode Code Sign Identifer

  事實上第三步通常是不需要的,因為我們通常都是用Xcode生成和管理的iOS Team Provisioning Profile來進行開發,因為它非常方便,所以不需要自己手動生成Provisioning Profile。

  iOS Team Provisioning Profile是第一次使用Xcode添加設備時,Xcode自動生成的,它包含了Xcode生成的一個Wildcard App ID(*,匹配所有應用程序),賬戶里面所有的Devices和所有Development Certificates,如下圖所示。因此,team中的所有成員都可以使用這個iOS Team Provisioning Profile在team中的所有設備上調試所有的應用程序。并且當有新設備添加進來時,Xcode會更新這個文件。

  2.發布流程

  網上有很多關于發布App Store的流程,我就不綴述了,不過根據上面的概念介紹,不管是App Store、In-House還是Ad-Hoc,打包流程都是差不多的,都包括了以下幾個關鍵步驟:

  • 創建發布證書
  • 創建App ID
  • 創建對應的Provisioning Profile文件
  • 設備Bundle ID和App ID一致
  • 設置Xcode Code Sign Identifer,選擇合適的Profile和證書進行簽名,打包。

  以上就是對證書、Provisioning Profile、App ID等的介紹。

 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南投市| 新巴尔虎左旗| 玛曲县| 衡东县| 从化市| 江门市| 清徐县| 定边县| 突泉县| 治县。| 吐鲁番市| 万全县| 化州市| 绵阳市| 托克逊县| 紫金县| 黄浦区| 资源县| 元朗区| 璧山县| 汪清县| 彭州市| 沧州市| 静安区| 新野县| 雅安市| 青海省| 洞头县| 中山市| 瑞昌市| 禹州市| 钟祥市| 津南区| 深水埗区| 黄浦区| 虎林市| 汕尾市| 安福县| 合阳县| 扬中市| 上思县|