[Xamarin]使用VSTS建置Xamarin.iOS專案

  • 482
  • 0
  • 2016-12-06

開發完Xamarin的程式,也在模擬器上測試完後,接下來就需要將APP檔部署到站台上,以In-House的方式進行部署。這時,可透過VSTS的Task幫助我們進行建置及部屬的動作。這一篇分享如何使用VSTS建置Xamarin.iOS的專案以及如何產生IPA檔。

Mac上建立Build Agent

要讓VSTS可以幫忙建置Xamarin的iOS專案,目前無法直接使用VSTS自己的Hosted Agent,而是需要依賴macOS的設備作為Build Agent以進行Xamarin.iOS專案的Build。

建立Mac的Build Agent,可以參考微軟的官方文件-Deploy an agent on OSX

建立Provisioning Profile

如果在開發階段,只需要部署到iOS模擬器,或是部署連接到macOS設備的iPhone。那麼,Build Xamarin.iOS專案是不需要設定Provisioning Profile。但如果到了測試階段之後,需要進行實機測試,就需要設定Provisioning Profile

Provisioning Profile是Apple用來指定套用到iOS設備上的設定描述檔,裡面包括了用來簽署Source Code用的憑證、所安裝的APP的APP ID、可以使用這個APP的iOS設備等。設定Provisioning Profile需到Apple Developer站台上進行設定。如果熟XCode的話,可以使用XCode幫忙快速建立。否則,就需要一步一步手動建立,主要有幾個步驟:

  1. 建立憑證:憑證是用來簽署(Sign)Source Code用的。我使用Enterprise Program,如果要進行In-House部署,則需要建立Production憑證才行。
  2. 設定App ID:給自己的APP設定一個唯一的APP ID,並且設定要使用到的App Services
  3. 設定Provisioning Profile:有兩種Provisioning Profile-DevelopmentDistribution,要進行In-House部署,則需要建立DistributionProvisioning Profile。

建立之後,需要將憑證Provisioning Profile安裝到作為Xamarin Mac Agent的macOS設備上。這樣,在Visual Studio中設定Xamarin.iOS專案時,就可以直接選擇到該Provisioning Profile。

操作畫面及步驟可以參考[Xamarin]In-House Distribution

設定Xamarin.iOS專案屬性

設定完macOS設備上的設定後,接下來就要到Visual Studio中設定用來串連Apple設備的設定值。

設定iOS Application

開啟Xamarin.iOS專案,進入專案屬性設定視窗,選擇iOS Application頁籤。把之前在Apple Developer站台所設定的APP ID,設定到Identifier欄位中,以讓APP擁有該ID。

image

設定iOS Bundle Signing

切換到iOS Bundle Signing頁籤,這裡要設定的是要建立的APP所使用的憑證Provisioning Profile。這裡的下拉選單,會列出所連接的Mac Agent內所擁有的物件。

P02

Identity欄位用來設定要該APP的憑證,如果該設備有安裝Production憑證,就可以看到下拉選單中有Distribution(Automatic)可以選取。或是可以明確的指定要使用哪一個憑證。

P03

Provisioning profile則是用來設定使用哪一個Provisioning profile。因為Provisioning profile是一個部署描述檔,所以如果有不同的部署設定,例如是使用Ad Hoc而非In-House的方式部署,最好在名稱上可以辨識出來,以便於選擇。

P04

設定VSTS

在使用VSTS進行Continuous Integration之前,先確認已經在VSTS上建立好Git Repository以作為Xamarin專案的Source Controll之用。設定完macOS設備以及Visual Studio之後,就可以將包含Xamarin.iOS專案的整個Solution Check In到Server上。

確認自己擁有權限可以操作VSTS的Build Definition後,就可以建立一個新的Build Definition。在介面上,可以看到有Xamarin.iOS的模板可以選擇。

P05

記得Default agent queue要選取有設定macOS設備的 Agent。

P06

這個Build Definition的模板會建立底下幾個Task,會在Build Agent的機器上進行幾個動作,主要是restore Xamarin component、Build Xamarin.iOS專案、使用Xamarin Test Cloud進行測試。我的測試專案很簡單,沒有Xamarin component,也不需要使用Xamarin Test Cloud進行測試,所以可以把底下這兩個Task刪掉。

P07

因此,只剩下三個Task。Copy FilePublish Artifact這兩個Task都是在做檔案處理,比較沒問題。所以只要設定好Build Xamarin.iOS solution這一個Task,就大功告成了。

設定Xamarin.iOS solution位置

而這一個Task,最基本的動作是設定Solution檔的位置。只要按下...功能鍵,即會開啟對話視窗,帶入Git Repository的目錄供你選擇Solution檔的位置。

P08 P09

設定簽署憑證及Provisioning Profile

接下來要設定APP的簽署憑證及Provisioning Profile。這個動作,在Visual Studio中已經有做過了。所以如果剛好你的Build Agent跟Visual Studio中的Mac Agent是同一台,那麼這些欄位保持空白即可,因為可以套用直接專案的設定。但如果想要另外設定,例如Visual Studio中設定的是Development憑證,但希望VSTS在建置時使用Distribution憑證。這時,就需要在Task中設定憑證及Provisioning Profile的位置。

P10

最後,如果想要產生ipa檔,記得要把Create App Package這個選項勾選起來。這樣,當VSTS的Build執行成功後,就可以在Build Agent那台macOS設備的myagent目錄下找到建置完成的ipa檔了。

P11

有了ipa檔,就可以依據需求執行In-House部署,或是iTunes部署。這些動作都可以搭配VSTS的Release Management做到自動化。解放煩雜重複的工作,可以讓我們的工作更加的愉快。