开发完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做到自动化。解放烦杂重复的工作,可以让我们的工作更加的愉快。
原文:大专栏 [Xamarin]使用VSTS建置Xamarin.iOS项目