讀古今文學網 > iOS編程基礎:Swift、Xcode和Cocoa入門指南 > 9.11 歸檔與發佈 >

9.11 歸檔與發佈

發佈指的是將構建好的應用提供給不是你的團隊中的開發者的其他人,並在他們的設備上運行。有兩種發佈方式:

Ad Hoc發佈

將應用副本提供給有限的一些已知用戶以便他們能夠在自己特定的設備上使用並報告Bug、提出建議等。

App Store發佈

將應用提供給App Store,這樣任何人都可以下載(可能是收費的)並運行應用。

要想創建應用副本來發佈,首先需要構建應用歸檔,隨後將這個歸檔導出供Ad Hoc或App Store發佈使用。歸檔本質上是個保存好的構建。它有3個主要的目的:

發佈

歸檔作為Ad Hoc發佈或App Store發佈的基礎。

重現

每次構建時,條件都可能會發生變化,這樣生成的應用的行為就可能出現些許不同。不過歸檔會保留特定的二進制構建;通過特定歸檔的每次發佈都可以確保包含相同的二進制文件,這樣其行為就是完全一致的。這對於測試非常重要:如果Bug報告是根據從特定歸檔發佈的應用生成的,那麼你可以通過Ad Hoc發佈該歸檔,並在自己的設備上運行,這時測試的就是完全一樣的應用。

符號化

歸檔包含了一個.dSYM文件,Xcode可以通過它接收到崩潰日誌並報告代碼中的崩潰位置。這樣就可以處理來自於用戶的崩潰報告了。

下面介紹如何構建應用歸檔:

1.將項目窗口工具欄方案彈出菜單中的目標設為iOS Device。設定好之後,Product→Archive菜單項將會被禁用。無須再連接設備;你所構建的輸出並不是要在特定的設備上運行,而是要構建在某些設備上運行的歸檔。

2.如果願意,還可以編輯方案,確認發佈構建配置用於Archive動作。這是默認值,不過複查一下也沒什麼壞處。

3.選擇Product→Archive。應用會編譯並構建。歸檔本身會存儲到用戶目錄Library/Developer/Xcode/Archives下的一個日期目錄中。此外,它還會列在Xcode組織器窗口(Window→Organizer)Archives下;該窗口可能會自動打開,顯示剛才創建的歸檔。你可以在這裡添加註釋;還可以修改歸檔的名字(這並不會對應用的名字造成影響)。

要想基于歸檔進行發佈,你還需要一個發佈身份(電腦鑰匙鏈中存儲的一個私鑰和一個發佈證書)和針對該應用的發佈配置。如果進行Ad Hoc發佈與App Store發佈,那就需要針對每個發佈的單獨的發佈配置。只有開發者計劃成員才能獲得發佈身份與配置文件。

如果在組織器窗口中看到如下信息:「Distribution requires enrollment in the Apple Developer Program」,那就說明你之前並沒有註冊開發者計劃成員。現在正是時候!如果沒有開發者計劃成員,組織器窗口就像個蟑螂汽車旅館:只能登記,無法結賬。

可以像之前介紹的獲取開發身份那樣在Xcode中獲取發佈身份:在賬戶首選項窗格團隊View Details對話框中,單擊iOS Distribution右側的Create按鈕。如果不起作用,那就請手工獲取發佈證書,就像之前介紹的手工獲取開發證書一樣。

從理論上來說,在導出歸檔時,Xcode還會創建出恰當的發佈配置。不過,這個功能常常不好用;我總是通過瀏覽器在會員中心手工創建發佈配置。下面是具體做法:

1.如果是Ad Hoc發佈配置,那麼請收集應用所要運行的所有設備的UDID,然後在會員中心Devices下將其添加進去(對於App Store發佈配置,請忽略這步)。

2.確保應用在會員中心註冊過了,就像本章之前所介紹的那樣。

3.在會員中心Provisioning Profiles下,單擊「+」按鈕添加一個新的配置。在Add iOS Provisioning Profile表單中,指定一個Ad Hoc配置或App Store配置。在下一個頁面中,從彈出菜單中選擇應用。接下來,選擇發佈證書。然後(只針對Ad Hoc發佈),指定希望這個應用所運行的設備。在下一個頁面中,為配置起個名字。

請注意配置的名字,因為接下來需要在Xcode中能夠識別出這個名字!我的做法是通過單詞「Ad‐Hoc」或「AppStore」再加上應用名作為配置的名字。

4.單擊Generate生成配置。要想獲得該配置,請單擊Download,然後找到下載的配置並雙擊它在Xcode中查看,或是打開Xcode賬戶首選項窗格View Details對話框,單擊左下角的Download All按鈕讓Xcode下載它。