引述
现在手机平台种类繁多,主流平台有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 开发接口 |
虚拟机 |
使用字节码解析执行 |
开发容易,跨平台性好,但性能差,扩展难,维护成本高 |
50 |
有开源方案,自己开发成本很高 |
60 |
60 |
标准的j2me虚拟机 开源的llvm, eve, flash最新版使用llvm 私有的,掌上明珠自己开发了虚拟机用于开发游戏 |
代码转换 |
使用java转换成c代码,再编译执行 |
使用标准j2me接口开发,一份代码,好维护,但目前还没官方公开版 |
84 |
300 |
60 |
70 |
棱镜方案 Fetion 3.0 正在开发的联通应用商店 目前都还是公司内部使用 |
备注:
性能:我们以纯本地代码开发出来的程序性能为100做基数,其他使用相对百分比。
难度:我们以纯本地代码开发的难度100做基数,其他使用相对百分比。
棱镜方案由北京创世互动总经理张盛毅介绍,目前仅在北京创世互动公司内部使用,期待尽快与众多开发者见面。
(1)
我们可以看到,使用动态脚本、虚拟机及代码转换等方式是比较廉价的跨平台开发方式。接下来本文将会介绍几种跨平台方式下进行跨平台开发的方案。
动态脚本
现在比较火的使用动态脚本的跨平台开发方案大部分是即基于HTML5的。事实上即对传统浏览器的一种扩展,提供了离线浏览功能、对本地设备的访问功能等。但由于大部分编码是使用脚本语言,因此性能较低。如果做图片处理等应用,则缺少相应成熟库支持。
RhoMobile - one codebase, every smartphone