Xamarin开发及学习资源

入行文章指引 

移动开发下Xamarin VS PhoneGap

跨平台开发html

许多企业但愿可以经过开发移动应用程序,来提高企业业务水平,开发原生App时每每又缺乏专业的Objective C 或 Java 移动开发人员。不只如此,每种流行的移动平台都具备自身的开发语言,开发工具及特征,这就意味着开发一款应用须要花费三倍的开发时间,且须要维护三个项目。所以开发原生应用的代价是很是大的。java

幸运的是,有不少公司已经在研究如何使原生APP的开发变得简单,目前为止多平台的开发方法主要有两种:web

【原生:基于本地操做系统运行,本地CPU的目标执行,速度很快。对应的webApp基于网络 浏览器..】编程

第一种方法就是以Web 应用为内核,填充到原生app中(PhoneGap提供的解决方案)。这种方法可以吸引那些想要转到移动开发的Web开发人员,使用这种方法开发的应用就是将网站包装的像移动应用。浏览器

第二种方法就是使用跨平台的开发工具,这种工具提供一种通用语言开发原生App(Xamarin 提供的解决方案)安全

Xamarin(Xamarin.Forms)可让开发人员用C#开发,再使用Xamarin.Forms转换生成 iOS,Android, Windows Phone应用,Xamarin 比较受.Net 开发人员的喜好。网络

两种工具采用不一样的解决方法,面向不一样技术背景的开发人员,来实现跨平台应用开发。随着两大平台的流行,不少控件厂商也开发出支持这两种平台的工具,如为PhoneGap 提供的Wijmo 5,为 Xamarin.Forms提供的Xuni 等,从而使移动开发更加快速高效,固然尽管有不少工具支持这两种平台,可是不管是PhoeGap或是Xamarin没有绝对的好与坏,所以如何选择,主要取决于哪一种工具可以更有利于企业。下面咱们就详细对比PhoneGap 与Xamarin。架构

PhoneGapapp

开发人员使用PhoneGap 时,可以使用 JavaScript,HTML5,CSS来开发。PhoneGap 提供了访问移动设备特征的通用API接口,如传感器,摄像头等。这些应用程序称为混合应用,既不是原生的(在WebView中渲染)也不是纯Web的应用(须要访问原生设备API,是安装包的形式)可以使用其余插件扩展PhoneGap 功能。最重要的是PhoneGap 是免费开源的。框架

Xamarin

Xamarin 提供利用.Net(Mono) 的开源实现的一个平台,开发人员可以使用C#开发一次,Xamarin.Form就可同时生成iOS,Android,及Windows Phone 应用程序。Xamarin开发即可使用Visual Studio,也可使用其自有的 Xamarin Studio。Xamarin提供了高效的性能,提高了代码的复用,能够充分利用C#语言和.Net 平台的优点。

Xamarin VS PhoneGap

   

Xamarin.Forms   PhoneGap
使用C#或XAML语言编码 使用 JavaScript,HTML,CSS 编码
开发iOS ,Android,WindowsPhone  应用 支持iOS, Android,WindowsPhone,Blackberry,Symbian,Bada,WebOS
须要Xamarin许可证 免费开源
生成原生应用 应用程序不彻底是原生的
高效 性能通常
应用程序在每一个平台上都具备好的用户界面 须要其余辅助工具才能在每一个平台上实现好的用户界面
大量的共享资源 开源库,框架,相关平台优化的碎片

总结

每一个开发人员须要选择一款适合他们开发的解决方案。PhoneGap可以提高web开发的技能,而Xamarin 致力于.NET 技术,是最直接的解决方法。尽管有不少工具支持这两种平台,可是 PhoeGap 与 Xamarin 之间没有绝对的好与坏之分。

工具选择

不管选择哪一种解决方案,都有一些两大平台的开发工具,来更好地帮助开发人员进行移动应用的开发。
PhoneGap -- 可利用触控优先的  Wijmo 控件集进行开发。Wijmo 快如闪电,触控优先,为企业应用提供更灵活的操做体验,并全面支持Angular 2!
Xamarin -- 借助  Xuni (本地化、跨平台移动控件集),使用本地编程技术,能够在 IOS、Android 和Xamarin平台上使用相同的 API。不管须要Android 图表、Xamarin.Form 仪表盘仍是IOS表格控件,Xuni 都高质量的建立适用于全部设备的企业级应用。
 
 

Xamarin 技术全解析

Xamarin 是一套基于C#语言的跨平台移动应用开发工具,2016年2月份微软宣布收购Xamarin,然后在4月份进行的Build大会上微软宣布将会在各个版本的Visual Studio中免费提供Xamarin,而且宣布Xamarin SDK开源。

一、什么是Xamarin

Xamarin 是一个跨平台的移动开发工具,由 Mono 发展而来。开发人员可使用 C# 为iOS,Android, Mac以及Windows Phone开发原生应用。

Xamarin 的跨平台开发思路是使用 C# 来完成全部平台共用的,和平台无关的 app 逻辑部分;因为各个平台的 UI 和交互不一样,再使用由 Xamarin 封装好的 C# API 来访问和操控 native 的控件,分别进行不一样平台的 UI 开发

