【C#】用VS2015中Xamarin开发跨平台APP的感受

       由于新项目需要开发APP,团队内部都是C#开发工程师,还需要考虑安卓和iOS两个版本,被安排学习VS2015里面的Xamarin.Froms开发。想起微软刚收购Xamarin后,大肆宣传Xamarin跨平台开发的牛逼,自己本行又是C#,也就一头扎进去了。毕竟,去年刚发布时,Xamarin还要收费,价格对于个人开发者来说还不便宜。挺坑的,想来没几个人用过,或者会用收费的IDE吧,当时还因此自学原生安卓去了,好在时至今日免费了。学习一两个月Xamarin时间后,谈谈对微软这个跨平台开发一点个人看法吧。

安装:

       Xamarin被微软收购后,集成到了VS2015中,不过也不够彻底,不会像WCF、 Silverlight一样直接安装完VS后就存在于VS当中。Xamarin需要另外安装,当然,微软的VS里面会有相应提示,以便引导你安装完毕。但你会遇到一些问题,比如谷歌服务器无法访问导致下载不了SDK,这个可以通过国内镜像地址来解决,我记得第一次安装时,还是花了15元翻出去下载后安装的,后面提示30天到期要收费,爷表示不能忍,果断卸了!另外,如果你不懂安卓,会很纳闷,毕竟VS一贯高度集成的安装体验,只需要你点击下一步就一切OK,等待完成安装了,这种体验在这里荡然无存,你得配置java环境变量,sdk,ndk路径等等,初次使用很是纠结。VS尽力了,毕竟不是自己的玩意儿,不配置这些,它怎么间接调用安卓需要的java环境来间接编译代码呢。所以初次配置安装环境确实没VS来的那么好用了。


安装占用情况

       安装完之后,有些刚开始接触的人把sdk全部下下来,加上VS2015自身占用的空间,C盘压力山大。而且,你会发现打开VS2015也比以前慢了不少,不及VS2012的急速体验。


说说开发中的一些情况吧:


      (1)xamarin断点调试有时进不去不好调:非常神奇,虽然概率也不高,不过非常影响你的开发心态,后面也就淡定了。

      (2)xaml界面代码看不到界面:这里是指Xamarin.Froms,用Xamarin单独开发安卓或者iOS,即Xamarin.Android和Xamarin.iOS是可以看到设计界面的,不过加载速度跟视图美观度比AS和Xcode是要差一些。单独的开发大致相当于换了个语法,其它跟原生差不多(先保留,iOS还未试过)。因为考虑到跨平台原因,Xamarin.Froms是用的xaml代替安卓xml绘制界面,有点像手机版的wpf。没有视图引擎,所见即所得的开发就不行了,你得运行起来才看得到效果,当然,熟练之后,直接写界面代码即可知道实现效果,跟你用熟了html不需要看视图一样。对于初学者,这点很是蛋疼。(更新,最新版的Xamarin.Froms可以看到界面了,所见即所得)

      (3)有些控件得自己重写:对,常规的如label、editbox都有,但checkbox这种比较常用的还需要重写。当然输入框控件为了在iOS和安卓保持统一样式,虽用不着重写实现逻辑,但需要重写下样式,毕竟两个系统对输入框的默认样式不同。

      (4)写页面跳转麻烦:Xamarin.Froms的页面跳转是指定当前显示页为哪个页面,这种方式没有页面堆栈,所以你按返回键就直接退出程序了。要实现像安卓原生那样,需要你自己写代码实现页面栈。当然,基于其衍生的框架或许有此功能。目前涉及未深,有知情者烦请告知一二。

      (5)压缩包无形中变大了:会的,他需要多安装两个东西,mono这些以便底层环境的转换,压缩包会大几M。

      (6)执行效率慢:很正常,毕竟要多个转换步骤,编译器编译会慢一点,因为在安装app之前还需要安装mono。实测我AS编译只有十几秒,xamarin.from开发的话一般需要1分钟左右,汗。。。 真机执行情况的话,安卓比原生慢一点点,iOS据微软说跟原生速度是一样的,这个涉及到底层代码执行机制问题。

      (7)支持库:无论是基于其的mvvmlight还是mvvmcross开发,跟原生差别比较大,最主要的是支持库少,你不可能全部自己写吧。当然,对牛逼的人来说这是乐趣。

      (8)错误提示:有事会出现编译失败,但控制台输出却显示错误0,然后过一会儿编译又成功了的情况发生,或者重启电脑,又可以编译通过了。还出现这种情况,代码编辑区中部分代码下面显示红线报错,编译还是能通过的,希望你对自己代码自信点。自己也遇到过奇怪的报错,提示你修改什么配置,但这个配置只有在AS里面才能修改,VS根本这个选项都没有。

      (9)新特性难以及时支持:当安卓或者ios得到新的大更新时,Xamarin不一定得到及时更新,官方说的会自动同步更新,但实际。。。更新了不敢用啊,亲测更新了最新版,编译老是出问题,最后卸了装回了之前版本,原因可能还是在于各个IDE之间的不协调。

      (10)资料:Xamarin的支持库,资料都不较少,百度查找的解决办法少之又少,有些还是国外开发者的英文论坛,解决问题的难度比原生大了不少,有可能你是国内第一个遇到此问题的人。书籍?没几本,基本都是英文的,国内还没翻译版本出现。


       当然,Xamarin也有优势的,比如跨平台,能够做到业务逻辑编写一次,各个平台都能调用。另外就是对于长期进行C#开发的人来说,语言上比较习惯。但对于直接调用服务端接口返回json结果的方式,实际没什么用,这部分逻辑都交给服务端了,还需要你将这部分逻辑代码,包含进各个不同系统的手机内部使用干啥。


       总结:C#开发人员想靠Xamarin切入到移动APP开发有点尴尬,我这么说主要是基于初学者来说的,熟手无所谓了。有些高级特性难以实现,即使你实现的话,还是要学习原生安卓或者iOS开发,了解里面的机制。简单的APP可以用Xamarin,跨平台嘛,原先的C#人员也便于维护,不用再招人。初学者不考虑团队上的因素,建议学新的语言,你学安卓的话,开始上手花的时间多点,而用Xamarin是开始花的时间少,后面你花的时间可就多了去了。

       上手不久,欢迎留言提供你的看法!后续博文,我也将继续更新Xmarin学习中的一点个人体会。

你可能感兴趣的:(C#,Android)