ios學(xué)習(xí)之 關(guān)于Certificate镇匀、Provisioning Profile照藻、App ID的介紹及其之間的關(guān)系

1.概念介紹

如果你擁有一個開發(fā)者賬戶的話,在iOS Dev Center打開Certificates, Indentifiers & Profiles汗侵,你就可以看到如下的列表:

image

Profile Portal改版有一段時間了岩梳,改版之后的結(jié)構(gòu)比以前更清晰明了,易于理解和管理晃择。

上面的列表就包含了開發(fā)、調(diào)試和發(fā)布iOS應(yīng)用程序所需的所有內(nèi)容:Certificates也物、Identifiers宫屠、Devices、Provisioning Profiles滑蚯。下面將一一解釋這幾個東東浪蹂。

Certificate

證書是用來給應(yīng)用程序簽名的,只有經(jīng)過簽名的應(yīng)用程序才能保證他的來源是可信任的告材,并且代碼是完整的坤次, 未經(jīng)修改的。在Xcode Build Setting的Code Signing Identity中斥赋,你可以設(shè)置用于為代碼簽名的證書缰猴。

眾所周知,我們申請一個Certificate之前疤剑,需要先申請一個Certificate Signing Request (CSR) 文件滑绒,而這個過程中實(shí)際上是生成了一對公鑰和私鑰,保存在你Mac的Keychain中隘膘。代碼簽名正是使用這種基于非對稱秘鑰的加密方式疑故,用私鑰進(jìn)行簽名,用公鑰進(jìn)行驗(yàn)證弯菊。如下圖所示纵势,在你Mac的keychain的login中存儲著相關(guān)的公鑰和私鑰,而證書中包含了公鑰。你只能用私鑰來進(jìn)行簽名钦铁,所以如果沒有了私鑰软舌,就意味著你不能進(jìn)行簽名了,所以就無法使用這個證書了育瓜,此時你只能revoke之前的證書再申請一個葫隙。因此在申請完證書時,最好導(dǎo)出并保存好你的私鑰躏仇。當(dāng)你想與其他人或其他設(shè)備共享證書時恋脚,把私鑰傳給它就可以了。私鑰保存在你的Mac中焰手,而蘋果生成的Certificate中包含了公鑰糟描。當(dāng)你用自己的私鑰對代碼簽名后,蘋果就可以用證書中的公鑰來進(jìn)行驗(yàn)證书妻,確保是你對代碼進(jìn)行了簽名船响,而不是別人冒充你,同時也確保代碼的完整性等躲履。

image

證書主要分為兩類:Development和Production见间,Development證書用來開發(fā)和調(diào)試應(yīng)用程序,Production主要用來分發(fā)應(yīng)用程序(根據(jù)證書種類有不同作用)工猜,下面是證書的分類信息:(括號內(nèi)為證書有效期)

(注:不同類型的開發(fā)者賬戶所能創(chuàng)建的證書種類不同米诉,關(guān)于開發(fā)者賬戶的對比和InHouse證書相關(guān)的內(nèi)容,請見我的另一篇文章)

  • Development

    • App Development (1年):用來開發(fā)和真機(jī)調(diào)試應(yīng)用程序篷帅。
    • Push Development (1年):用來調(diào)試Apple Push Notification
  • Production

    • In-House and Ad Hoc (3年):用來發(fā)布In-House和AdHoc的應(yīng)用程序史侣。

    • App Store :用來發(fā)布提交App Store的應(yīng)用程序。

    • MDM CSR

    • Push Production (1年):用來在發(fā)布版本中使用Apple Push Notification魏身。

    • Pass Type ID Certificate

    • Website Push ID Certificate

有一些類型的證書我沒有使用過惊橱,所以也不了解具體的作用。

App ID

