老板,我要打包!花式的那種!
沒有錯!折騰了這么久,我們卻還有件最重要的事情沒做,那就是給我們的寶貝兒App打個LV,哦,不對,IPA包包。
設(shè)置修改

上一篇里填寫提交信息的時候,這一塊我們自己嘗試的時候肯定都看到了,其實就是現(xiàn)在要用到的地方。上面的Apple Watch點開就會發(fā)現(xiàn)跟App的相關(guān)信息一樣,如果你有開發(fā)對應(yīng)的Watch App,就需要在那里填寫和上傳相關(guān)信息及文件,這里不多說了。我們要看的是下面的構(gòu)建版本,這里的構(gòu)建版本就是我們剛剛說的需要上傳的.ipa包。IPA是Apple程序應(yīng)用文件iPhoneApplication的縮寫,作為文件名后綴的.ipa就表示了這是一個蘋果手機程序安裝文件,可以安裝到iPhone和iPad上。那我們要怎么樣把我們開發(fā)的App打包成一個ipa文件呢?先不急,在打包之前我們必須對工程文件做一些必須的設(shè)置修改。
首先打開我們的工程文件,看到Project里的info選項頁,這里有個iOS Deployment Target需要注意下,這是你的App所支持的最低iOS系統(tǒng)版本,你如果調(diào)到9.3,那只有iOS9.3的系統(tǒng)才能安裝你的App,所以這里其實開發(fā)的時候就應(yīng)該根據(jù)實際支持情況設(shè)置好,打包前最好再來核實一下,當(dāng)然這個不是你想支持多低版本就可以隨便設(shè)置的,牽涉到你接入的各種SDK支持版本,以及你工程中實際調(diào)用到的API所支持的最低版本等等。

再看到Build Settings,往下滾動找到Build Options,這里有個Bitcode的開關(guān),如果你引入了第三方庫,編譯后發(fā)現(xiàn)報錯bitcode,可以在這里來關(guān)掉,或者你不想蘋果二次編譯你上傳的App來優(yōu)化,也可以關(guān)掉。最重要的是下面的Code Signing,也就是我們之前講到的代碼簽名,檢查你的證件的時候到了。先在下面的Provisioning Profile里改成你之前申請安裝好的對應(yīng)的App的描述文件,再在Code Signing Identity下,把所有的選項都改成你之前已經(jīng)申請并安裝好的發(fā)布證書即可。

接下來轉(zhuǎn)到Targets下你的目標文件,選擇第一個General。圖中這三塊區(qū)域需要仔細核對一下。

Identity下,Bundle Identifier不必多說,當(dāng)你的各類證書文件都申請好后,這里就不要再輕易改動了,而且很多第三方的SDK需要綁定Bundle ID,隨意的改動會導(dǎo)致SDK運行錯誤,也會讓你之前申請的描述文件失效,無法進行必要的操作。Version是版本號,和你之前網(wǎng)頁上填的一致即可。Build是你編譯的版本號,相對Version可以更細化一點,每一次最終提交的版本可能在開發(fā)階段還經(jīng)歷了幾個小版本的迭代開發(fā),最后綜合成一個大版本提交,所以在這里可以做一個迭代記錄。
Deployment Info下,第一個和剛才Project下的最低支持版本一致即可。第二個是你的App支持的設(shè)備平臺,如果你只支持其中一種就選擇對應(yīng)的選項,如果iPhone和iPad都支持,就選擇Universal。第三個Main Interface是你如果用了StoryBoard(故事版)開發(fā)的話,這里需要選定一個主故事版,如果沒用到就清空。第四個Deviece Orientation是你的App支持的設(shè)備旋轉(zhuǎn)方向,像有的App不僅支持豎屏,也支持橫屏,如果你只支持豎屏就勾選Portrait即可。最后一個是狀態(tài)欄的顯示,就是你手機屏幕頂上那個有信號和電量的條,默認Default是黑色的,選擇Light是白色。Hide status bar是問你是否隱藏狀態(tài)欄。最后一個Requires full screen,我上網(wǎng)搜了下,應(yīng)該是跟iOS9后加入的多任務(wù)功能特性有關(guān),如果不需要就勾上,具體的可以點進入鏈接了解下(iOS項目更新之升級Xcode7 & iOS9)。另外記住這里的選項的對應(yīng)App全局的,如果你只是在一兩個頁面更改狀態(tài)欄的顯示,還需要根據(jù)情況調(diào)用相關(guān)API進行設(shè)置。
最后的App Icons and Launch Images,是關(guān)于App圖標和啟動屏顯示的。App Icons Source是你的圖標資源集,Launch Image Source是你的啟動屏資源集,它們都在你的.xcassets文件夾下。在你的左側(cè)工程目錄里找到這個文件夾,可以看到下面的頁面。一般新建工程默認只有個AppIcon,可以看到右側(cè)會有很多尺寸的圖標需要上傳,我這里因為只支持iPhone,所以只顯示了iPhone所需要的圖標資源,如果你還支持iPad,需要上傳的圖標會更多,具體的尺寸要求其實挺簡單的,可以看到每一大項最下面都有一個pt數(shù),比如圖中第一個是29pt,每一個圖標框下有一個倍數(shù),1x就是29x29,2x就是58x58,然后以此類推即可,如果傳PNG記得關(guān)掉Alpha通道。

