Xamarin介绍

  郑重声明:

  本文非Xamarin使用详解,也没什么有用的干货,只是给不知道Xamarin到底是什么的大家提供一点点微不足道的小介绍,看完以后啥收获都没有也不是没可能的(*/ω\*)。so......ε=ε=ε=ε=ε=┌(つ??ω??)つ(飞速逃离现场中......)

  正文:

  前段时间去参加了一个微软的Xamarin培训,刚好最近准备要在公司给大家做分享,这里先把我准备的内容写出来分享一下好了。

  开始之前,和大家分享一句来自Xamarin官网首页的一句话:

  图片上的中文是我自己翻译的,意思可能不是特别到位,但是从英文原文来看还是能够感受到Xamarin自己对于它所提供的跨平台移动开发解决方案还是十分自信的。而且这句话也能给尚不了解Xamarin到底是什么的人一个很直观的介绍——我们(Xamarin)是一个可以帮助你开发功能强大的移动应用的工具,并且你在移动开发过程中所需要用到的东西我们可都给你准备好了~

  下面就从Xamarin的基本情况开始给大家做一个简要介绍吧:

一、Xamarin简介

  • 2011年5月16日成立,2016年2月24日被微软正式收购。

  非常年轻的公司,成立不到五年的时间就被微软这个巨头给收购了。主要是Xamarin背后的商业价值确实很强大,并且它是用C#来进行跨平台移动开发的。微软亲儿子无误了~

  • 是Mono项目的一个分支。

  基于.NET的跨平台实现的一个开源项目,Xamarin也正是由Mono项目中非常积极活跃的一批工程师所创立的。(不过我猜测多半是因为Mono作为开源项目实在是不赚钱,以及虽然做的已经很大很红火了,但维护什么的还是只能靠开源社区的活跃分子们无偿维护,久而久之自然是比不上可以全身心投入效果来的好了。所以里面最活跃的一批工程师干脆把Mono里移动开发这一块专门拿出来做成了商业项目,果不其然,效果还是很显著的嘛。——P.S以上均为个人臆测,不代表Mono项目参与者的真实想法!如果Xamarin创始人们顺着网线摸过来了我是不会负责的!─=≡Σ(((つ??ω??)つε=ε=ε=┌(;′???)┘)

  • 使得C#程序员开发原生的Android、iOS应用成为可能。

  Windows应用就更不用说了,毕竟微软的亲儿子。

  • 一套代码逻辑,三种平台实现:Android、iOS、Windows。

  这点看上去和上面的感觉上有点重复,其实还是有差距的。上面那个只是说明了C#程序员不用去专门学Java或者Objective-C也能写Android和iOS应用,但是这里其实是想说明如果你想同时开发一个三个平台都能用的App,使用Xamarin的话就不需要Android写一遍代码,iOS写一遍代码然后到了Windows那边再写一遍代码那么麻烦了。不过这么一解释感觉好像还是有点多余,跨平台开发本来就是为了解决重复写代码的问题嘛……

  • 强大的Xamarin Platform:Xamarin Studio,Xamarin.Forms,Xamarin for Visual Studio,Xamarin Test Cloud......

  这个就不用过多解释了,Xamarin首页那句霸气的"Everything you need to deliver great mobile apps."依据就是从这来的,从开发、测试到发布,Xamarin样样都有~

二、Xamarin UI开发简介

  UI开发一直都是App开发中比较重要的一部分。既然Xamarin声称它能做到「原生开发,那就简单介绍一下它在UI开发方面的两种途径吧:

  1.Xamarin Native Approach

  说实话这种UI开发模式对于没有接触过Android或者iOS开发的C#程序员来说实在有点不友好,因为从名字上来说就能感受到了:Native,N-a-t-i-v-e!说的这么理直气壮也是让人气不打一处来哦?(P.S. 虽然不是Naive,但还是有种被嘲讽了的感觉。)就是说你想实现“原生”UI开发是吗?那就老老实实写人家原生的UI代码吧!虽然很可气,不过相对PhoneGap,Sencha之类的基于HTML5,JavaScript以及CSS的跨平台开发方案来说,Xamarin好歹是提供了一种可以使用Android和iOS原生UI控件的可能。有Android或者iOS开发基础的人选择这种方式来开发UI自然更得心应手;没有基础但是有上进心并且很勤奋的孩纸们也可以趁这个机会去学点Android和iOS的UI开发知识,反正多学一点东西总归是有好处的嘛。

  至于那些既没有移动开发基础,又不勤奋的懒癌患者们,(没错,我就是这群人当中的佼佼者!(? ̄ ?  ̄?))只能说Xamarin大概是算到了我们这群人的存在,所以提供了下面的这种开发方式:

  2.Xamarin.Forms Approach

  这种方式对C#程序员就很友好啦,在写界面的时候大家只需要调用Xamarin.Forms里已经封装好的UI组件就可以了,编译阶段Xamarin会根据代码自动生成相应的原生UI组件的。当然啦,Xamarin.Forms还做不到100%提供Android和iOS中所有的UI控件的,不过对于绝大多数应用场景都是够用的了。如果实在没有大家也可以发挥自己的聪明才智稍加组合一下,毕竟很多hacks就是在这种贫穷的现实中创造出来的嘛。

  下面是一张Xamarin Native Approach和Xamarin.Forms的代码共享程度对比:

  

  从上图可以明显感受到,如果使用Xamarin Native的方式来开发的话,共享代码基本上就只剩后台逻辑代码了,剩余大约1/4的代码还是个平台相关的代码。(看这么有规律和数字这么整的数据也能猜到对于这种数据的来源不能太苛刻~仅供直观感受一下两者之间的代码量差距。)如果使用Xamarin.Forms开发的话,那几乎没有什么平台相关的代码了。

  总而言之,从个性化角度来说,Xamarin Native的方式要好一些;从维护角度来说,Xamarin.Forms维护起来更为轻松些。

三、Xamarin API简介

  其实这部分要认真介绍起来还是蛮费劲的,所以我就直接甩张图给你们感受一下好了(懒癌发作中……(*/ω\*)):

  这里要说明的其实就是Xamarin可以调用到Andriod和iOS中的所有API。实现所谓的100%原生API。这一点相较于PhoneGap之类的跨平台移动开发方案来说确实要优秀很多,因为每次Android或者iOS发布新功能的时候,就不用苦等经过封装后才能调用的API了。并且开发出来的App使用体验上接近原生开发的应用效率。

  举颗栗子(栗子来源于培训老师。),iOS和Android刚推出健康功能里的记录用户每日行走步数功能时,使用PhoneGap等跨平台开发技术所开发的应用是没法在第一时间就能调用到这个功能的API的,他们只能等PhoneGap根据Andriod和iOS所提供的原生API封装好可被自己用户调用的API后,用户们才能调用到该功能的接口实现相应功能。所以对于调用非原生API开发的应用来说,其在功能更新方面会存在一定的滞后性。Xamarin傲娇的表示他们可以做到Andriod或iOS发布新功能API的当天,Xamarin的开发者也能调用到这些API们!ヽ( ̄▽ ̄)?

  能够调用原生API的另一好处是,对于一些特殊的功能,譬如iOS的3D Touch功能之类的,Xamarin也能保障其开发者可以访问到,而大多数基于H5+JS+CSS的跨平台开发技术对于这些特殊功能的支持可能就没有那么到位了。(个人理解,这里如果有说的不对的地方敬请指正!)

四、Xamarin底层技术简介

  这一小节推荐大家去阅读《Xamarin技术全解析》一文,介绍的非常详细。作者一看就知道和我这种重度懒癌患者不一样,因为我接下来又要甩图了……

  等等,甩图之前再说一下Xamarin三大底层技术吧:MonoBinding(绑定)以及P/Invoke(平台调用)

  好,下面请大家欣赏一下Xamarin.Andriod实现原理图:

  怎么样?这图是不是看着不是很好懂?(已经看懂的就略过我接下来的内容吧,怕看完后反而不懂了(*/ω\*)......)其实上面推荐的那篇文章里有很好的介绍,我就简单复述(复制)一下吧。

  我们用C#代码写的Andriod应用在运行的时候其实是在Mono虚拟机中运行的,而Mono虚拟机又是寄宿在ART(也就是Andriod虚拟机Dalvik)中运行的,所以ART通过ACWs(Andriod Callable Wrappers)的方式可以执行到Mono中的C#代码。因为要打包Mono的环境,所以用C#开发出的Andriod应用apk文件会比原生开发出来的要大,效率嘛自然也是要低一些的。

  C#代码要是想调用系统功能或者Java的实现类库,可以借助MCW(Managed Callable Wrapper)的方式来实现。MCW是JNI(Java Native Interface)的桥梁,可以使用托管代码调用Andriod代码。MCW通过将所有Andriod.*及相关的命名空间用jar绑定的方式暴露出来使得C#可以直接调用。

  说(粘贴)完Xamarin.Android,下面再说(粘贴)下Xamarin.iOS吧:

  

  相较于Xamarin.Andriod而言,Xamarin.iOS就很简单啦~用C#开发的iOS应用被编译成IL(Intermediate Language,中间语言)代码,就转交给Apple Compiler,由其直接编译成iOS的本机代码。本质上来说,用C#写的iOS应用和Objective-C写出来的没有什么差别,是不是很棒!( ? ?ω?? )?

  为表庆祝,再甩张图庆祝一下:

  最后的最后,放上一张来自微软的呐喊图来结束这篇没有什么营养的介绍:

  

时间: 2024-11-03 20:59:09

Xamarin介绍的相关文章

Xamarin Mono 环境搭建(使用Visual Studio 2013 开发android 和 ios )

本文主要介绍Xamarin结合VS2013来开发Android应用程序,主要会介绍Mono和Xamarin的关系,以及整个搭建环境的过程. 一.Mono和Xamarin介绍 1.Mono简介 Mono 是一个由Novell 公司主持的项目.该项目的目标是创建一系列符合ECMA 标准(Ecma-334 和Ecma-335)的.NET 工具,包括C# 编译器和共通语言执行平台.与微软的.NET Framework 不同,Mono 项目不仅可以运行于Windows 系统上,还可以运行于Linux,Fr

C# Xamarin移动开发基础进修篇

一.课程介绍 英文原文:C# is the best language for mobile app development. Anything you can do in Objective-C, Swift or Java, you can do in C#. 中文译意:C#是移动应用程序开发的最佳语言. 在Objective-C,Swift或Java中你可以做的任何事情,你都可以在C#中完成. 1).本次分享课程适合人群如下: 1. 热爱Xamarin跨平台移动开发. 2.进一步了解和学习

微软开源跨平台移动开发实践(文摘)

第1章 微软“云+端”战略 第2章 革命性的asp.net core asp.net core 的新特性: 1.使用JSON格式配置文件 2.使用OWIN与IIS解耦 3.全新的HttpContext 4.内置依赖注入 5.支持开发的包管理工具 6.采用即时编译运行 mvc 6的新特性: 1.合并技术栈 2.改进路由功能 3.模型绑定 4.TagHelper 第3章 开源跨平台额设备端开发 1.QT Library介绍 2.Xamarin介绍 3.Cordova介绍 第4章 项目介绍和需求分析

Visual Studio跨平台开发(2):Xamarin.iOS基本控制项介绍

前言 在上一篇文章中, 我们介绍了Xamarin 以及简单的HelloWorld范例, 这次我们针对iOS的专案目录架构以及基本控制项进行说明. 包含UIButton,UISlider,UISwitch, UIImage以及UIWebView控制项. iOS的使用者界面描述文档, 其副文档名为.xib, 目前在Visual Studio尚未支持直接编辑. 因此在文章中, 我们会先用Xamarin Studio建立专案, 并使用XCode中的Interface Builder布置我们所需的控制项后

【转】Xamarin Forms 介绍

特此声明,本篇博文转自:http://blog.csdn.net/kinfey/article/details/29621381 什么是 Xamarin Forms ? Xamarin Forms 是一个高效创建跨平台用户界面的库 .通过Xamarin Forms 可以一次编码生成基于主流移动平台(iOS, Android, Windows Phone)的应用界面.和HTML 5 不同, 它是一套原生的界面解决方案,这意味着通过Xamarin Forms 渲染的界面是与底层API 紧密相连, 那

xamarin之 开发工具介绍

思考: 1,  一定要按照顺序安装吗? 先装JDK,再装Android SDK 原因:Android SDK采用了Java语言 先装Android SDK,再装Android NDk 原因:NDK只是在SDK基础上开发的原生工具包,用于编写和编译一些c/c++的代码 先装Xamarin,再装Xamarin for Visual Studio 原因:Xamarin 是一个开发移动程序的IDE,而Xamarin for Visual Studio是Xamarin针对Visual Studio提供的插

Xamarin开发Anroid应用介绍

第1章  Xamarin开发Anroid应用介绍 如今智能手机已经盛行了好几年,而针对这些智能手机的软件开发也变得异常火热.但是在Android平台下只能使用Java开发,iOS平台下也只能使用Objective-C或Swift开发本文选自Xamarin Android开发实战上册. 对于那些C#程序员却只能眼看着这些火热的平台流口水.在几年前只能重新学习一门新的语言,才可以进入这些智能手机开发行业.现在,我们有了Xamarin.C#程序员不需要了解其它语言,就可以开始编写Android.iOS

Xamarin Anroid开发教程之Anroid开发工具及应用介绍

Xamarin Anroid开发教程之Anroid开发工具及应用介绍 Xamarin开发Anroid应用介绍 如今智能手机已经盛行了好几年,而针对这些智能手机的软件开发也变得异常火热.但是在Android平台下只能使用Java开发,iOS平台下也只能使用Objective-C或Swift开发.对于那些C#程序员却只能眼看着这些火热的平台流口水.在几年前只能重新学习一门新的语言,才可以进入这些智能手机开发行业.现在,我们有了Xamarin.C#程序员不需要了解其它语言,就可以开始编写Android

iOS Simulator功能介绍关于Xamarin IOS开发

iOS Simulator功能介绍关于Xamarin IOS开发 iOS Simulator功能介绍 在图1.38所示的运行效果中,所见到的类似于手机的模型就是iOS Simulator.在没有iPhone或iPad设备时,可以使用iOS Simulator对程序进行检测本文选自Xamarin iOS开发实战. iOS Simulator可以模仿真实的iPhone或iPad等设备的功能各种功能,如表1-3所示. 表1-3  iOS Simulator 在表1-3所示的功能中需要注意,iOS Si