前段時(shí)間,項(xiàng)目的發(fā)布證書(shū)過(guò)期了振亮,于是整理了一番映挂,簡(jiǎn)單總結(jié)一下吧。
初步了解
開(kāi)發(fā)和發(fā)布iOS App普气,必須加入蘋(píng)果的開(kāi)發(fā)者計(jì)劃(Apple Developer Program)谜疤。
蘋(píng)果開(kāi)發(fā)者計(jì)劃,有兩種:
- 個(gè)人版(Individual $99/Year)
- 企業(yè)開(kāi)發(fā)(Organization $299/Year)
目前多數(shù)個(gè)人開(kāi)發(fā)者和一些規(guī)模不太大的企業(yè)现诀,都是使用個(gè)人版夷磕。
從開(kāi)發(fā)角度來(lái)講,企業(yè)版對(duì)于個(gè)人版最大的不同在于仔沿,可以進(jìn)行企業(yè)發(fā)布坐桩。
企業(yè)發(fā)布打包的ipa,通過(guò)fir.im和蒲公英等第三方來(lái)發(fā)布于未。
任何人都可以安裝這個(gè)App,不必通過(guò)蘋(píng)果的審核。
但也是有一些限制烘浦,例如證書(shū)如果無(wú)效了抖坪,App就打不開(kāi)了。
數(shù)目好像也有限制闷叉。了解的童鞋,請(qǐng)留言擦俐。這里不深入。
申請(qǐng)步驟也沒(méi)什么特別握侧,一步一步按要求填寫(xiě)就OK蚯瞧,這里直接跳過(guò)了。申請(qǐng)地址
申請(qǐng)成功后,進(jìn)入開(kāi)發(fā)主頁(yè),點(diǎn)擊賬戶(hù),進(jìn)入賬戶(hù)主頁(yè).
點(diǎn)擊 Certificates品擎,IDs & Profiles進(jìn)入證書(shū)管理埋合。
可以看到證書(shū)是分為3種來(lái)進(jìn)行管理,請(qǐng)避免不小心選錯(cuò)的尷尬萄传。
- iOS,tvOS,watchOS
- macOS
- Safari Extension
Keys 是新出的一個(gè)東西甚颂,相關(guān)內(nèi)容如下,這里不作深入秀菱。
(翻譯)創(chuàng)建一個(gè)key可以用來(lái)配置和認(rèn)證一個(gè)或者多人蘋(píng)果服務(wù)振诬。不像證書(shū),keys是不會(huì)過(guò)期的衍菱,而且創(chuàng)建后依然可以修改來(lái)使用更多服務(wù)赶么。更多關(guān)于創(chuàng)建和使用keys的信息,可以通過(guò)創(chuàng)建key時(shí)候脊串,點(diǎn)擊相關(guān)的鏈接來(lái)了解辫呻。
接下來(lái)是手動(dòng)管理signing的部分。
如果你只使用Automatically manage signing洪规,可以跳過(guò)該部分印屁。
Automatically manage signing會(huì)自動(dòng)創(chuàng)建證書(shū)。
由于我們團(tuán)隊(duì)的管理是比較開(kāi)放的(每個(gè)童鞋都知道開(kāi)發(fā)者帳號(hào)密碼)斩例。A童鞋自動(dòng)創(chuàng)建好的雄人,B童鞋再自動(dòng)創(chuàng)建,如果數(shù)量超出限制念赶,會(huì)導(dǎo)致之前的證書(shū)被revoke了础钠,無(wú)法使用。
所以后來(lái)我們團(tuán)隊(duì)關(guān)閉自動(dòng)管理叉谜,避免相互影響旗吁。
手動(dòng)創(chuàng)建
開(kāi)發(fā)和發(fā)布App最基礎(chǔ)的三個(gè)東西。
- Certificates (證書(shū))
- Identifiers (App ID相關(guān))
- Provisioning Profiles (配置文件)
第一步停局,先創(chuàng)建App ID很钓。
-
填A(yù)pp描述香府,即App名,不過(guò)此名非真正顯示的App名码倦,只是在配置證書(shū)使用的名字企孩。
填寫(xiě)App ID,即app的bundle ID
即創(chuàng)建工程的時(shí)候袁稽,如下圖位置的id:
回過(guò)頭來(lái)想勿璃,開(kāi)發(fā)一個(gè)App最先應(yīng)該做的應(yīng)該是申請(qǐng)App ID,應(yīng)為App ID在不允許和其他App(整個(gè)App Store)重復(fù)推汽,具有唯一性补疑。如果重復(fù)只能老老實(shí)實(shí)修改。
Wildcard App ID 請(qǐng)忽略歹撒,想了解用途的戳我莲组。
-
勾選相關(guān)服務(wù)
這里選擇了推送和App Group(App Group將在下一篇講到)。
Continue 栈妆, Register胁编,Done 完成App ID的創(chuàng)建。
創(chuàng)建證書(shū)
-
選擇證書(shū)類(lèi)型
Development開(kāi)發(fā)證書(shū)
- iOS App Development
不含推送服務(wù)的開(kāi)發(fā)證書(shū)鳞尔,該證書(shū)與App關(guān)聯(lián)(即創(chuàng)建時(shí)需要選擇App ID嬉橙,并僅供選擇的App開(kāi)發(fā)使用)。
如果App不含推送服務(wù)寥假,創(chuàng)建改證書(shū)市框。
如果App含推送服務(wù),可以不創(chuàng)建糕韧。 - Apple Push Notification service SSL (Sandbox)
供關(guān)聯(lián)的App使用的枫振,含推送服務(wù)的開(kāi)發(fā)證書(shū)。
如果App含推送服務(wù)萤彩,創(chuàng)建該證書(shū)粪滤,否則推送服務(wù)無(wú)法開(kāi)發(fā)測(cè)試。
Production發(fā)布證書(shū)
App Store and Ad Hoc (限制創(chuàng)建兩個(gè))
供所有app開(kāi)發(fā)使用雀扶,不和App關(guān)聯(lián)杖小。
如果原來(lái)發(fā)布app,可以使用原來(lái)的發(fā)布證書(shū)愚墓。Apple Push Notification service SSL (Sandbox & Production)
供關(guān)聯(lián)app product環(huán)境推送使用予权,先要安裝到電腦中,導(dǎo)出P12文件給后臺(tái)開(kāi)發(fā)人員使用浪册。
發(fā)布證書(shū)扫腺,有的稱(chēng)之為生產(chǎn)證書(shū),Production村象,個(gè)人習(xí)慣叫發(fā)布證書(shū)笆环,對(duì)應(yīng)develop 和 Release攒至。
簡(jiǎn)單總結(jié):
含推送App需要3個(gè)證書(shū)
不含推送App需要2個(gè)證書(shū)
-
選擇App
-
創(chuàng)建證書(shū)請(qǐng)求文件
打開(kāi)Keychain,從證書(shū)頒發(fā)機(jī)構(gòu)請(qǐng)求證書(shū),很好理解躁劣,就是從蘋(píng)果那請(qǐng)求證書(shū)嗓袱。
我們選擇存到磁盤(pán)的方式,填寫(xiě)電子郵件
選擇存儲(chǔ)位置习绢,修改名字,例如testapp.certSigningRequest
-
上傳csr文件
回到網(wǎng)頁(yè)端蝙昙,contine后闪萄,會(huì)要求我上傳CSR文件。
-
創(chuàng)建成功后奇颠,下載败去,雙擊安裝,然后在Keychain里就能看見(jiàn)了烈拒。如果可以展開(kāi)圆裕,含專(zhuān)用密匙,則正常荆几。
什么時(shí)候會(huì)出現(xiàn)不能展開(kāi)的情況呢吓妆?
當(dāng)我用A電腦生成csr,請(qǐng)求的證書(shū)吨铸,下載后行拢,直接安裝在B電腦上。就是不能展開(kāi)诞吱。那么怎么在B電腦上也能正常使用證書(shū)開(kāi)發(fā)舟奠?這個(gè)將在下面解答。
使用同樣的方法創(chuàng)建兩個(gè)發(fā)布證書(shū)房维,CSR文件可以用同一個(gè)沼瘫。
創(chuàng)建Provisioning Profile文件
Provisioning Profile是依賴(lài)證書(shū),App ID咙俩,注冊(cè)設(shè)備的配置文件耿戚,同樣有開(kāi)發(fā)和發(fā)布兩種。
Provisioning Profile下文將簡(jiǎn)稱(chēng)為Profile暴浦。
-
選擇類(lèi)型
已注冊(cè)設(shè)備將在下面介紹溅话。
-
選擇App ID
選擇證書(shū)
- 如果為這個(gè)App創(chuàng)建了多個(gè)證書(shū),可能會(huì)有多個(gè)選擇歌焦》杉福可能只選擇其中一個(gè),多個(gè)独撇,或者全選屑墨。
- 如果名字都一樣躁锁,不知道是哪個(gè),全選是比較穩(wěn)的卵史。
- 選擇多個(gè)或者全選战转,有什么缺點(diǎn)呢?就是其中任意一個(gè)證書(shū)失效以躯,則這個(gè)Profile文件也就失效了槐秧。需要重新Generate。
重新Generate并不是重新創(chuàng)建忧设。這個(gè)也將在下文提到刁标。
-
選擇設(shè)備
建議全部選上,這里選擇就是注冊(cè)設(shè)備址晕。
-
輸入profile的名字膀懈,例如testAppDev。
這名字最好統(tǒng)一幾谨垃。因?yàn)橐恍o(wú)效的profile启搂,xcode并不會(huì)自動(dòng)清除苫耸,強(qiáng)迫癥患者會(huì)覺(jué)得不爽须板。
-
完成profile文件的創(chuàng)建。
profile文件通常不會(huì)直接從網(wǎng)頁(yè)下載夏醉,而是在Xcode中下載匙隔。
發(fā)布的profile文件匈织,使用同樣的方式創(chuàng)建,不同的是牡直,沒(méi)有選擇設(shè)備這個(gè)步驟缀匕,畢竟發(fā)布是面向所有設(shè)備(App Store)的發(fā)布。
Ad Hoc發(fā)布方式碰逸,即面向已注冊(cè)設(shè)備的發(fā)布方式乡小。當(dāng)我們需要對(duì)所有已注冊(cè)設(shè)備發(fā)布Release包,適合使用這種發(fā)布方式饵史。這種也是需要選擇設(shè)備的满钟。
Ad Hoc發(fā)布方式可以通過(guò)fir.im和蒲公英等第三方來(lái)發(fā)布,已注冊(cè)設(shè)備就能掃碼安裝了胳喷。
創(chuàng)建是注意有多個(gè)發(fā)布證書(shū)時(shí)湃番,注意選擇對(duì)應(yīng)你電腦上安裝的發(fā)布證書(shū),如下圖:
細(xì)心的童鞋會(huì)發(fā)現(xiàn)這里怎么有3個(gè)吭露,不是限制兩個(gè)嗎吠撮?
恩,其中有個(gè)無(wú)效的讲竿。限制有效證書(shū)兩個(gè)泥兰,可能會(huì)產(chǎn)生無(wú)效的證書(shū)弄屡。
上文提到,App Store and Ad Hoc創(chuàng)建時(shí)是不和App關(guān)聯(lián)鞋诗。那它發(fā)布時(shí)是怎樣和我們開(kāi)發(fā)的App建立關(guān)系呢膀捷?
恩,就是靠這個(gè)profile文件削彬。
三種profile全庸,我們都創(chuàng)建,分別是testAppDev融痛,testAppDis糕篇, testAppAdHoc。
補(bǔ)充一句:profile文件貌似沒(méi)有限制個(gè)數(shù)酌心,但我們正式開(kāi)發(fā)的時(shí)候,還是建議不要太隨意挑豌。
我使用含推送功能的App為例安券,安裝好上面的3個(gè)證書(shū),創(chuàng)建好3個(gè)profile文件后氓英,我們進(jìn)入下一步侯勉。
Xcode配置
關(guān)閉Automatically manage signing
下載profile文件
選擇對(duì)應(yīng)的profile文件
如果Signing這塊沒(méi)有報(bào)錯(cuò),那么我們針對(duì)這臺(tái)電腦的配置完畢了铝阐。
添加新的注冊(cè)設(shè)備
新的iPhoneX或者是舊的iPhone4S址貌,如果沒(méi)有注冊(cè)過(guò),不能安裝我們測(cè)試的ipa徘键,也不能進(jìn)行真機(jī)調(diào)試练对,真機(jī)調(diào)試會(huì)出現(xiàn)下面錯(cuò)誤:
如果有人對(duì)你喊,測(cè)試包安裝不了吹害,第一個(gè)先檢查設(shè)備注冊(cè)過(guò)沒(méi)有螟凭。
在關(guān)閉了Automatically manage signing后,需要我們手動(dòng)注冊(cè)它呀。
注意螺男,注冊(cè)設(shè)備的數(shù)量是有限的。
填入U(xiǎn)DID后纵穿,register下隧。
更新profile文件
注冊(cè)了設(shè)備,還要更新那些關(guān)聯(lián)了設(shè)備的profile文件谓媒,這樣profile文件才有效淆院。
回顧一下3個(gè)profile文件中哪些關(guān)聯(lián)了設(shè)備?
沒(méi)錯(cuò)句惯,testAppDev和testAppAdHoc迫筑。
testAppAdHoc同樣的方式重新Generate后宪赶,錯(cuò)誤變成如下,直接點(diǎn)擊Update就OK了脯燃。
證書(shū)變動(dòng)搂妻,注冊(cè)設(shè)備的disable或者刪除,導(dǎo)致profile文件失效辕棚,都可以重新Generate一下來(lái)重新生效欲主。
推送證書(shū)的導(dǎo)出
在keychain中找到對(duì)應(yīng)的推送證書(shū),分別為開(kāi)發(fā)和發(fā)布(生產(chǎn))環(huán)境逝嚎。
右鍵導(dǎo)出p12文件扁瓢,會(huì)要求你輸入密碼,并把導(dǎo)出密碼兩個(gè)文件已經(jīng)交給后臺(tái)開(kāi)發(fā)人員即可补君。
下一篇引几,Part2,將主要小結(jié)多臺(tái)mac的部署挽铁,App Group以及configuration相關(guān)的證書(shū)配置伟桅。