以下图:

另外Xamarin还提供了Xamarin.Forms UI工具包,Xamarin.Forms能够帮助开发人员快速的构建跨平台的UI,经过一次编码,生成多个平台的原生UI界面,稍后本文会讲述Xamarin.Forms的使用方法以及实现原理。

二、Xamarin能作什么

Xamarin主要由Xamarin.iOS,Xamarin.Android以及Xamarin.Forms组成,主要功能也有着三部分组成:

使用Xamarin.iOS来构建iOS原生应用

使用Xamarin进行iOS编程须要有必定的iOS App开发知识,须要熟悉iOS UI框架(Cocoa Touch)等等,即使使用Xamarin开发应用,也绕不过原生底层的这些东西。 

使用Xamarin.Android来构建Android原生应用

使用Xamarin进行Android编程须要有必定的Android App开发知识,须要熟悉Android UI框架等等,原生底层的东西仍是须要熟悉的。 

使用Xamarin.Forms来构建跨平台的应用

Xamarin.Forms 是一个建立跨平台用户界面的库,经过Xamarin.Forms 能够一次编码生成基于各个移动平台(iOS, Android, Windows Phone)的应用界面。

Xamarin.Forms提供了更高层次的一层UI组件抽象,这些组件在进行最终呈现的时候,会以原生控件的方式表现出来,也就是说每个Xmarin.Forms的控件最终会有多个平台的原生呈现逻辑,以下图中,Xamarin.Forms的Entry控件,对应的原生呈现为:

 

使用Xamarin.Forms构建跨平台应用的一个缺陷就是只能使用Xamarin.Forms包中的控件,会有一些限制

若是想了解更多关于如何使用Xamarin.Forms构建跨平台应用,请参见文章:Xamarin.Forms入门-使用 Xamarin.Forms 来建立跨平台的用户界面

三、Xamarin实现原理

3.1 Xamarin.Android 实现原理

在讲述Xamarin.Android架构以前,须要先了解一些Android应用程序的背景知识:

- Android应用程序试运行在Dalvik虚拟机中的,每个应用程序对应一个单独的虚拟机实例,其代码在虚拟机的解释下得以执行。

- Dalvik主要是完成对象生命周期管理,堆栈管理,线程管理,安全和异常管理,以及垃圾回收等等重要功能。

- 不一样于Java虚拟机运行java字节码,Dalvik虚拟机运行的是其专有的文件格式

Xamarin.Android架构图(ART 是Android 虚拟机Dalvik):

Android Callable Wrappers(ACW)

使用C#开发的Android应用程序在运行的时候,C#代码是在Mono虚拟机中执行的,而Mono虚拟机是寄宿在Dalvik虚拟机中运行的,全部的C#代码都经过ACW的方式被调用。

因为须要打包Mono环境,使用C#开发的Android应用的APK文件会比原生开发的大,执行效率也会差一些

Managed Callable Wrapper(MCW)

若是须要在C#中调用一些系统的功能或者Java实现的类库,该如何调用那?

答案就是MCW,MCW就是一个JNI桥梁,可使用托管代码调用Android的代码。MCW将整个Android.* 以及相关的命名空间经过 jar绑定的方式暴露出来,使得C#能够调用。

3.2 Xamarin.Forms实现原理

在Xamarin Studio中构建Xamarin.Forms跨平台的应用的时候,会生成Android以及iOS单独的项目工程,二者共享业务逻辑以及一些UI界面,在打包生成App的时候,是分开进行的,二者互不影响。每一个平台的实现原理与上面讲的是同样的。

3.3 支持Xamarin的工具

在微软收购 Xamarin 以后,全球最大的控件公司葡萄城立刻作出反应,在知名的 ComponentOne Studio 产品中加入了 Xamarin 平台。

Xamarin 平台为 Visual Studio 提供灵活的原生移动开发 ,给原生移动应用提供出色的图表、仪表盘和表格控件。

ComponentOne Studio Enterprise 是一款专一于企业应用的.NET全功能控件套包,支持 WinForms、WPF、UWP、Xamarin、ASP.NET MVC 等多个平台,帮助您在缩减成本的同时,提早交付丰富的桌面、Web和移动企业应用。控件支持的范围普遍,包含了表格和数据管理、图表和数据可视化、流行的UI界面等,为您的企业应用开发提供高性能的控件工具。

了解更多信息请访问 ComponentOne Studio官网

Xamarin.Forms入门-使用 Xamarin.Forms 来建立跨平台的用户界面

如何成为一个Xamarin专家

Xamarin 学习笔记 - 配置环境(Windows & iOS)

Xamarin 学习笔记 - Layout(布局)

 

Xaramin学习资源

博客

一、官网

二、CSharpKit微服务工具包

三、葡萄城技术团队

四、Jesse

五、shanyou

六、大学霸

书籍

一、使用Xamarin.Forms构建企业应用

相关文章
相关标签/搜索