要在VSTS建置一個Xamarin開發出來的App,只要在Build Process將相關要建置的Task設定好基本上就可以產生出一個APP,若是要建置出iOS用的APP,就必須要在建置的Agent下一番功夫,例如使用Local agent或是第三方的Agent像是MacinCloud幫忙建置Xamarin專案,用Local agent則還是必須準備一台MAC在上面安裝Build Agent,似乎也不是很方便,第三方服務在付費方式上會有些”麻煩”。
去年就在關注Visual Studio Mobile Center發展(雖然現在依舊是Preview),當時它只能綁定Github或是其他開源的版控平台上面的程式,對於愛用VSTS的人來會是一個遺憾,不過,在2017 Build大會前一個月,Mobile Center宣布可以綁定VSTS上Repositories,讓建置直接透過Mobile Center做建置APP,讓整個CI又更方便了,因此,來把VSTS + Mobile Center串起來吧
準備事項
使用Mobile Center前,須注意下面幾點事項,這樣才會會讓整個Build
流程順暢一點
- 安裝
Mobile Center Analytics
和Mobile Center Crashes
- 更新
Xamarin
套件到最新版本 - 移除Hockeyapp套件
- Nuget.config要放在專案的Root位置,就是跟
.sln
同一層
另外一個重要事情,就是記住要自己先在Local端可以Build成功阿,不然放上去也不會成功的
Visual Studio Mobile Center Build
話說在前頭,因為在VSTS中習慣自己在Build時候,去組合自己想要的Task
流程和設定,但是,若是使用Mobile Center時候,這一部分是完全被省掉,講好聽一點就是省掉設定的麻煩,不好聽就是沒有控制權,若是中間有甚麼意外或是非標準化流程,我們自己也無法做更改。所以,目前建議還是依照自己情境來決定,是否要透過Mobile Center座建置這件事情
建立一個平台的APP專案
進入Mobile Center時候,選擇Add New app
,建立一個新的App,這部分感覺有點類似VSTS的Repositories,一開始會要你設定要產生哪一個平台的App,和你開發App用的語言,這裡就選擇iOS
和Xamarin
,所以說,如果你要產生不同平台的App,就要建立多個APP,這部分還算合理,畢竟不是所有人都是用Xamarin開發,可以跨平台的
建立完成之後,就會進入下面的管理介面
一進入後,會請你在Xamarin Project安裝相關套件,官網說是找到Mobile Center Analytics
和Mobile Center Crashes
這兩個套件,不過,實際上卻是找到是這兩名稱的套件
找到後安裝起來,說明文件上面有分Xamarin
和Xamarin.Form
兩種設定SDK用法,不過,雖然本身是使用Xamarin.Form
開發,但是,還是可以使用Xamarin
方式在Xamarin.ios中加入SDK,而這樣做法只是針對單一平台加入SDK,相關程式碼加入之後,就是開始設定Mobile Center的Build,因為要讓Mobile Center和VSTS的Repositories結合,所以,這裡當然只能選VSTS囉
一般來說會希望你Mobile Center的帳號與登入VSTS帳號的登入帳號是相同,這樣會比較單純,如果是這樣情境,會看到下面資訊,Mobile Center會要VSTS授權給它讀取VSTS的Repositories
綁定之後,就可以看到VSTS所有的Repositories,此時,只要選定你要的Build的Repositorie進行綁定就可以,而且一旦綁定後,就可以看到Repositorie內所有的Branch,在Mobile Center設定Definition方式是選定你要Build的Branch,然後,再做下一步的設定
來Build一個Branch
這邊設定我只能說,真是走極簡風格阿,跟VSTS比較起來,Mobile Center所需要的設定基本都是可辨識的
如果要設定Device Build
就必須上傳該App的Provisioning Profile
和.P12 File
,當然這是要建置iOS APP的憑證,若是沒有上傳這些憑證,只能使用Simulator build
建置APP,而使用此模式,就不能發布到手機上使用
設定好之後或是每次修改設定後,只要一儲存,它就會開始Build了,除非這邊選擇手動觸發,另外,若是選定自動Build,當Code被Check in到VSTS後,也會開始自動建置。這介面上則是列出每次Build的狀況,以及要手動觸發建置的按鈕
每個狀態內,會顯示詳細的build資訊,還有每次Build的時間,不過,這邊有一點就是關於Build時間,Mobile Center背後其實是會啟動一個VM去做建置,所以,如果今天碰到是資源比較缺乏的,就會向下圖一樣,發生非常長的建置時間
當建置完成時候,會出現Download
按鈕,若是建置失敗,只能建置過程的Log
如果建置失敗是不會有Distribute
功能的
建置成功則在下載地方,還可以下載三種類型分別是build
、symbols
和logs
的檔案,其中,Build裡面就是編譯好的ipa
檔案
另外,從下載的Log還可以看得出來,Mobile Center在簡單的背後它設定了那些Task流程,如果想要知道Mobile Center背後怎樣建置你的APP,可以直接看log就可以清楚了解
Distribute APP
當你Build好之後,到Distribute
就看到你剛剛Build的APP,還有建置版本號,也可以在這邊下載APP使用
結論
Mobile Center把Build程序簡單化,也讓微軟開發人員不一定要有MAC才可以建置iOS APP,不過,不知道是不是還在Preview,所以,很多機制都尚未完善,要真正導入到企業上用可能還有一段路要走,就拿現在還在運行的HockeyApp來說(未來可能就消失),個人覺得不足地方有幾點:
- 沒有類似HockeyApp一樣的Store,列出可以下載的APP,這樣可以減省企業自行建置Store的時間
- 因為是自動設定好Task,如果要切換Bundle Identifier Name,沒有辦法透過Merage Branch方式進行