1.概念介紹
如果你擁有一個開發(fā)者賬戶的話,在iOS Dev Center打開Certificates, Indentifiers & Profiles汗侵,你就可以看到如下的列表:
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)行了簽名船响,而不是別人冒充你,同時也確保代碼的完整性等躲履。
證書主要分為兩類: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)的配置要求。
如果你的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è)備上去嗓节。
如上所述,在一臺設(shè)備上運(yùn)行應(yīng)用程序的過程如下:
與證書一樣皆警,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會更新這個文件也切。
發(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