再來看一下LaunchImage。新建工程默認是沒有LaunchImage的,所以我們得手動建一個新的,在目錄空白處右鍵彈出菜單,如圖選擇即可。新建后會讓你傳不同屏幕的啟動圖,尺寸要求跟上一篇版本信息那里一樣,可以參考下那里的表格,這里不再重復(fù)。

將所有需要的圖片資源都上傳好后,回到之前General設(shè)置頁面,將這兩個Source選為你剛剛傳了圖片的兩個資源集即可。第三個Launch Screen File是如果你有用到默認建立的LaunchScreen.xib或者你自行建立的一個IB頁面來做啟動頁,就需要在這里選上,沒用到就清空。

把這些弄完后,別忘了檢查下是否打了斷點忘記去掉。

再到Edit Scheme中檢查一下。

先看看Run-Info里的Build Configuration是不是改成了Release,再看看Run-Diagnostics中的僵尸模式有沒有關(guān)。


然后再瞅瞅Archive下,Build Configuration是不是選的Release,下面的Archive Name又是不是正確的App名字。

都設(shè)置完成后,將模擬器切換到Generic iOS Device,然后Command+B進行一次編譯,當(dāng)然你選擇真機編譯也可以。

打包
這以上的一切都沒問題了,就可以最后的打包上傳了。打包的方法有多種,我們一個個來看看。
方法一(常規(guī)方法):
首先確認下你的版本是Xcode6及以上,我們在xcode頂部工具欄里選擇Product-Archive,工程會再次編譯,然后彈窗。

查看一下相關(guān)信息無誤后,選中你需要上傳的App,然后點擊右側(cè)的Export,彈出彈窗。

如圖我們選擇第一個Save for iOS App Store Deployment,點Next下一步。然后會讓你選擇開發(fā)者賬號,這個不用我多說了,用哪個賬號發(fā)布就選哪個。

選好賬號下一步,核對一下包的信息,看看簽名證書有沒有錯,描述文件有沒有錯,然后Export,保存到你找得到的位置即可。

打開生成的文件夾,里面的.ipa文件就是我們需要的包。


方法二:
我們在之前的編譯成功過后,工程目錄最底下Products索引里的.app文件就會從紅色變成黑色,表示該文件已經(jīng)存在。右鍵點選彈出菜單,選擇Show in Finder,找到文件所在。

找到后,先打開你的iTunes,切換到應(yīng)用,把你剛才找到的.app文件直接拖進去。

此時空白處就會出現(xiàn)你的App,此時右鍵點選彈出菜單,再選擇在Finder中顯示,就能找到你需要ipa包了。

方法三:
還是找到你剛才的.app文件,現(xiàn)在桌面建一個空文件夾,取名“Payload”,不要寫錯哦。然后把你的.app文件扔進去,右鍵點擊文件夾壓縮得到一個.zip的壓縮包。把壓縮包的后綴名.zip改成.ipa就行了。

