快速开发跨平台应用之Xamarin技术

  Xamarin 介绍

  Xamarin 是一个允许开发人员有效创建可跨 iOSAndroidWindows 应用程序的开发工具集。Xamarin免费开源的,遵循 MIT (麻省理工学院许可证)协议,在github上的地址为:https://github.com/xamarin 。官方网站为:http://xamarin.com 

  简单的来说,Xamarin 使我们可以使用 C#F#VB.NET 等语言开发原生 iOSAndroidWindows 应用程序

 

  传统移动开发流程

  开发一个传统的移动开发程序都会有一些流程。比如像打开IDE,拖一些控件,编写逻辑,然后测试,发布。这些非常简单一两个小时就可以折腾完成。 

  但是,如果要开发一些大型的,商业级的移动应用程序就需要一些专业的开发流程。比如需求分析,UX 设计,UI 设计,开发,可用性测试,性能测试,以及数以千计的设备进行测试,再使用不同部署方式完成部署。

 

创建 UX 原型时,需要考虑应用所面向的各种平台的界面指南,这一点十分重要。

 

 

 

 

iOS 使用左滑编辑,Android 使用长按弹出编辑框,不同平台的设计语言都有差异。

 

 

设备有不同的规格,平板,手机,尺寸等,设备也需要进行适配。

 

 

 

  确定了 UX 之后,下一步是创建 UI 设计。 虽然 UX 通常只是黑白原型,不过在 UI 设计阶段中会引入并最终完成颜色、图形等。 在良好的 UI 设计上花费时间是非常重要的,通常情况下,最受欢迎的应用具有专业的设计。
  与 UX 一样,务必要了解每种平台都具有自己的设计语言,因此设计良好的应用程序在每种平台上的外观可能仍有所不同。

 

 

 

  确定了 UI 之后,下一步就是开发。iOS,Android,Windows 分别需要使用不同的语言或编程方式进行实现,因此需要三种不同的开发人员,来承担特定平台的开发任务。


  测试是应用得到交付过程中一个重要的环节,一个没有经过测试的应用,质量是很难得到保障。所以尤为关键。传统开发过程中,各个平台下单元测试,集成测试,性能测试都是不同的实现细节。因此跟传统开发相似,同样也需要三种平台的测试人员角色,来承担特定平台的测试任务。

 

  Xamarin 架构

  

 

Xamarin 的核心包含以下及部分:

  xamarin-android : 提供 Android SDK的原生开发包,用.NET托管语言如C#,F#等可以进行 Android 应用程序开发。github地址为:https://github.com/xamarin/xamarin-android
  xamarin-macios : 提供 Mac,iOS,tvOS和watchOS的原生开发包,用.NET托管语言如C#,F#等可以进行 Mac,iOS,tvOS和watchOS 应用程序开发。github地址为:https://github.com/xamarin/xamarin-macios
  Xamarin.Forms : 提供完整的跨平台UI工具包。用C#可以进行完全原生的 Android,iOS 和通用Windows平台应用程序开发。github地址为:https://github.com/xamarin/Xamarin.Forms

 

  通过Xamarin 能减少应用程序总代码量

  从上图我们看到,Xamarin 通过 .NET标准库实现业务逻辑层,模型层,服务访问层,数据访问层,接口层,数据层。一套代码被不同平台引用。即:多个项目共享代码,重构操作始终更新所有受影响的引用。

 

 

 
       
据统计,大部分使用Xamarin技术开发的应用程序。共享代码占比高达75%。
 

  Xamarin Forms 将共享代码量提升为95%

  下图是 使用 Xamarin Native 和 使用 Xamarin Forms 开发同一宽App的代码对比示意图:

 

  很显然使用Xamarin Forms 技术进行跨平台应用开发,将共享代码比率提升20%,达到非常恐怖的95%。

 

  总结

使用 Xamarin 开发应用程序的优点:

 

1.所有平台都可以使用C#编写,加速开发周期、节约成本
        Xamarin 使用C#和.Net框架来为任何移动平台创建应用程序。因此,您可以重复利用多达95%的源代码加速开发周期。