App ID用于標(biāo)識一個或者一組App箭昵,App ID應(yīng)該是和Xcode中的Bundle ID是一致的或者匹配的税朴。App ID主要有以下兩種:

  • Explicit App ID:唯一的App ID,這種App ID用于唯一標(biāo)識一個應(yīng)用程序宙枷,例如com.ABC.demo1掉房,標(biāo)識Bundle ID為com.ABC.demo1的程序。
  • Wildcard App ID:通配符App ID慰丛,用于標(biāo)識一組應(yīng)用程序卓囚。例如可以表示所有應(yīng)用程序,而com.ABC.可以表示以com.ABC開頭的所有應(yīng)用程序诅病。

每創(chuàng)建一個App ID哪亿,我們都可以設(shè)置該App ID所使用的APP Services粥烁,也就是其所使用的額外服務(wù)。每種額外服務(wù)都有著不同的要求蝇棉,例如讨阻,如果要使用Apple Push Notification Services,則必須是一個explicit App ID篡殷,以便能唯一標(biāo)識一個應(yīng)用程序钝吮。下面是目前所有可選的服務(wù)和相應(yīng)的配置要求。

image

如果你的App使用上述的任何一種service板辽,就要按照要求去配置奇瘦。

Device

Device最簡單了,就是iOS設(shè)備劲弦。Devices中包含了該賬戶中所有可用于開發(fā)和測試的設(shè)備耳标。 每臺設(shè)備使用UDID來唯一標(biāo)識。

每個賬戶中的設(shè)備數(shù)量限制是100個邑跪。Disable 一臺設(shè)備也不會增加名額次坡,只能在membership year 開始的時候才能通過刪除設(shè)備來增加名額。

關(guān)于設(shè)備數(shù)量的問題画畅,詳見這篇文章砸琅。

Provisioning Profile

一個Provisioning Profile文件包含了上述的所有內(nèi)容:證書、App ID轴踱、設(shè)備明棍。

試想一下,如果我們要打包或者在真機(jī)上運(yùn)行一個應(yīng)用程序寇僧,我們首先需要證書來進(jìn)行簽名,用來標(biāo)識這個應(yīng)用程序是合法的沸版、安全的嘁傀、完整的等等;然后需要指明它的App ID视粮,并且驗(yàn)證Bundle ID是否與其一致细办;再次,如果是真機(jī)調(diào)試蕾殴,需要確認(rèn)這臺設(shè)備能否用來運(yùn)行程序笑撞。而Provisioning Profile就把這些信息全部打包在一起,方便我們在調(diào)試和發(fā)布程序打包時使用钓觉,這樣我們只要在不同的情況下選擇不同的profile文件就可以了茴肥。而且這個Provisioning Profile文件會在打包時嵌入.ipa的包里。

例如荡灾,如下圖所示瓤狐,一個用于Development的Provisioning Profile中包含了該P(yáng)rovisioning Profile對應(yīng)的App ID瞬铸,可使用的證書和設(shè)備。這意味著使用這個Provisioning Profile打包程序必須擁有相應(yīng)的證書础锐,并且是將App ID對應(yīng)的程序運(yùn)行到Devices中包含的設(shè)備上去嗓节。

image

如上所述,在一臺設(shè)備上運(yùn)行應(yīng)用程序的過程如下:

image

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

(注:前面提到不同賬戶類型所能創(chuàng)建的證書種類不同拦宣,顯然Profile文件的種類是和你所能創(chuàng)建的證書種類相關(guān)的)

  • Development (1年)
  • Distribution (1年)
    • In House
    • Ad Hoc
    • App Store

In House 與Ad Hoc的不同之處在于:In House沒有設(shè)備數(shù)量限制,而Ad Hoc是用來測試用的信姓,Ad Hoc的包只能運(yùn)行在該賬戶內(nèi)已登記的可用設(shè)備上鸵隧,顯然是有最多100個設(shè)備的數(shù)量限制。所以這兩種Provisioning Profile文件的區(qū)別就在于其中的設(shè)備限制不一樣而已财破,而他們所使用的Certificate是相同的掰派。

