iOS 發(fā)布流程

這篇博客將會以一個完整的過程來實現(xiàn)一個iOS App提交審核的過程。在這個過程中,我們會涉及到證書、代碼簽名、授權(quán)文件、真機調(diào)試、開發(fā)者賬號等一些概念,我也會有所解釋。推薦大家先去看《iOS應(yīng)用分發(fā)與內(nèi)測(一)》《iOS應(yīng)用分發(fā)與內(nèi)測(二)》《iOS開發(fā)Provionsioning Profile解析》這幾篇博客,看完以后會對發(fā)布App的流程非常熟悉。
我先對一些概念做一個講解:
【證書 Certification】
證書是對電腦開發(fā)資格的認證,每個開發(fā)者賬號有一套。一個證書里面包含私鑰和公鑰。私鑰是保存在你的電腦上的,別人無法得到。公鑰是可以從蘋果開發(fā)者網(wǎng)站下載后得到的。一個證書只有公鑰和私鑰配對成功后,才能認證身份。比如說,你想要讓你的某個朋友的電腦也能使用你的證書真機調(diào)試或者發(fā)布應(yīng)用,于是你從你的開發(fā)者網(wǎng)站上面下載了證書,讓你的朋友在他的電腦上安裝,這還不夠,因為此時他還只有公鑰,你需要從你的電腦上的“鑰匙串訪問”中導(dǎo)出p12文件(保存了你的私鑰),讓你的朋友電腦安裝,這樣他的電腦才有“資格”真機調(diào)試。
當(dāng)然,證書也分為開發(fā)證書(Developer Certification)和發(fā)布證書(Distribution Certification)。開發(fā)證書可以用來真機測試。發(fā)布證書可以制作測試版和發(fā)布版的程序。

【代碼簽名 Code Signing】
可能大家學(xué)iOS剛開始想要去真機調(diào)試的時候,都會去Build Setting里面配置Code Signing這個東西。但是其實我們不知道這個是什么東西。只要在提到上面的證書的時候,才能說得清代碼簽名。當(dāng)我們真機調(diào)試的時候,程序會進行打包,然后通過Xcode安裝到我們的手機上。 也只有在電腦安裝了證書之后,Build Setting里面的Code Signing才可以選擇,而選擇項恰恰就是你安裝的證書,是哪些證書呢?你可以去鑰匙串訪問中看到,兩者是一一對應(yīng)的。用簡單粗暴的話說就是:用這個證書來簽名你的應(yīng)用,以驗證你這個應(yīng)用到底有什么權(quán)限(真機調(diào)試呢還是發(fā)布呢),確保了應(yīng)用的安全性和合法性。而目前為止,蘋果提供了三種簽名方式
(1)Ad-hoc:可以進行真機調(diào)試和內(nèi)測,只要你知道了那些設(shè)備的UDID(設(shè)備唯一標(biāo)識符)即可。
(2)In-house:企業(yè)賬號專用。
(3)App-Store:發(fā)布到App Store。

【授權(quán)文件 Provisioning Profile】
有時候也稱為配置文件。授權(quán)文件是對iOS設(shè)備的授權(quán),文件內(nèi)主要記錄了三樣?xùn)|西:App ID(Bundle Identifier)、設(shè)備的唯一標(biāo)識符(UDID)、和證書。用一句話說就是:使被授權(quán)的設(shè)備可以安裝或調(diào)試 授權(quán)文件中記錄的App ID對應(yīng)的程序。在開發(fā)者網(wǎng)站上創(chuàng)建授權(quán)文件的時候會選擇App ID,UDID。同樣對于兩種證書,也有兩種配置文件:開發(fā)授權(quán)文件(Developer Provisioning Profile)和發(fā)布授權(quán)文件(Distribution Provisioning Profile)。
在真機調(diào)試或者發(fā)布的時候,也需要在Build Setting-->Code Signing-->Provisioning Profile選中對應(yīng)的授權(quán)文件。真機調(diào)試的過程其實就是一個檢查匹配的過程:檢查當(dāng)前App的Bundle Identifier和授權(quán)文件中的App ID是否匹配;檢查程序的代碼簽名和授權(quán)文件中包括的證書是否匹配;檢查當(dāng)前運行設(shè)備的UDID和授權(quán)文件中寫入的Device ID是否一致;只有成功完成匹配后,才能成功的運行。詳細說明請參考《iOS開發(fā)Provionsioning Profile解析》。

