手机跨平台方案介“.NET研究”绍 狼人:

  引述

  现在手机平台种类繁多,主流平台有Symbian、IOS、Android、WM6.5、WP7以及中国山寨机所普遍使用的MTK,展讯, MSTAR。

  作为开发者来说,特别是学生,要做一款软件支持如上平台,实在是一件遥不可及的事情。

  不同种类的应用,成功的条件是不同的。有些应用是以质取胜的,有些应用则在质的同时必须要有足够的用户群(如LBS应用相关),也就是量的优势。因此,不同应用对于多平台支持的需求是有差异的,这也是本文探讨如何跨平台开发的价值所在。

  跨平台开发有许多种方式,在文献中可查到有下列方式。

方案名称

简述

特点

性能

方案开发难度

使用难度

使用成本

案例

动态脚本

使用脚本语言进行动态载入或对特定的数据格式进行解析,类似于浏览器工作方式:

wml

javascript

xml表单

私有数据格式

开发快,灵活配置。性能差,表现形式有限

30

40

30

40

msn/fetion/qq 内置wap浏览器使用服务器把网页转换成wml,客户端进行解析展示。

移动MM使用xml进行界面定义

微软oneapp 使用 java script进行服务武器编写,客户端进行展示和交互

很多电子阅读软件都使用自有的格式在服务器端进行编写,客户端进行展示

私有跨平台

公司内部使用,进行很"粗略"的封装

使用范围受限

90

120

70

60

不公开的内部引擎,比如Gameloft的游戏引擎

很多公司的UI引擎

针对特殊的领域,比如Poc(按键通话对讲机)引擎

抽象中间件

有自己的编程标准,完善的文档和规范化的接口

学习成本高,使用平台所限,在不损失性能得前提下解决特定的问题

85

300

100~150

50

Nokia的Qt

沃勤的 mtk中间件

Brew 开发接口

上海徐汇企业网站制作th="29" valign="top">

虚拟机

使用字节码解析执行

开发容易,跨平台性好,但性能差,扩展难,维护成本高

50

有开源方案,自己开发成本很高

60

60

标准的j2me虚拟机

开源的llvm上海闵行企业网站制作, eve, flash最新版使用llvm

私有的,掌上明珠自己开发了虚拟机用于开发游戏

上海企业网站制作n="top">

代码转换

使用java转换成c代码,再编译执行

使用标准j2me接口开发,一份代码,好维护,但目前还没官方公开版

84

300

60

70

棱镜方案

Fetion 3.0

正在开发的联通应用商店

目前都还是公司内部使用

  备注:

  性能:我们以纯本地代码开发出来的程序性能为100做基数,其他使用相对百分比。

  难度:我们以纯本地代码开发的难度100做基数,其他使用相对百分比。

  棱镜方案由北京创世互动总经理张盛毅介绍,目前仅在北京创世互动公司内部使用,期待尽快与众多开发者见面。

  (1)

  我们可以看到,使用动态脚本、虚拟机及代码转换等方式是比较廉价的跨平台开发方式。接下来本文将会介绍几种跨平台方式下进行跨平台开发的方案。

  动态脚本

  现在比较火的使用动态脚本的跨平台开发方案大部分是即基于HTML5的。事实上即对传统浏览器的一种扩展,提供了离线浏览功能、对本地设备上海企业网站设计与制作的访问功能等。但由于大部分编码是使用脚本语言,因此性能较低。如果做图片处理等应用,则缺少相应成熟库支持。

  RhoMobile - one codebase, every smartphone

  基于HTML5及Ruby构建跨平台应用的工具,号称支持iPhone, Windows Mobile, RIM, Symbian and Android。同时提供开发、同步、源码管理等全方位产品。具有IDE。

