01
Jun
新版App包裝製作流程(上)
Facebook

App 可以跑在兩種地方。想要它跑在iOS 模擬器上,可說是再容易不過了,就像走在平坦的康莊大道般,只要輕鬆地按下Xcode 裡長得像播放音樂鍵的Run 按鈕。但是,若想要它跑在實體機器上,就如同走在一條崎嶇且迷霧彌漫的道路,得經歷一段繁瑣的App包裝材料生成,取得和設定旅程。

撰文:彼得潘

 

從前這段旅程得經由連到Apple 的官方開發網站一步步操作,走錯一步,可能就得再花倍數的時間找尋出錯的緣由才得以繼續。幸運地,新版的網頁和Xcode如今大幅改善了原本複雜的流程,現在不管是從網頁還是Xcode,我們都可以更容易地包裝製作出得以在實機活蹦亂跳運行的App! 

包裝實機運行App 的三種方式: 開發模式、測試模式 & 上架模式

當我們包裝禮物送禮時,我們會依對象選擇不同的包裝方式,比方送給情人的貼心地加朵玫瑰花,送給情敵的狠心地加株仙人掌。同樣的,當我們包裝App 時,也會 依據我們的用途和目標,從開發模式,測試模式和上架模式選擇一種包裝,以下為此三種模式的PK 比較表:

 

開發模式

測試模式

上架模式

App Store 上架

NO

NO

YES

下載方式

以USB線連接Mac和iDevice,從Xcode點選Run安裝至iDevice

方法一:將App寄送給測試者, 測試者將App存入iTunes,經由iTunes同步

方法二:將App放在某個主機上,測試者從iDevice點選App連結直接下載到桌面

從App Store下載

安裝對象

連接到Mac的iDevice,此iDevice 必須先註冊,綁到開發帳號下, 才能安裝此帳號開發的App。一個開發帳號最多可以註冊100台機器。

測試者的iDevice。同樣的,測試者的機器也要註冊才能安裝開發帳號開發的App。因此測試者的機器也同樣佔據100台機器的寶貴名額。

任何人的iDevice。

審核

無,只要做為開發者的自己喜歡,沒什麼不可以的

無,只要做為開發者的自己喜歡,沒什麼不可以的

愛之深,責之切的Apple評審嚴格把關

certicate

Development Certicate

Distribution Certicate

Distribution Certicate

provisioning prole

Development 

provisioning prole

Ad Hoc版的Distribution 

provisioning prole

App Store版的

Distribution provisioning prole

值得注意的一點,從剛剛的PK表裡,我們看到不同模式時採 用的certicate和provisioning prole也將有所差異。certicate和provisioningprole是我們包裝App關鍵的兩大材料,之後將有更詳細的介紹。

 

iOS 開發網站上的Certicates、 Identiers & Proles 頁面

所有關於包裝製作App 需要的材料和設定,都可經由官方的Certicates, Identiers & Prolest 網 頁來操作和查詢。然而如此神秘的頁面就像國王的新衣,並不是人人都看得見的。不需要智商180 才能看得到,只要你有一點點的錢,一年付99 美金,成為擁有上架資格的開發者,即可看到隱藏的Certicates、Identiers & Proles 頁面。進入此頁面的入口有以下2 個地方: 

1. 入口一

