`
butter
  • 浏览: 123080 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

移动跨平台应用开发技术综述

 
阅读更多

1.     背景

目前市场上主流的移动操作系统,包括iOSAndroidwebOSSymbianBlackBerry等。如果没有统一的操作系统,开发程序就是一件异常麻烦的事情。

因为每一种手机平台都有自己的SDK,它们需要使用不同语言来进行开发,你可能不得不需要56个代码仓库来管理不同设备上的代码,而且需要不同设备的开发人员来开发维护这些仓库,你还不得不装上各个设备的SDK,设置好路径和各种配置信息,来编译不同设备上的应用包。

因此,在移动操作系统已成诸侯割据之势的今天,迫切需要一种真正的跨平台技术。

目前,开发移动程序框架选择很多,从Web App,到PhoneGapTitaniumMonoTouch,再到Native App。我们认为,可以从以下几方面对这些技术进行比较:

A.       兼容性。能否真正written once, run everywhere。是真正跨平台,还是伪跨平台。

B.       标准化。是否采用国际通用技术实现,是否被不同操作系统完美支持,是否具有较低的开发成本。

C.       性能。能否适应当前主流手机配置。

2.     主流技术简介

2.1 PhoneGap

兼容性:★★★★★    标准化:★★★★★    性能:★★☆☆☆

         Phonegap采用W3C标准,以HTML5 +CSS3 + JAVASCRIPT作为开发工具。通过JAVASCRIPT封装接口访问移动OS底层API,比如GPS定位、重力感应、短信等,以web app的形式开发业务逻辑,并通过WebView control作为运行时环境,使其作为native app部署到不同移动OS上。

目前phonegap完美支持iOSAndroidwebOSSymbianBlackBerrywindowsmobile等六种操作系统。同时,Phonegap是免费开源的。

利用phonegap进行跨平台开发,可以有如下几种方式:

A.       编写纯粹的web app,利用phonegap build云端工具转换成各同OS的安装包。这种方式可以完美实现written once, run everywhere。但是,在纯粹的web app中,难以获得OS的底层支持,比如GPS定位、重力感应、短信等。如果不需要这些服务,这种开发方式可谓快捷方便。

B.       phonegap作为插件支持。如phonegapget started所述,仍然是利用Xcode开发iOS程序,利用Eclipse开发Android程序,phonegap只是作为开发project的第三方插件,因为这些project本身也是支持一些HTMLJAVASCRIPT的。开发时,利用HTML5+ CSS3 + JAVASCRIPT编写业务逻辑,并通过phonegap封装过的系统JS接口,调用GPS定位、重力感应等服务。个人估计,在不同移动OS间迁移这些project,可以省去90%的代码量。

C.       高端应用,比如3D游戏、多媒体、动画应用。不建议使用phonegap,实际上,所有的跨平台技术都会带来这样那样的问题,虽然理论上也可以开发一些高端应用,但其表现力跟native app是完全无法相提并论的。

Phonegap的最大缺点,运行速度慢,UI反应延时。在HTC G3 528MHz cpu下测试,一个简单的Form提交,速度让人无法接受。

2.2 MonoTouch

兼容性:★★☆☆☆    标准化:★★★★☆    性能:★★★★☆

Mono项目由Novell公司主持,致力于创建一系列符合标准ECMA (Ecma-334Ecma-335).Net 工具,包括C #编译器和CL执行平台。与微软的.Net不同,Mono项目不仅可以运行于Windows系统内,还可以运行于LinuxFreeBSDUnixMac OS XSolaris

         MonoTouchmono的第一个商业版本,是收费软件。MonoTouch最初设计时并没有考虑到跨平台,而是仅仅为iPhone设计的,目前MonoTouch已经更新到4.0版本,而后推出的MonoTouch for Android刚刚发布1.0版本。

包含在MonoTouch中的主要组件是:

l  MonoTouch.dll,访问iPhone原生APIC#互操作程序集(基础类、QuartzCoreAnimationCoreLocationMapKitAddressbookAudioToolboxAVFoundationStoreKitOpenGL/OpenAL)。

l  命令行SDK,用来编译C#代码和其他CIL语言代码,让它们可运行于iPhone模拟器或iPhone/iPodTouch设备中。

l  Mono运行时的商业许可(让你的代码可以使用Mono运行时的静态连接引擎)。

l  MonoDevelop插件,让iPhone开发更加简单,并集成了Interface Builder以方便创建GUI应用程序。

从上我们可以看出:

A.       MonoTouch采用C#作为主要编程语言,通过运行时SDK保证其运行在不同平台上。类似JAVA JRE

B.       MonoTouch提供一个适配器层,使得开发人员能在程序中使用所有的标准iPhone控件。另外还提供一些原生iPhone API的包装函数库,如访问位置(LocationGPS)、加速计、地址簿等的函数。

C.       开发方式:大部分非UI方面的.NET 3.5功能依旧可用;而UI则需要使用苹果的Interface Builder(界面创建器,IB)应用程序来创建。程序员还是必须使用Mac来进行开发。

D.       MonoTouch开发的程序会体积稍大,因为集成了运行时SDK,大约大5M,压缩后3M

MonoTouch for Android暂未研究,原理应该类似。

2.3 Titanium

兼容性:★★★★☆    标准化:★★★★★    性能:★★★☆☆

Titanium的原理和phonegap类似,都是利用JAVASCRIPT封装接口访问移动OS底层API,比如GPS定位、重力感应、短信等,以web app的形式开发业务逻辑,并通过WebView control作为运行时环境,使其作为native app部署到不同移动OS上。

         Titaniumphonegap的不同之处主要有以下几点:

A.       UI控件。Phonegap没有提供丰富的UI控件,如果要开发效果华丽的组件及特效,需要额外的web框架支持,比如sencha touchjQuery mobile等。而Titanium本身就提供了一些UI API,使得直接用Titanium编写的程序也具有一定美化效果。

B.       跨平台。上文提到,Phonegap支持六种主流移动OS,而Titanium目前只支持iOSAndroid

C.       性能。暂未测试,但是Phonegap + sencha touch效果实在太差,Titanium应该会好一点。

2.4 Rhodes

 to be continued...

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics