關(guān)于iOS開發(fā)中的證書總結(jié)
文章同步在個(gè)人主頁(yè)~
最近發(fā)現(xiàn)自己對(duì)apple的證書還是不太熟悉,雖然平常給測(cè)試打包,上預(yù)發(fā)布,發(fā)布什么的基本都沒有問題,但有時(shí)候碰到一些問題的時(shí)候,還是會(huì)焦頭爛額,還是對(duì)基本的一些東西不太熟悉,今天就好好整理總結(jié)一下.
Part One
打開開發(fā)者中心,先看一下基本的框架:
Certification:證書
1.Developer Certification:開發(fā)者證書;
2.Distribution Certificatio:發(fā)布證書;
3.Pending:未處理(例如未完成填寫信息的證書會(huì)在這里出現(xiàn));
Identifiers:標(biāo)識(shí)
1.App IDs:應(yīng)用程序ID;它應(yīng)該和你Xcode中的bundle ID一樣;App ID分為兩種:一種是以com.ErosLii.newer命名的唯一的一個(gè)ID,還有一種是統(tǒng)配的Wildcard App ID,類似于正則表達(dá)式的樣子,com.erosLii.*標(biāo)示所有com.erosLii.開頭的都可以用;
2.Pass Type IDs:當(dāng)你的應(yīng)用程序想要存儲(chǔ)一些銀行卡啊之后的東西到自帶的應(yīng)用Wallet中的時(shí)候需要這個(gè)證書;
3.Website Push IDs:用于通過服務(wù)器向Safari推送服務(wù)(這個(gè)暫時(shí)沒搞懂,還望大家指正);
4.iCloud Containers:這個(gè)是用作iCloud存儲(chǔ)用的,你要先有一個(gè)iCloud-enabled provisioning profile,再在這里設(shè)定Container ID;這里有一篇文章可供了解
5.App Groups:這是iOS8新開放的功能,主要用于同一group下的app共享同一份讀寫空間,以實(shí)現(xiàn)數(shù)據(jù)共享.同樣,推薦這里的一篇文章用作了解;
6.Merchant IDs:關(guān)于這里,如果你之前和我一樣不了解,那從2016年開始,你就必須要盡快了解了.它是用來支持Apple Pay,同樣,去看看文檔吧~
Devices:
這個(gè)就比較簡(jiǎn)單了;配置你的測(cè)試機(jī)器,出現(xiàn)在devices名單中的設(shè)備可供安裝調(diào)試;但是要知道每個(gè)賬戶中的設(shè)備數(shù)量限制是100個(gè)。Disable一臺(tái)設(shè)備也不會(huì)增加名額混坞,只能在membership year 開始的時(shí)候才能通過刪除設(shè)備來增加名額。
Provisioning Profiles:描述文件(它是一個(gè)包含了以上三項(xiàng)的綜合體,你在Xcode中的build setting中選擇使用的就是這家伙)
1.Development:開發(fā);
2.Distribution:發(fā)布;
Part Two
首先來說證書,證書是用來給應(yīng)用程序簽名的龙致,只有經(jīng)過簽名的應(yīng)用程序才能保證他的來源是可信任的,并且代碼是完整的,未經(jīng)修改的,在申請(qǐng)我們的第一個(gè)證書之前,我們需要上傳有我們本地(鑰匙串)生成的一個(gè).CSR文件,這個(gè)過程中實(shí)際上是生成了一對(duì)公鑰和私鑰荐类,保存在你Mac的Keychain中锌雀。代碼簽名正是使用這種基于非對(duì)稱秘鑰的加密方式,用私鑰進(jìn)行簽名锹漱,用公鑰進(jìn)行驗(yàn)證。證書中包含了公鑰,當(dāng)你打包的時(shí)候,選擇這書之后,蘋果就會(huì)用私鑰進(jìn)行認(rèn)證簽名,確保這是你本人的更改和行為,所以要保存好私鑰,一是可以給他人共享,二是如果丟失,那你這個(gè)證書也就不能用了,需要銷毀重新生成一個(gè)新的證書
1.Developer Certification
可以創(chuàng)建以下類型的開發(fā)證書:
-App Development (1年):用來開發(fā)和真機(jī)調(diào)試應(yīng)用程序.
-Push Development (1年):用來調(diào)試Apple Push Notification.
我們可以使用鑰匙串生成副本(p12文件),供團(tuán)隊(duì)測(cè)試打包使用.
2.Production Certificate
可以創(chuàng)建以下類型的發(fā)布證書:
-In-House and Ad Hoc (3年):用來發(fā)布In-House和AdHoc的應(yīng)用程序慕嚷。
-App Store:用來發(fā)布提交App Store.
-MDM CSR:商業(yè)應(yīng)用分發(fā)(我們公司用的就是這個(gè));
-Push Production((1年):用來在發(fā)布版本中使用Apple Push Notification.
-Pass Type ID Certificate:這個(gè)我上文提到了;
-Website Push ID Certificate:同上;
發(fā)布證書安裝在電腦上提供發(fā)布iOS程序的權(quán)限,開發(fā)人員可以制做測(cè)試版和發(fā)布版的程序,僅有配置該證書的電腦才可使用,而且不可以生成副本.也就是只有一個(gè)人可以執(zhí)行發(fā)布的任務(wù);
Part Three
再來說說描述文件,或者叫做授權(quán)文件;一個(gè)Provisioning Profile文件包含了上述的所有內(nèi)容:證書哥牍、App ID、設(shè)備喝检。開發(fā)者帳號(hào)在創(chuàng)建授權(quán)文件時(shí)候會(huì)選擇App Id嗅辣,(開發(fā)者帳號(hào)下App Id中添加,單選)和UDID(開發(fā)者帳號(hào)下Devices中添加最多100個(gè)挠说,多選)
試想一下澡谭,如果我們要打包或者在真機(jī)上運(yùn)行一個(gè)應(yīng)用程序,我們首先需要證書來進(jìn)行簽名损俭,用來標(biāo)識(shí)這個(gè)應(yīng)用程序是合法的蛙奖、安全的、完整的等等杆兵;然后需要指明它的App ID雁仲,并且驗(yàn)證Bundle ID是否與其一致;再次琐脏,如果是真機(jī)調(diào)試攒砖,需要確認(rèn)這臺(tái)設(shè)備能否用來運(yùn)行程序。而Provisioning Profile就把這些信息全部打包在一起日裙,方便我們?cè)谡{(diào)試和發(fā)布程序打包時(shí)使用吹艇,這樣我們只要在不同的情況下選擇不同的profile文件就可以了。而且這個(gè)Provisioning Profile文件會(huì)在打包時(shí)嵌入.ipa的包里阅签。
在網(wǎng)上找到一張圖片:
1.Developer Provisioning Profile(1年)
開發(fā)人員在code sign中選擇該授權(quán)文件,即可進(jìn)行真機(jī)測(cè)試,前提是安裝了開發(fā)證書,bundleID和AppID一樣,并且連接調(diào)試的設(shè)備的UDID在選中的授權(quán)文件中有記錄;
2.Distribution Provisioning Profile(1年)
發(fā)布版就是發(fā)布到App Store上的程序文件掐暮,開發(fā)者帳號(hào)創(chuàng)建授權(quán)文件時(shí)選擇store選項(xiàng)蝎抽,選擇App Id政钟,無需選擇UDID路克;在裝有發(fā)布證書的電腦上(即配置證書的電腦,只有一臺(tái))發(fā)布;
關(guān)于這里有一些小東西要注意,在個(gè)人開發(fā)的時(shí)候一般不會(huì)有什么問題,但是目前在我的公司,iOS開發(fā)者有20多個(gè)人的時(shí)候再Git同步或者打包的時(shí)候偶爾會(huì)有一些問題,命名profile和證書都是正確的,但是還會(huì)編譯失敗,下次在iOS開發(fā)知識(shí)點(diǎn)匯總中記一下吧.
Part Four - Summary
最后還是要說一下開發(fā)的流程,雖然大家可能都已經(jīng)知道了,但是我一片完整的流程怎么能沒有這個(gè)說明呢,哈哈.
1.申請(qǐng)證書;(包括了本地生成CSR文件,生成證書,下載導(dǎo)出);
2.將調(diào)試設(shè)備加入Devices中;
3.生成Provisioning Profile(描述文件名稱,選擇證書,AppID以及Devices,下載導(dǎo)出);
4.Xcode的Code Signing中真確選擇;
我說的比較簡(jiǎn)單,如果你是一個(gè)新手,這里有一篇文章,寫的極其詳細(xì),你可以參考.
最后,希望我的文章能幫到你,與君共勉.