登入iOS Dev Center(http://developer.apple.com/ devcenter/ios),點選右邊iOS Developer Program 區塊裡的Certicates、 Identiers & Proles。

2. 入口二

登入Member Center (https://developer.apple.com/ membercenter),點選Certicates、Identiers & Proles。

好不容易, 狠心刷了卡, 付了錢, 終於看到Certicates、Identiers & Proles 的廬山真面目: 

讓我們將注意力放在主角iOS Apps 區塊上。於此區塊我們可以看到4 個藍色的資料夾,分別對應到包裝生成App 需要設定的4 大天王,Certicates、Identiers、 Devices 以及Provisioning Proles。

 

包裝製作App 的設定步驟四部曲

當我們製作開發模式和測試模式的App 時,想要讓它可以順利地在實機運行,需要先經過相關的設定步驟四部曲。這四部曲的順序十分好記,保證忘不了。只要照著前面圖片裡藍色資料夾由上而下的順序,依序點選進入相關的設定頁面完成設定即可。

1. 生成和取得certicate(點選 Certicates)
​2. 設定App (點選Identiers)
​3. 設定Device(點選Devices)
4. 生成和取得Provisioning Prole ( 點選Provisioning  Proles) 

這四個步驟的目的和相關操作說明,我們將在之後一個個依序介紹。另外若是上架模式,其實會更簡單些,簡化為三個步驟,略過設定Device 的步驟。這是因為上架模式生成的App 可以裝在任何人的iDevice 上,不像開發測試和上架模式生成的App 因為只能裝在開發帳號註冊的100 台iDevice,因此需要額外進行註冊機器的動作。 

什麼都沒有的空無初始狀態

一開始我們還沒有生成任何的certicate,還沒有建立任何的App,還沒有註冊任何的iDevice,還沒有生成任何的prole。所以此時不管是點選Certicates、Identiers、Devices 或Provisioning Proles, 都會看到一片空白的頁面。比方點選Certicates 後,將看到如圖所示,一個certicate 都沒有的狀態(0 Certicates Total)。 

個人帳號和公司帳號

前面提到唯有付費會員才能看到Certicates、dentiers & Proles 頁面。然而付費會員其實又分為個人和公司帳號兩種。公司帳號可以給予公司成員登入和開發App 的權限,並可設定成員不同的權限,所以當成員進行App的包裝製作流程時,將和個人帳號間有著些許的差異。對個人帳號來說,由於只能以唯一的帳號登入,而此帳號的權限也是萬能的老闆權限。(因為自己就是老闆),所以包裝製作App的流程會單純些,不用區分成各種不同的權限情況來討論。

因此接下來我們將以個人帳號下的開發模式為例,一步一腳印地完成設定步驟四部曲,產生一個可以裝到實機上體驗,秀給女朋友看的App。(測試模式和上架模式的製作過程 大同 小異,我們將在開發模式的製作過程中再做補充說明。公司帳號的部分也會於適當的時機補充說明。) 

certicate介紹

certicate,中文翻做憑證。有了憑證,才能證明我們具有合法生產App的資格。也唯有帶有合法憑證的App,才能順利安裝於實機上。certicate其實又分成很多種,各有不同的用途。當我們從剛剛的網頁點選Certicates,進入certicate的設定頁面,點選右上角的+按鈕來新增certicate,即可於新增頁面看到五花八門的certicate類型任君選擇: 

從圖中我們可看到Certicate分成Development和Distribution兩大類,然後在其中又再做細分。不過此處列出的certicate並不全然都是給App用的,有些certicat是針對某種特別的功能,比方針對推播功能Apple Push Notication產生的certicate是給後台Server用的。因此在這裡,我們可以先把目光集中在Development下的iOS App Development和Distribution下的App Store and Ad Hoc,前者是給開發模式的App,後者則是給測試(Ad Hoc)和上架(App Store)模式的App。

雖然我們可以經由網頁生成certicate,但是現在新版的Xcode早非昔日的吳下阿蒙。如今除了App還是必須從網頁建立外,其餘的三項設定,certicate、device和prole,大部分都可從Xcode裡更快速,更方便地完成設定,讓我們不用在麻煩地於Xcode和瀏覽器間暈頭轉向地切換,所有關於App的大小事都在Xcode裡一網打盡。接下來就讓我們從Xcode裡開始我們的第一步,生成certicate吧!

從Xcode新增和取得certicate

假設我們的開發帳號下還沒有任何的certicate,這是我們第一次生成certicate。

1. 啟動Xcode,打開Organizer視窗。(或是經由Xcode menu的Window -> Organizer)

2. 切換到Devices -> Provisioning Proles分頁,點擊右下角的Refresh。

只要點擊Refresh,Xcode將幫助我們完成繁瑣的certicate生成流程。

3. 輸入開發者帳號,密碼登入

點擊Refresh後,將出現登入視窗。我們必須登入後,Xcode才知道要在哪一個帳號下生成certicate。從這裡我們也可以了解一台Mac可以安裝多個開發帳號製作App所需的相關材料(如certicate)。像彼得潘為了賺錢,常常會同時跟不同的老闆合作。每一個老闆都有各自的開發帳號,因此彼得潘小小的Mac上必須要能安裝各個帳號的certicate,如此才能開發不同帳號下的App。

4.詢問是否要生成Development certicate

如果此帳號下還沒有development certicate,將詢問是否發送生成development certicate的請求(request)。當我們按下右下角的SubmitRequest發送請求,成功生成certicate後,certicate將自動被下載安裝到我們的Mac上。

5. 詢問是否要生成Distribution certicate

如果此帳號下還沒有distribution certicate,將詢問是否發送生成distribution certicate的請求(request)。

6. 詢問是否要輸出Developer Prole

剛剛生成development certicate和distribution certicate的第4和第5步驟,只有在帳號下還沒有certicate時會觸發。若是帳號下已經有certicate,點選Refresh將從網站下載取得certicate。比方彼得潘的朋友溫蒂也想開發App,當她從她的Mac啟動Xcode,點選Refresh按鈕後,將直接地取得經由彼得潘Mac生成的certicate。但是,她取得的certicate並不是完整的,若是直接用來包裝App將產生天大的問題。這是因為一個完整的certicate同時包含了public key和private key,然而為了安全性的考量,我們經由網站下載的certicate只包含了public key。

所以要如何取得private key呢?private key其實就藏在當初彼得潘生成certicate的Mac裡。彼得潘的Mac可是片刻不離身,夠安全了吧。但是這樣一來不就只能在彼得潘的Mac包裝App了?難不成要溫蒂天天陪在彼得潘身邊,一起用同一台Mac開發App?雖然這樣甜蜜的倆人世界很幸福,但是開發App的效率實在不佳。為了提升效率,彼得潘還是要讓溫蒂的Mac也能開發包裝App。

解法其實就藏在此時跳出的Developer Prole輸出詢問視窗。 當我們點選Export,輸出的Developer Prole將包含此台Mac上所擁有的certicate和provisioning prole,而這裡的certicate可是包含private key的完整certicate。因此彼得潘只要將輸出的.developerprole檔寄給溫蒂,當溫蒂雙擊檔案進 行安裝後,即可讓她的Mac擁有包裝製作App需要的環境(也就是包裝App關鍵的兩大材料certicate和prole)。

當我們輸出Developer prole時,必須輸入一個加密的密碼。到時候對方安裝時,得輸入此處設定的密碼才能順利安裝。

7. certicate 清單

下一期的專欄。我們將繼續這趟App包裝製作的奇幻旅程,關於Identiers,Devices以及Provisioning Proles的相關設定,我們下回分曉。