
Mac App 開發(fā)完成后,在發(fā)布上線的最后 1km ,看似近在咫尺,實(shí)則坑坑致命,這不象代碼 Bug 可以用 Debug 來對(duì)付,最后 1km 只能用地圖來畫出路線,繞過那些坑。
本文介紹如何使用開發(fā)者帳號(hào)簽名,實(shí)現(xiàn) mac App 在 mac App Store 以及線下的兩種發(fā)布。使用開發(fā)者帳號(hào)進(jìn)行發(fā)布,可以向用戶提供更值得信賴的安全性體驗(yàn),免去了安裝更改安全級(jí)別的麻燻煩,用起來更放心。不使用開發(fā)者帳號(hào)當(dāng)然也可以發(fā)布和傳播,不在本文討論范圍之內(nèi)。
證書和許可
開發(fā)者帳號(hào)有兩種配置文件,證書和許可,這兩種文件又有各不同的若干子類型,還經(jīng)常失效需要重新配置,因此常常被搞得暈頭轉(zhuǎn)向。
先說證書:好吧,先來認(rèn)識(shí)下證書家族,以下只列出常用的幾種。
*? Developer Certificate
? ? ? -? Mac Development [1] :這個(gè)只用來開發(fā),Debug,不是正式發(fā)布的版本。
*? Production Certificate
? ? ? -? Mac App Store
? ? ? ? ? ? 。? Mac App Distribution [2] :這個(gè)用于 Xcode 自己把 .app 文件上傳到 Mac App Store 。
? ? ? ? ? ? 。Mac Installer Distribution :這個(gè)本人沒有用過,從描述上看,這是用于開發(fā)者自己把 .app 文件打包成 .pkg 文件,再用 Xcode 自帶的 App Application Loader 上傳到 Mac App Store ,這可能是有的 App 需要打包(加上許可協(xié)議等)后在 Mac App Store 發(fā)布,個(gè)人認(rèn)為,一般的 App 把 .app 文件上傳到 Mac App Store 就足夠了。
? ? ? -? Developer ID
? ? ? ? ? ? 。Developer ID Application [3]:這個(gè)用于開發(fā)者使用開發(fā)者帳號(hào)簽名,導(dǎo)出一個(gè)線下發(fā)布版本的 .app 文件,但是由于脫離了蘋果的 Mac App Store ,還是加上許可協(xié)議打包成 .pkg 文件再發(fā)布比較好,給用戶一個(gè)決定是否安裝的機(jī)會(huì)。這就要用到下面這個(gè):
? ? ? ? ? ? 。Developer ID Installer [4]:用于開發(fā)者打包,同時(shí)加上開發(fā)者帳號(hào)簽名,打包工具在下面介紹。
再來說許可,和上面的證書對(duì)應(yīng)有三種:
*? Develment
? ? ? -? Mac App Develoment [5]:這將包含 [1]
*? Distribution
? ? ? -? Mac App Store [6]:這將包含 [2]
? ? ? -? Developer ID [7]:這將包含 [3]
上面這些文件,需要按照提示下載使用。注意:
*? 生成證書的時(shí)候,需要從 Mac 電腦的鑰匙串生成一個(gè)文件并上傳。
*? 下載許可后,先安裝,然后到 Xcode->Preference->detail,找到這個(gè)許可,如果其狀態(tài)是需要下載,就點(diǎn)擊下載。
Xcode 設(shè)置
以 Xcode 8.2.1 為例,首先看在 Mac App Store 上線的設(shè)置。在 Xcode->Target->General->Signing(Release) 那里,許可 Provisioning Profile 選擇 [6] ,這時(shí)下面的 Signing Certificate 會(huì)自動(dòng)匹配(3rd Party Mac Developer Appliction)。后面的過程也捎帶講一下吧:Xcode->Toolbar->Product->Archive,編譯完成后,選中文件,首先做下 Validate,沒問題就可以 Update to App Store 了。如果找過去編譯的文件,在這里:Xcode->Window->Organizer。
在線下發(fā)布的設(shè)置是這樣的:在 Xcode->Target->General->Signing(Release) 那里,許可 Provisioning Profile 選擇 [7] ,這時(shí)下面的 Signing Certificate 會(huì)自動(dòng)匹配(Developer ID Application)。編譯后的過程有所不同:編譯完成后,選中文件 Export,這時(shí) Xcode 會(huì)詢問導(dǎo)出方式,共有四種,選第二種:Export a Develepor-ID Singned Application,保存?zhèn)溆?[8]。
簽名打包
線下發(fā)布才需要簽名打包。其機(jī)制是用證書 [4] 對(duì) .pkg 文件簽名。曾經(jīng)找了好幾個(gè)第三方的簽名打包工具,都不能用 [4] 簽名,最后還是找到了蘋果自家的工具:PakageMaker 。這個(gè)工具隱藏特別深,雖然是一個(gè) 2012 年發(fā)布的一個(gè)工具,但仍然不可替代。傳送門:
https://download.developer.apple.com/Developer_Tools/auxiliary_tools_for_xcode__late_july_2012/xcode44auxtools6938114a.dmg
在 PakageMaker 里,選擇需要打包的文件 [8],并編輯其他元素,這個(gè)就不再細(xì)說了。
在 PakageMaker->Project->Edit Certificate 那里,可以從鑰匙串中選取 [4] 簽名。簽名打包的 .pkg 文件,在其右上角可以查看開發(fā)者的簽名信息。
補(bǔ)充:文件 [8] 一定要用英文名,不要用中文,否則打包后安裝時(shí),有時(shí)會(huì)出現(xiàn)錯(cuò)誤:”安裝器無法安裝該軟件,因?yàn)檎也坏揭惭b的軟件”。