下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 体育场馆运营管理要求-征求意见稿
- 2.3 用计算器求锐角的三角函数值 同步练习
- 专项22-实际问题与二次函数-重难点题型
- 幼儿园班级健康教育工作计划
- 技能教研组工作总结
- 幼儿园转岗培训总结
- 22.1 一元二次方程 同步练习
- 四川省成都市外国语学校2024-2025学年高三上学期期中考试语文试题(含答案)
- 山东省德州禹城市2024-2025学年六年级上学期期中考试科学试题
- 秀山自治县科技创新发展类项目申报书模板
- 2024年抗菌药物业务学习培训课件
- 护理操作中法律风险防控
- 2024-2030年国内染发剂行业市场发展分析及发展前景与投资机会研究报告
- 2024年代客泊车协议书模板范本
- 合肥市2023-2024学年七年级上学期期中语文考试卷
- 第十三届全国黄金行业职业技能竞赛(首饰设计师赛项)考试题及答案
- 2018年注册税务师考试税法(一)真题
- 2024-2030年中国置物架行业市场运行分析及商业模式与投融资战略研究报告
- 核聚变制氢技术的创新与应用
- 中核集团在线测评多少道题
- (初级)船舶气割工技能鉴定考试题库(含答案)
评论
0/150
提交评论