Xamarin 也不需要在开发环境之间切换:您可以在 Visual Studio 中构建完全取代Android Studio , XCode 等开发环境。跨平台开发工具作为IDE的内置部分提供,无需额外费用。
同时,我们使用 Xamarin 将无需再招聘Android、iOS、MacOS,Windows Phone 等开发人员,可以在一定基础上节约人力成本。
 
2.性能接近原生
        与基于Web技术的传统混合解决方案不同,Xamarin 构建的跨平台应用程序仍然可以归类为原生应用程序。性能指标与 Android的Java(如此处所述)和 Objective-C或 Swift 的性能指标相当,可用于本机iOS应用程序开发。而且,Xamarin 的性能不断得到改进,完全符合原生开发的标准。
 
3.本地用户体验
        Xamarin 本身就是原生技术,因此通过 Xamarin 编写的 UI 能够达到跟原生一模一样的 UI 体验。
 
4.全面的硬件支持
        Xamarin 消除了所有硬件兼容性问题,使用插件和特定的API,以便在平台上使用通用设备功能。随着访问平台特定的API,Xamarin 支持与本地库链接。这可以提供更好的定制和原生级功能,而且开销很小。
 
5.开源技术与强大的企业支持
        Xamarin 于2016年2月被微软收购后,Xamarin 许可政策发生了根本性的变化。包括运行时,库和命令行工具在内的 Xamarin SDK 已经成为开放源码,并且作为Visual Studio的一部分,可以在 MIT 许可下使用。通过消除许可证的主要障碍和成本,微软为平台的进一步发展铺平了道路。另外,由微软领导,并受到Unity,JetBrains和Red Hat,.NET基金会和 Xamarin 的支持,特别是已经成为一个可靠和强大的技术堆栈。

 

使用 Xamarin 开发应用程序的缺点:

 

1.稍微延迟支持最新的平台更新
        Xamarin 是否能及时支持各个平台,完全取决于 Xamarin 开发团队。第三方工具不可能为最新的 iOS 和 Android 版本提供即时支持:实施这些更改和/或引入新的插件等需要一些时间。尽管 Xamarin 声称提供当天的支持,但仍然可能有些延误。
 
2.对开源库的访问受限
        使用 Xamarin,您只能使用平台提供的组件和一些.Net开源资源。尽管选择并不像Android和iOS移动应用程序开发那样丰富,但Xamarin组件提供了数千个自定义UI控件,各种图表,图形,主题和其他强大的功能,可以仅添加到应用程序中点击次数很少。这包括内置支付处理(如Stripe),信标和可穿戴设备集成,开箱即用推送通知服务,云存储解决方案,多媒体串流功能等等。
 
3.生态系统问题
         显然,Xamarin 社区比iOS或Android的小得多。因此,找到一个有经验的Xamarin开发人员可能是一个挑战。虽然该平台在微软的支持下正在增长。根据不同来源的信息,Xamarin社区占全球移动开发社会的10%,在中国的比例更少。尽管Xamarin工程师的数量与iOS或Android本地社区无法比较。但是有经验丰富的C#/ .Net工程师学习Xamarin的曲线是很小的。
 
4.应用程序安装包稍微会大一些
         根据其类型和复杂性,Xamarin应用程序通常比本地应用程序大(后者可能是Xamarin应用程序的一半大小)。Android的一个简单的“hello,world”应用程序最多可能需要16 MB,其中大部分应用于关联的库,内容,Mono运行时和Base Class Library(BCL)程序集。
 

 

 

 

 

 

参考资料:

[1] Xamarin官方英文文档  来源:https://docs.microsoft.com/en-us/xamarin/

 

如果你觉得本篇文章对您有帮助的话,感谢您的【推荐】。

如果你对 .NET 或 Xamarin 有兴趣的话可以关注我,我会定期的在博客分享我的学习心得。

本文地址:http://www.cnblogs.com/hexu6788/p/9916038.html

作者博客:何旭

欢迎转载,请在明显位置给出出处及链接