uncategorized

VSTS 整合Visual Studio Mobile Center

要在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 AnalyticsMobile 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用的語言,這裡就選擇iOSXamarin,所以說,如果你要產生不同平台的App,就要建立多個APP,這部分還算合理,畢竟不是所有人都是用Xamarin開發,可以跨平台的

建立完成之後,就會進入下面的管理介面

一進入後,會請你在Xamarin Project安裝相關套件,官網說是找到Mobile Center AnalyticsMobile Center Crashes這兩個套件,不過,實際上卻是找到是這兩名稱的套件

找到後安裝起來,說明文件上面有分XamarinXamarin.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功能的

建置成功則在下載地方,還可以下載三種類型分別是buildsymbolslogs的檔案,其中,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方式進行