【設(shè)備唯一標(biāo)識符 UDID 】
使用該標(biāo)識符可以區(qū)分每一臺唯一的iOS設(shè)備。可通過Xcode-->Window-->Device來獲取。

【開發(fā)者賬號】
作為一個普通的開發(fā)者,還是建議去買一個開發(fā)者賬號,99美元也不算太貴。在Xcode7之后其實不需要開發(fā)者賬號就可以免證書調(diào)試了。但是發(fā)布應(yīng)用到App Store就必須要賬號了。可能我們在公司工作,會有公司的證書,但是我們自己私下開發(fā),就必須要使用自己的賬號了。況且要用一些高級的功能,比如推送、應(yīng)用內(nèi)購買j就必須要賬號了。

我下面開始來講解整個發(fā)布流程:
(1)打開鑰匙串訪問-->證書助理-->從證書頒發(fā)機構(gòu)請求證書,如下圖所示:
![](http://upload-images.jianshu.io/upload_images/1663804-671857850ca680e3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。
在用戶電子郵件地址中寫入你想要收到的郵件地址,我一般寫Apple ID的郵箱,下面的常用名稱隨意即可,你也可以寫入你的名字,最好是英文。下面的CA電子郵件地址默認“必需”不用管。最后選擇"存儲到磁盤"即可。
保存到電腦上以后,是如下的一個文件:
![](http://upload-images.jianshu.io/upload_images/1663804-a0896e58dac80e74.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。
可以看到這是一個CSR文件,也就是證書請求(簽名)文件,我們可以這個文件去蘋果的開發(fā)者網(wǎng)站上請求一個證書。

(2)進入蘋果開發(fā)者網(wǎng)站: https://developer.apple.com/ 。然后選擇Account進入,需要你輸入你的Apple ID和密碼進入。最近我發(fā)現(xiàn)這個頁面又發(fā)生了改版。進入后如圖所示:
![](http://upload-images.jianshu.io/upload_images/1663804-09cf9198aadfd706.png)。
配置證書、授權(quán)文件選擇左邊那個Certificates,Identifier &Profiles .等到可以發(fā)布的時候選擇右邊的iTunes Connect. 現(xiàn)在我們選擇左邊的Certificates進入:
![](http://upload-images.jianshu.io/upload_images/1663804-ba1d8892231d40ad.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。
左邊導(dǎo)航欄列出了我們要配置的所有東西。Certificates就是證書,Idetifiers就是配置我們的App ID,Devices就是添加我們的真機調(diào)試設(shè)備,最后的Provisioning Profile就是配置授權(quán)文件。

(3)首先配置證書:
可以看到需要我們上傳Certificate Signing Request文件,就是我們剛剛從鑰匙串訪問中導(dǎo)出的CSR文件,
![](http://upload-images.jianshu.io/upload_images/1663804-15e04569a5d20f00.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。
如果是要開發(fā)證書,就選擇Development-->iOS App Development. 如果是要發(fā)布證書,選擇下面的Pruduct-->App Store and Ad Hoc. 兩者的操作其實是一樣的,我這里以配置開發(fā)證書為例。點擊Continue下一步,
![](http://upload-images.jianshu.io/upload_images/1663804-9f05393cdc2e7d14.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。
需要我們創(chuàng)建CSR文件,蘋果也給出了如何創(chuàng)建CSR文件的步驟,應(yīng)該和我講的是一樣的,因為我們已經(jīng)創(chuàng)建好了,所以直接Continue下一步:
![](http://upload-images.jianshu.io/upload_images/1663804-33f45c3bdccfdd46.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。
直接選擇我們的CSR文件進去即可。Continue下一步即可,
![](http://upload-images.jianshu.io/upload_images/1663804-66baeea3f01ec7f3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。
此時表示證書已經(jīng)創(chuàng)建完成了,點擊Download下載到電腦上。此時的這個開發(fā)證書就可以讓我們進行真機調(diào)試了。我們再進行同樣的步驟,在上面選擇一個發(fā)布證書,創(chuàng)建完成后下載到本地。
![](http://upload-images.jianshu.io/upload_images/1663804-5ceb1890ec5b5522.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。
如圖,后綴是.cer表示是一個證書,很明顯,左邊的是開發(fā)證書,右邊的是發(fā)布證書。我們分別雙擊進行安裝。安裝完成后,我們可以進入鑰匙串訪問查看,
![](http://upload-images.jianshu.io/upload_images/1663804-ee35fed7cafa2368.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。
可以看到我們的兩個證書都已經(jīng)成功安裝了。

(4)我們創(chuàng)建一個新項目,作為我們調(diào)試和發(fā)布的項目,名稱為MyFirstApp. 當(dāng)然,現(xiàn)在這個是個空項目,就算提交審核了也是不會發(fā)布的。在這只是做一個演示。一個App發(fā)布的最低的要求就是要有icon圖標(biāo),否則打包是會失敗的。所以我需要導(dǎo)入圖標(biāo)。在等下提交審核的時候還需要App在各個屏幕下的截圖。對于這兩者的資源,都要提前準(zhǔn)備好。僅僅作為一個測試,我把這個資源已經(jīng)準(zhǔn)備好了,https://github.com/chenyufeng1991/iOS-ScreenshotsAndIcon- 。對于想快速測試這個流程,又不想麻煩的去生成圖標(biāo)截圖的,可以先暫時使用這里面的資源。

(5)應(yīng)用開發(fā)完成后,我們繼續(xù)去開發(fā)者網(wǎng)站上面配置App ID,選擇左側(cè)導(dǎo)航欄-->Identifier-->App IDs,這里可以看到我們創(chuàng)建的所有的應(yīng)用的ID . 此時我們新建一個:
![](http://upload-images.jianshu.io/upload_images/1663804-a5dac5aecc5dbe2b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240).
這里主要要填入兩個地方,在 App ID Description中填入這個app的簡單描述,只要不輸入@,&等這些非法字符即可。在下面的Budle ID 中填入你應(yīng)用的Bundle Identifier,比如我這里的Bundle ID就是:com.chenyufengweb.MyFirstApp.
最下面你還可以選擇需要哪些應(yīng)用服務(wù),比如推送,Apple Pay,iCloud等服務(wù),如果你的應(yīng)用使用到,都需要勾選上。點擊Continue下一步,
![](http://upload-images.jianshu.io/upload_images/1663804-285ec4ffeb388c77.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。
這一步是讓你確認App中包含的信息,確定無誤的話點擊Register注冊這個app。完成后,就可以在列表中看到我們注冊完成的應(yīng)用了,
![](http://upload-images.jianshu.io/upload_images/1663804-f4975b1aa8ae1cf1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。

(6)現(xiàn)在需要來注冊我們需要真機調(diào)試的設(shè)備了。可以看到這里可以注冊的設(shè)備有Apple TV,Apple Watch,iPad,iPhone,iPod這幾種,表示你的應(yīng)用可以在這些設(shè)備上真機調(diào)試。
![](http://upload-images.jianshu.io/upload_images/1663804-36850a427884f4a5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240).

Name可以輸入這臺設(shè)備的名稱,可以任意取。UDID輸入唯一標(biāo)識符,可以用上面提到的方式去獲取。
![](http://upload-images.jianshu.io/upload_images/1663804-2d34f254c8c22d16.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。
可以看到我們注冊的開發(fā)者賬號可以添加各個類型的設(shè)備各100臺。對于個人開發(fā)者來說已經(jīng)足夠了。上面的信息確認無誤后,點擊Register注冊即可。注冊完成后,列表中就會顯示出該賬號下的所有設(shè)備:
![](http://upload-images.jianshu.io/upload_images/1663804-775e43c01e01e4da.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。

(7)最后我們來配置授權(quán)文件,點擊manually generate profiles手動創(chuàng)建一個授權(quán)文件,
![](http://upload-images.jianshu.io/upload_images/1663804-550de9687a78fd7e.png)。

![](http://upload-images.jianshu.io/upload_images/1663804-06d471fab6fbdb02.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。
在這里,我們可以看到,授權(quán)文件和證書一樣,也是分為開發(fā)的和發(fā)布的。如我上面所說,授權(quán)文件會把App ID、設(shè)備UDID、證書都打包進來。我這里以開發(fā)的為例進行創(chuàng)建。選擇iOS App Development,點擊Contunue下一步:
![](http://upload-images.jianshu.io/upload_images/1663804-a267a00b1d9d827f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。
在這一步選擇我上面創(chuàng)建的App ID。點擊Continue下一步:
![](http://upload-images.jianshu.io/upload_images/1663804-f267d18b81da8857.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。
這一步是選擇證書,因為是一一對應(yīng)的,所在在這里只能選擇開發(fā)證書,而不能選擇發(fā)布證書,點擊Continue下一步,
![](http://upload-images.jianshu.io/upload_images/1663804-cbcd38d5cd75d24e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。
這里是要選擇真機調(diào)試的設(shè)備,只有選中的設(shè)備才能調(diào)試該應(yīng)用。
![](http://upload-images.jianshu.io/upload_images/1663804-851ebcebc0cff319.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。
在這一步是為這個授權(quán)文件取一個名字,最好在名字里面說明這是開發(fā)的還是發(fā)布的,便于以后區(qū)分。點擊Continue下一步。
![](http://upload-images.jianshu.io/upload_images/1663804-e3bddf9ef2f12bab.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。
創(chuàng)建完成后,點擊Download[下載](http://m.2cto.com/soft)。對于發(fā)布授權(quán)證書,也按同樣的方式進行創(chuàng)建。兩個文件下載完成后,如下所示:
![](http://upload-images.jianshu.io/upload_images/1663804-0294c4bf29604e4d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。
直接雙擊這兩個文件,授權(quán)文件就會自動安裝到Xcode中去。

(8)來到我們Xcode的項目中,來配置證書和授權(quán)文件。
進入Build Setting-->Code Signing-->Code Signing Identity,在Debug中選擇開發(fā)證書,在Release中選擇發(fā)布證書。(想要看電腦上安裝了哪些證書,可以去鑰匙串訪問哦)。
在下面的Provisioning Profile中選擇授權(quán)文件,Debug處選擇開發(fā)授權(quán)文件,Release處選擇發(fā)布授權(quán)文件。配置完后如下所示:
![](http://upload-images.jianshu.io/upload_images/1663804-76a681a3b8ac96d3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。
經(jīng)過以上步驟,我們就可以在指定設(shè)備上運行該應(yīng)用了。

(9)我們的應(yīng)用已經(jīng)開發(fā)完畢,現(xiàn)在要提交到App Store了。要用到的工具就是iTunes Connect. 再次進入蘋果開發(fā)者網(wǎng)站,點擊iTunes Connect.進入:
![](http://upload-images.jianshu.io/upload_images/1663804-d34f21fe71d5b98d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。
進入后的主頁面如下,
![](http://upload-images.jianshu.io/upload_images/1663804-4a4e816e47d8f76f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。
可以看到在iTunes Connect.中可以管理我們已經(jīng)上線或者即將上線的應(yīng)用。點擊進入“我的App”. 然后點擊左上角的“+”號創(chuàng)建一個新應(yīng)用,
![](http://upload-images.jianshu.io/upload_images/1663804-4e99b46de1c05224.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。
可能你的Name已經(jīng)被占用了,那就換一個。點擊Create創(chuàng)建。
選擇左上角的App Information,這里可以簡單配置App的信息,比如右側(cè)的Category,表示你App的分類,比如音樂、購物等等,一級分類是必須選擇的。點擊右上角Save保存。
左側(cè)第二個Pricing and Availiablity是一些價格和購買信息,我這里選擇免費。點擊右上角Save保存。
第三個1.0 Prepare for Submission則是一些發(fā)布的詳細信息,首先要有不同屏幕上的五張截屏,如果你的應(yīng)用不適配到iPad上,那么可以不上傳iPad的截圖。
![](http://upload-images.jianshu.io/upload_images/1663804-9cdae7685a00d7bb.png)。

![](http://upload-images.jianshu.io/upload_images/1663804-3c635a1ecfb20683.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。
同時可以添加這個應(yīng)用的描述,關(guān)鍵字,以及支持的網(wǎng)站。下面的Build構(gòu)建先不用,等下我們會使用Xcode上傳的。

![](http://upload-images.jianshu.io/upload_images/1663804-a9f740336ba16377.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。
同時還要上傳Icon,這里的Icon必須鑰匙1024*1024的,以及你應(yīng)用的分級、和你的地址、聯(lián)系方法等信息??梢园茨愕膶嶋H情況填寫即可。

![](http://upload-images.jianshu.io/upload_images/1663804-52be446d3daa2528.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。
最下面的位置需要你提供一個測試賬號,也就是使用該賬號可以登錄你的App,并使用所有的功能,方便為蘋果審核。Version Release則是說你想要在審核通過后直接發(fā)布還是手動設(shè)置時間發(fā)布。按你的實際需求設(shè)置。然后點擊右上角的Save保存。

(10)在iTunes Connect.上面的設(shè)置基本結(jié)束了。我們再次回到Xcode中,來打包我們的程序。
此時需要把你的手機連上Xcode或者在調(diào)試設(shè)備中選擇Generic iOS Device,然后選擇Product-->Archive(如果調(diào)試設(shè)備選擇了模擬器,則Archive不可點擊)。就會出現(xiàn)如下界面:
![](http://upload-images.jianshu.io/upload_images/1663804-8d1c31aff20b926e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。
這里就是對你的應(yīng)用程序進行打包。如果我們僅僅只是想要導(dǎo)出.ipa文件,可以直接選擇右側(cè)的Export,然后你可以把這個ipa文件放到其他的內(nèi)測平臺上去分發(fā)。由于我們就是直接想發(fā)布到App Store上面,并且已經(jīng)在iTunes Connect.上面做好了設(shè)置,所以我們直接點擊“Upload to App Store”即可。
![](http://upload-images.jianshu.io/upload_images/1663804-a66016fef7347419.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240).
在這過程中,可能會等的比較久。時候還會提交失敗,因為可能是你程序中的某些問題,或者提交了同一個版本,如下是因為我重復(fù)提交了1.0版本,然后報錯了。
![](http://upload-images.jianshu.io/upload_images/1663804-1da643439db2c065.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。
在成功修復(fù)后,就可以再次upload了。成功以后出現(xiàn)如圖界面:
![](http://upload-images.jianshu.io/upload_images/1663804-10914a9e7f70904d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。
此時,我們就把應(yīng)用成功提交到iTunes Connect.上面了。

(12)再次來到iTunes Connect.中,找到Build的地方,發(fā)現(xiàn)已經(jīng)跟剛才不一樣了。出現(xiàn)了"Select a build before you submit your app",也就是讓我們選擇一個版本提交。點擊后出現(xiàn)如下界面:
![](http://upload-images.jianshu.io/upload_images/1663804-1ddfbde6a59e71a5.png).
可以看到我們剛剛upload了兩個版本。比如我選擇2.0(2)進行提交。此時的Build如下:
![](http://upload-images.jianshu.io/upload_images/1663804-1b636a48defa3c43.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240).
然后點擊Save保存。最后點擊旁邊的“Submit for Review”,也就是提交審核。最后還是會出現(xiàn)一個頁面讓你確認一些信息:
![](http://upload-images.jianshu.io/upload_images/1663804-e195fa8fe7497d67.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。
其中包括加密確認、顯示第三方內(nèi)容、和廣告問題。根據(jù)實際情況選擇提交。提交成功后,上面就出現(xiàn)了Waiting For Review 等待審核的字樣:
![](http://upload-images.jianshu.io/upload_images/1663804-86472e4487958e45.png)。
等過幾天蘋果審核通過后,你就能發(fā)布這款A(yù)pp了。

看一百遍不如去做一次。流程看起來復(fù)雜,但是只要去做一次,就會發(fā)現(xiàn)其實還是很有邏輯的。希望大家能發(fā)布越來越好玩的App。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容