方法四:
上面這些打包的方式是不是有些麻煩?別著急,有捷徑?,F(xiàn)在有一款叫做AMAppExportToIPA的Xcode插件,可以一鍵打包。
先看看怎么安裝這個插件,我們可以使用Xcode的插件管理工具--Alcatraz來安裝插件,怎么安裝這個管理工具可以看看這篇文章(使用Alcatraz來管理Xcode插件),在工具的搜索欄里搜索剛剛的插件名稱找到插件安裝即可。另一種方式就是直接下載去github上下載AMAppExportToIPA,打開其中的工程文件直接Command+B編譯一次,然后重啟Xcode即安裝成功。
插件安裝成功后,右鍵.app文件彈出菜單,選擇最下面的Export IPA即可輸出我們需要的包文件。是不是很簡單粗暴?

方法五:
用插件打包是簡單了,但前面繁瑣的設(shè)置還是很麻煩呀?有沒有全自動一條龍包干服務(wù)呢?勞動人民是智慧無窮的,而懶也是人類前進路上的催動力之一。打包,我們也可以偷偷懶,用腳本來自動打。不過這里我就不多說了,大家感興趣的可以看看這篇文章(詳解Shell腳本實現(xiàn)iOS自動化編譯打包提交)。
上傳
包打好了,我們還得上傳呀。上傳構(gòu)建版本有兩種方法,第一種是通過Xcode上傳,僅支持Xocde6以上版本,另一種是通過Application Loader來上傳。
Xcode上傳
回到打包方法一的Archive,我們在點Export輸出前,可以看到上面的藍色按鈕Upload to App Store,其實這里不用輸出IPA,直接點這個就會自動打包并上傳構(gòu)建版本了,當(dāng)提示成功時即上傳成功,可以去網(wǎng)頁端找你的構(gòu)建版本了。。。。。。
畫外音:“那你前面啰里啰嗦講辣么多打包干啥子?調(diào)戲我們老實人?”
當(dāng)然不是,因為這種上傳方式,偶爾是會出現(xiàn)些不可描述的問題的,很可能傳一次就成功,也可能怎么傳都傳不上去,哪怕你次次提示上傳成功,網(wǎng)頁端的構(gòu)建版本也仍然找不到你的寶貝兒App。那怎么辦呢?當(dāng)然先得按之前的設(shè)置流程好好檢查下有沒有什么設(shè)置錯誤,沒有的話,再試幾遍,還不行那就用第二種方法來上傳了。

Application Loader上傳

在構(gòu)建版本那里點擊Application Loader,下載最新版本并安裝到你的Mac上。然后打開后如下圖,先檢查下左上角的Apple ID是不是你的開發(fā)者賬號,然后點選“交付您的應(yīng)用程序”,在點右下角選取。

然后找到你之前打好的ipa包,這時會有彈窗讓你核對相關(guān)信息是否正確,核對無誤后點下一步就可以了,等待上傳成功提示,然后去構(gòu)建版本處就能看到你剛剛上傳的包了。


最后一切就緒,就點右上角的提交審核吧,如果點了不成功,會有提示你哪里填錯或者少填了,會用紅色標注出來,根據(jù)提示修改后即可。提交審核時還會讓你選擇App中是否用到了IDFA,即廣告標識符,有就選是,沒有就否。具體相關(guān)可以看看這篇文章(iOS提交審核:您的 App 正在使用廣告標識符)
關(guān)于審核
AppStore的審核是非常嚴格的,App的上線被拒是家常便飯的事情,所以大家心里要有所準備,也應(yīng)該合理安排提交的時間,以免耽誤了正常的發(fā)布。以往審核的時間還比較長,大約需要1周左右的時間甚至更長,今年中旬起蘋果增加了審核人力,審核速度明顯加快了不少,但不代表審核的標準就下降了,這里貼幾篇審核注意事項,大家可以好好參考下,看看自己上傳的App有沒有這些問題。
另外萬一時間非常緊迫,還能申請加急審核,可以看看這幾篇文章了解下。
結(jié)語
到這基本整個流程都仔仔細細了梳理了一遍了,沒想到居然弄出四篇來了,我也是醉醉的,不過總算可以收工交差了。這既算我自己的一些工作記錄,也希望能分享給大家少走點彎路吧,非常感謝能看到這的每一位朋友!