版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】Xamarin技术全解析
Xamarin是一套基于C#语言的跨平台移动应用开发工具,今年2月份微软宣布收购Xamarin,而后在4月份进行的Build大会上微软宣布将会在各个版本的VisualStudio中免费提供Xamarin,并且宣布XamarinSDK开源。本文主要阐述Xamarin是什么,它能做什么以及它是如何跨平台的。
1.什么是XamarinXamarin是一个跨平台的移动开发工具,由Mono发展而来。开发人员可以使用C#为iOS,Android,Mac以及WindowsPhone开发原生应用。
Xamarin的跨平台开发思路是:使用C#来完成所有平台共用的,和平台无关的app逻辑部分;由于各个平台的UI和交互不同,再使用由Xamarin封装好的C#API来访问和操控native的控件,分别进行不同平台的UI开发。
如下图:
另外Xamarin还提供了Xamarin.FormsUI工具包,Xamarin.Forms可以帮助开发人员快速的构建跨平台的UI,通过一次编码,生成多个平台的原生UI界面,稍后本文会讲述Xamarin.Forms的使用方法以及实现原理。
2.Xamarin能做什么Xamarin主要由Xamarin.iOS,Xamarin.Android以及Xamarin.Forms组成,主要功能也有着三部分组成:
2.1使用Xamarin.iOS来构建iOS原生应用下面会使用MacOSX上的XamarinStudio来演示如何构建iOS应用:-打开XamarinStudio-新建一个项目,选择iOS-App-SingleViewApp
-点击下一步,输入App名称,例如:FirstXamariniOS,一路点击下一步,工程创建完成。下面是生成的iOS工程结构截图:
如果有Xcode使用经验的话会发现,这个XamariniOS工程的项目结构与Xcode的结构很类似,都包含了AppDelegate类,默认的ViewController以及MainStoryBoard文件,基本的类名称都是一致的。
打开Main.storyboard文件,可以从Toolbox上拖拽一些原生控件到ViewController上,与Xcode中使用方式一致,但是有一些功能没有Xcode强大,比如设置View的Autolayout等等,如下图:
运行上面的工程,就可以在模拟器中查看效果了。
从上面来看来说使用Xamarin进行iOS编程需要有一定的iOSApp开发知识,需要熟悉iOSUI框架(CocoaTouch)等等,即便使用Xamarin开发应用,也绕不过原生底层的这些东西。
2.2使用Xamarin.Android来构建Android原生应用下面会使用MacOSX上的XamarinStudio来演示如何构建iOS应用:-打开XamarinStudio-新建一个项目,选择Android-App-AndroidApp
-点击下一步,输入App名称,例如:FirstXamarinAndroid,一路点击下一步,工程创建完成。下面是生成的Android工程结构截图:
如果有Eclipse进行Android编程经验的话会发现,这个XamarinAndroid工程的项目结构与Eclipse的结构很类似,都包含了默认的MainActivity以及布局文件,基本的类名称都是一致的。
打开Main.axml文件,可以从Toolbox上拖拽一些原生控件到ViewController上,与Eclipse的体验类似,也可以通过编辑XML的方式更改界面。
同样从上面来看来说使用Xamarin进行Android编程需要有一定的AndroidApp开发知识,需要熟悉AndroidUI框架等等,原生底层的东西还是需要熟悉的。
2.3使用Xamarin.Forms来构建跨平台的应用Xamarin.Forms是一个创建跨平台用户界面的库,通过Xamarin.Forms可以一次编码生成基于各个移动平台(iOS,Android,WindowsPhone)的应用界面。
Xamarin.Forms提供了更高层次的一层UI组件抽象,这些组件在进行最终呈现的时候,会以原生控件的方式表现出来,也就是说每一个Xmarin.Forms的控件最终会有多个平台的原生呈现逻辑,如下图中,Xamarin.Forms的Entry控件,对应的原生呈现为:
使用Xamarin.Forms构建跨平台应用的一个缺陷就是只能使用Xamarin.Forms包中的控件,会有一些限制。如果先了解更多关于如何使用Xamarin.Forms构建跨平台应用,请参见文章:Xamarin.Forms入门-使用Xamarin.Forms来创建跨平台的用户界面。
3.Xamarin实现原理3.1Xamarin.Android实现原理在讲述Xamarin.Android架构之前,需要先了解一些Android应用程序的背景知识:-Android应用程序试运行在Dalvik虚拟机中的,每一个应用程序对应一个单独的虚拟机实例,其代码在虚拟机的解释下得以执行。-
Dalvik主要是完成对象生命周期管理,堆栈管理,线程管理,安全和异常管理,以及垃圾回收等等重要功能。-
不同于Java虚拟机运行java字节码,Dalvik虚拟机运行的是其专有的文件格式
Xamarin.Android架构图(ART是Android虚拟机Dalvik):
AndroidCallableWrappers(ACW)使用C#开发的Android应用程序在运行的时候,C#代码是在Mono虚拟机中执行的,而Mono虚拟机是寄宿在Dalvik虚拟机中运行的,所有的C#代码都通过ACW的方式被调用。
由于需要打包Mono环境,使用C#开发的Android应用的APK文件会比原生开发的大,执行效率也会差一些。
ManagedCallableWrapper(MCW)如果需要在C#中调用一些系统的功能或者Java实现的类库,该如何调用那?答案就是MCW,MCW就是一个JNI桥梁,可以使用托管代码调用Android的代码。MCW将整个Android.*以及相关的命名空间通过
jar绑定的方式暴露出来,是的C#可以调用。
3.2Xamarin.iOS实现原理对于开发者来说,Xamarin.IOS相对于Xamarin.Android就要简单很多了,我们用C#开发的iOS应用程序在被编译成IL代码之后,然后转交给Applecomplier直接编译成iOS的本地机器码,也就是说C#写的iOS应用程序和Objective-C写的是一样的。
透过Ahead-of-Time(AOT)编译程序,直接将Xamarin.iOS程序编译为ARM的执行档。编译封装完成的应用程序被直接编译为原生的二进
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 沈阳市社区居家养老政策的优化路径与实践探索
- 沈阳市东陵区农村社区高血压患病率及多因素关联剖析
- 汽车覆盖件回弹计算与补偿方法:理论、实践与创新探索
- 汽车尾气暴露对小白鼠多器官组织形态学的毒性效应研究
- 商品房合同更名协议
- 大数据可视化设计技师考试试卷及答案
- 储能 BMS 电池管理调试技师考试试卷及答案
- 产品静物摄影技师考试试卷及答案
- 突发公共卫生事件和传染病疫情报告制度及流程
- 2026年共青团财务考试真题及参考答案
- 物流项目可行性报告
- 接待手册(标准模板)
- 内科学教学课件:胃炎
- 酒店明住宿清单(水单)
- 高速线材轧机概述
- 《PLC安全操作规程》
- 外科学 肝脏疾病(英文)
- von frey丝K值表完整版
- GB/T 3049-2006工业用化工产品铁含量测定的通用方法1,10-菲啰啉分光光度法
- GB/T 17626.16-2007电磁兼容试验和测量技术0Hz~150kHz共模传导骚扰抗扰度试验
- GB/T 13173.6-1991洗涤剂发泡力的测定(Ross-Miles法)
评论
0/150
提交评论