<a name="t1" style="box-sizing: border-box; background: transparent; color: rgb(79, 161, 219); text-decoration: none; margin: 0px; padding: 0px; font-weight: normal; outline: none;"></a>2.開發(fā)/發(fā)布流程

了解了上面的概念,再來看開發(fā)及發(fā)布流程就非常簡單了左痢,而且相信你不用看教程也能一步步完成所有的操作了靡羡。

開發(fā)/真機(jī)調(diào)試流程

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

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

事實(shí)上第三步通常是不需要的俊性,因?yàn)槲覀兺ǔ6际怯肵code生成和管理的iOS Team Provisioning Profile來進(jìn)行開發(fā)略步,因?yàn)樗浅7奖悖圆恍枰约菏謩由蒔rovisioning Profile定页。

iOS Team Provisioning Profile是第一次使用Xcode添加設(shè)備時趟薄,Xcode自動生成的,它包含了Xcode生成的一個Wildcard App ID(*典徊,匹配所有應(yīng)用程序)杭煎,賬戶里面所有的Devices和所有Development Certificates,如下圖所示卒落。因此羡铲,team中的所有成員都可以使用這個iOS Team Provisioning Profile在team中的所有設(shè)備上調(diào)試所有的應(yīng)用程序。并且當(dāng)有新設(shè)備添加進(jìn)來時儡毕,Xcode會更新這個文件也切。

image

發(fā)布流程

網(wǎng)上有很多關(guān)于發(fā)布App Store的流程,我就不綴述了腰湾,不過根據(jù)上面的概念介紹雷恃,不管是App Store、In-House還是Ad-Hoc费坊,打包流程都是差不多的倒槐,都包括了以下幾個關(guān)鍵步驟:

  • 創(chuàng)建發(fā)布證書
  • 創(chuàng)建App ID
  • 創(chuàng)建對應(yīng)的Provisioning Profile文件
  • 設(shè)備Bundle ID和App ID一致
  • 設(shè)置Xcode Code Sign Identifer,選擇合適的Profile和證書進(jìn)行簽名附井,打包

以上就是對證書导犹、Provisioning Profile唱凯、App ID等的介紹,下一篇文章會介紹以下In-House證書相關(guān)的內(nèi)容谎痢。

轉(zhuǎn)載:http://blog.csdn.net/wangeen/article/details/19930667

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末磕昼,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子节猿,更是在濱河造成了極大的恐慌票从,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滨嘱,死亡現(xiàn)場離奇詭異峰鄙,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)太雨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門吟榴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人囊扳,你說我怎么就攤上這事吩翻。” “怎么了锥咸?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵狭瞎,是天一觀的道長。 經(jīng)常有香客問我搏予,道長熊锭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任雪侥,我火速辦了婚禮碗殷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘速缨。我一直安慰自己亿扁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布鸟廓。 她就那樣靜靜地躺著,像睡著了一般襟己。 火紅的嫁衣襯著肌膚如雪引谜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天擎浴,我揣著相機(jī)與錄音员咽,去河邊找鬼。 笑死贮预,一個胖子當(dāng)著我的面吹牛贝室,可吹牛的內(nèi)容都是我干的契讲。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼滑频,長吁一口氣:“原來是場噩夢啊……” “哼捡偏!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起峡迷,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤银伟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后绘搞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體彤避,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年夯辖,在試婚紗的時候發(fā)現(xiàn)自己被綠了琉预。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡蒿褂,死狀恐怖圆米,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贮缅,我是刑警寧澤榨咐,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站谴供,受9級特大地震影響块茁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜桂肌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一数焊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧崎场,春花似錦佩耳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至螃宙,卻和暖如春蛮瞄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背谆扎。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工挂捅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人堂湖。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓闲先,卻偏偏與公主長得像状土,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子伺糠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容