開發完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幫忙快速建立。否則,就需要一步一步手動建立,主要有幾個步驟:
- 建立憑證:憑證是用來簽署(Sign)Source Code用的。我使用Enterprise Program,如果要進行In-House部署,則需要建立Production憑證才行。
- 設定App ID:給自己的APP設定一個唯一的APP ID,並且設定要使用到的App Services。
- 設定Provisioning Profile:有兩種Provisioning Profile-Development 及 Distribution,要進行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。
設定iOS Bundle Signing
切換到iOS Bundle Signing
頁籤,這裡要設定的是要建立的APP所使用的憑證及Provisioning Profile。這裡的下拉選單,會列出所連接的Mac Agent內所擁有的物件。
Identity
欄位用來設定要該APP的憑證,如果該設備有安裝Production憑證,就可以看到下拉選單中有Distribution(Automatic)
可以選取。或是可以明確的指定要使用哪一個憑證。
Provisioning profile
則是用來設定使用哪一個Provisioning profile。因為Provisioning profile是一個部署描述檔,所以如果有不同的部署設定,例如是使用Ad Hoc而非In-House的方式部署,最好在名稱上可以辨識出來,以便於選擇。
設定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的模板可以選擇。
記得Default agent queue要選取有設定macOS設備的 Agent。
這個Build Definition的模板會建立底下幾個Task,會在Build Agent的機器上進行幾個動作,主要是restore Xamarin component、Build Xamarin.iOS專案、使用Xamarin Test Cloud進行測試。我的測試專案很簡單,沒有Xamarin component,也不需要使用Xamarin Test Cloud進行測試,所以可以把底下這兩個Task刪掉。
因此,只剩下三個Task。Copy File
及Publish Artifact
這兩個Task都是在做檔案處理,比較沒問題。所以只要設定好Build Xamarin.iOS solution
這一個Task,就大功告成了。
設定Xamarin.iOS solution位置
而這一個Task,最基本的動作是設定Solution檔
的位置。只要按下...
功能鍵,即會開啟對話視窗,帶入Git Repository的目錄供你選擇Solution檔
的位置。
設定簽署憑證及Provisioning Profile
接下來要設定APP的簽署憑證及Provisioning Profile。這個動作,在Visual Studio中已經有做過了。所以如果剛好你的Build Agent跟Visual Studio中的Mac Agent是同一台,那麼這些欄位保持空白即可,因為可以套用直接專案的設定。但如果想要另外設定,例如Visual Studio中設定的是Development憑證,但希望VSTS在建置時使用Distribution憑證。這時,就需要在Task中設定憑證及Provisioning Profile的位置。
最後,如果想要產生ipa檔
,記得要把Create App Package這個選項勾選起來。這樣,當VSTS的Build執行成功後,就可以在Build Agent那台macOS設備的myagent目錄
下找到建置完成的ipa檔
了。
有了ipa檔
,就可以依據需求執行In-House部署,或是iTunes部署。這些動作都可以搭配VSTS的Release Management做到自動化。解放煩雜重複的工作,可以讓我們的工作更加的愉快。