上海闵行企业网站设计与制作>  然而,当仔细看开发文档的时候,发现对Symbian提都不提了,实在是一件让我的N95伤心的事情(http://docs.rhomobile.com/rhodes/introduction)。况且作者对Ruby了解甚少,也就没有进一步尝试。

  Appcelerator

  Appcelerator的Titanium是使用HTML、JavaScript及CSS等Web技术构建移动(iPhone、Android及iPad)与桌面(Windows、OS X及Linux)应用的平台。此外,还可以使用Python、PHP及Ruby构建Titanium的桌面应用。这些应用还可以交叉编译到所有的目标平台上。 

  (2)

  PhoneGap

  PhoneGap是一款开源的手机应用开发平台,它仅仅只用HTML和JavaScript语言就可以制作出能在多个移动设备上运行的应用。PhoneGap将移动设备本身提供的复杂的API进行了抽象和简化,提供了一系列丰富的API供开发者调用,只要你会HTML和Javascript或者Java语言,就可以利用PhoneGap提供的API去调用各种功能,PhoneGap就能让你可以制作出在各种手机平台上运行的应用,这对移动应用开发者来说无疑是个福音。

   (3)

  这个对Symbian的支持也很不好,官方的Symbian demo在我的N95上无法跑。

  代码转换

  由于代码转换直接生成目标平台的应用程序,因此效率比较高。然而如引文中提到的,大部分项目都是私有的。

  MoSync

  MoSync是一个开源的C/C++的集成开发环境。可以简化移动开发程序的开发难度,并且能够大大提高移动程序开发人员的工作效率。其主要优点:开源,跨平台android, j2me, Symbian等,易于移植。

   (4)

  官方的DEMO很成功的在我的手机上跑了起来,还有几个是OPENGL的。不过极其不爽的是,对中文的支持性很糟糕。MoSync所提供的UI系统压根没考虑对中文的支持,有国人问如何显示中文,MoSync的回复让我感到很雷,要制作一个一个byte的中文字符字体。难道他们以为汉字是拼音么。

  不过MoSync正在做native ui的相关工作,不过,恐怕还需要相当长的时间来发展。

  虚拟机

  我认为虚拟机其实是很尴尬的,对多平台的支持远不如上文提到的几个强悍,编码过程中要考虑的也比较多。

  J2ME

  iPhone压根不支持。Android则自己搞了套,估计合理利用设计模式,改动也不需要太大。Symbian还是对这个很友好的,WM6.5要装虚拟机,WP7未知。

  在编码过程中,由于J2ME也没有为多种设备提供一个十分统一的访问方式(如加速度传感器等),所以需要考虑的事情也比较多。

  Silverlight、MonoDroid、 MonoTouch

  这个就压根谈不上跨平台了,UI都是要各自写一套,而且后两者也特别臃肿。

  值得一提的是,有个基于C#的游戏引擎delta engine,可以在PC、WP7、Android及iPhone上跑。

  Skyengine

  这里介绍一下这个,其实也是最近斯凯的老大宋涛来我们天大才听说的。之前对山寨机一直没有关注过。

  斯凯SDK处理了MTK、展讯、MSTAR平台的差异性,封装了统一、易用、功能强大的API。 功能涵盖了图形文字处理,声音,文件IO, 网络通信等;同时完美支持THUMB指令,插件机制, 图形加速等高级特性。 斯凯SDK将使你轻松开发出优秀的OTA应用。

  开完会后过去聊,说已经放出Android的来了,但是后来在斯凯的网站找也没找到。估计还在内部测试,不过如果要做山寨机的平台的话,可能用这个会速度好多。

  小结

  扯这么多,最后也没扯出个真正的Write once,run anywhere的巨无霸。开发过程中,应该有机的选择几种跨平台技术,覆盖自己所关注的平台。

  我们的团队近期在做一些个项目,也还在讨论跨平台的方案。我们还是比较关注手机程序的Native特性的。譬如Symbian用户更喜欢sis,而不喜欢jar。

  总而言之,跨平台远没想象中的那样靠谱。

  引用作上海徐汇企业网站设计与制作

  1. 一尘. 手机跨平台开发五大方案对比. 博客园. [链接] http://www.cnblogs.com/wmj/archive/2010/11/29/1891086.html.

  2. InfoQ. Aptana被Appcelerator收购. [链接] http://www.infoq.com/cn/news/2011/01/aptana-appcelerator.

  3. 跨平台开发:初探PhoneGap移动开发框架. [链接] http://mobile.51cto.com/android-229213.htm.

  4. liuhuigx. MoSync: 跨多平台android, j2me, Symbian, wm的开发工具。. [链接] http://www.iteye.com/topic/600808.

  作者:马昊伯

  出处:http://loning.cnblogs.com/

  个人网站http://loning.wiisio.com/

上海网站建设  本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,否则保留追究法律责任的权利。

声明:此博有部分内容为转载,版权归原作者所有~
原文地址:https://www.cnblogs.com/waw/p/2219464.html