移动混合开发 - mindpin/docs GitHub Wiki
移动混合开发调研
基础框架
PhoneGap/Cordova
目前大家所说的Phonegap,其实指的都是Cordova, 而那个真正被Adobe收购了的Phonegap(PhoneGap | Home),现在是Phonegap Build,(iPhone, Android SDK service)和cordova(Apache Cordova)的合体
Cordova是一能够让你用普通NewsShow的web技术编写出能够轻松调用API接口和进入应用商店的HTML5应用开发平台。是唯一的一个支持7个平台的开源移动框架。它的优势是无以伦比的:开发成本低——据估算,至多Native App的五分之一!
支持平台、API
Cordova目前支持的操作系统包含:
苹果的iOS,谷歌的Android,RIM的Blackberry,惠普的WebOS,微软的Windows Phone,塞班公司的Symbian以及三星的bada
最新的英文版API支持说明:
API支持说明
一些基于 Cordova 产品,以及开发评级
测试设备:三星 I8150,Android 2.3.6,单核 CPU 1.4GHz,512 RAM,800x480 屏幕,淘宝价 ¥1400。
Math IQ
应用1:复杂度:★★☆☆☆
流畅度:★★★★☆
市场评分:4.0(共4人评分)
安装包大仙:
截图:
这是一款极简单的IQ测试游戏。60秒内,看自己能答对多少道 10 以内的四则运算题。然后系统会给你的 IQ 评分,你可以看自己的网络排名。
不过体验中发现在某些过场动画会出现瞬间黑屏的现象,不知道是不是开发者没有优化好。
网易博客
应用2:复杂度:★★★★☆
流畅度:★★★★☆
市场评分:2.7(共45人评分)
安装包大小:533KB
网易的开发团队还在其[发布日志][16]中道出了一些经验:
- 自主开发移动框架。框架包含:基础库(节点操作、触摸事件等)、控件库(事件调度、缓存、ajax引擎、模板引擎等)、移动库(通知、文件处理、地理位置等)。
- 使用 Patched Phonegap Framework。这是 PhoneGap 基础上的 Patch,修正了如 Fling 事件被 skip、Focus、软键盘处理、Fixed position、Click 延迟等问题。
- 新增 Native Util。项目需求增加的工具类,如消息通知、menu 等)。
市场给这款应用的评分不高,主要槽点在于:
- 功能少
- 界面丑
- 安装后便无法打开
这样一个还不算太复杂的应用,开发总历时三个月(交互、前端设计、开发、测试),看来如果我们采用类似的 Native + HTML5 开发模式的话,也会遇到很多无法预料的问题。
犀利点评
- 如果希望用PhoneGap、Titanium等框架来实现一个流畅的高端游戏或者需要CPU计算能力的应用,在当前的硬件条件、开发成本上的可能性几近为零。
- 如果想快速开发一个iOS or/and Android原生UI的程序,选择Titanium或许更适合。
- 如果想实现一个跨平台的基于HTML的移动应用,PhoneGap或许更适合。 —— Roy
兼容性越强的技术,成本越低,性能越差;兼容性越差的技术,成本越高,性能越好。——月光博客
特点
- 兼容性:完全做到了Written Once,Run Everywhere!
- 标准化,Cordova采用W3C标准,Web App直接运行!
- 用JavaScript+HTM5。和iOS以及android的代码加XML没区别!
- 大众化移动互联网开发平台
- 轻量级架构,功能卓越的手机应用快速开发平台
- 精确兼容系统 Andriod iPhone&iPad Symbain WM
- 无成本开发,20%的开发周期,20%的升级维护成本
- 完全不需要手机编程基础,只要会HTML就能做应用
弊端
- javascript 的一个弊端之一就是它一个解释型语言,不像 Object-C等其他编译类型的语言,在代码不小心写错的时候不会即时的报错,只有在运行时执行到某一句错误的代码时才Crash掉,所以在调试的时候也是挺麻烦的。 tips: 当运行时出错的时候,你可以用你熟悉的浏览器所提供的开发者工具进行调试。
- 效率。效率问题据说在Android上,但是看到的文章都比较老旧,需要更消息的调研才清楚。
Titanium
Titanium是appcelerator的一个模块
使用javascript编写,同时生成Android、iOS应用,以及Html5代码。
支持平台、API
Titanium目前支持的操作系统包含:
苹果的iOS,谷歌的Android,Html代码。
优势
- 自有IDE
- 支持3个平台。
- 对于原生开发,据说支持得不错。
弊端
- 自有IDE。(可能必须依赖它)
- 只支持3个平台。
- 对于非原生开发,支持估计不太理想。
衍生框架
衍生框架,是指在 Cordova 的基础上,为了使得开发更加方便、快捷,而更进一步集成化的框架。(与Cordova的关系,就如Rails与Ruby)
他们可能给开发者以下这些方便:
- 命令行
- MVC框架
- startup
- 插件
- 社区
- 在线 开发/管理 支持
等等
ionic
框架内容
自带命令行,整合AngularJS
支持平台、API
同Cordova支持的大多数平台,但是唯一少了Windows Phone:
苹果的iOS,谷歌的Android,amazon-fireos, blackberry10, browser, firefoxos
特点
- 有一些通用基础模版。
- 有独立命令行,选择添加、删除框架,编译,运行。
- 提供在线推送。(建议不要用国外的推送,选用国内的)
- 上手快。
- 社区、文档还不错。
弊端
- 创建新项目的时候,不穿越,会等待很久,最终可能报错。
- 整合AngularJS,大坑,不建议使用。
- iOS基础Tabs程序,在虚拟机第一次运行,有明显卡顿。网上也有不少黑它在Android机上效率的。
- 服务根据使用阶梯收费(包括Push、Analytics、Deploy-目测是自动更新到用户手机、Users),目测在国内基本用不着,不知是否自动集成了。
- 没有特别牛的项目,使用了这个框架。
使用案例
http://showcase.ionicframework.com/
暂时未见比较大牌的应用使用它。
实测
应用打开有明显卡顿(iOS、Android)都有
Onsen UI
http://onsen.io/
与ionic类似,据说是俨然为ionic的一大对手。
特点
- 兼容AngularJS,友好支持Cordova和PhoneGap
- 提供诸多实用的工具
- 易于定制
- 可以与Monaca结合,在线管理、编写代码。
- 运行时有Logo,但是这也使得没有任何卡顿的感觉。
弊端
- 使用自家的MVC框架
- 尚未得到广泛使用
使用案例
http://monaca.mobi/en/showcase
也就 ASICS Shoe Finder 属于比较大的厂商的一个简单的尝试。
实测
应用打开时候有Logo等待,无卡顿,感觉比 ionic 舒爽一些。
但是示例应用需要自己下载,在新工程方面,就稍显弱势。
nativescript
用 javascript + css 开发 android 、 ios 和 Window Phone 应用
http://www.telerik.com/nativescript
基于开源项目Cordova
支持平台、API
开了下可运行平台,以及对应支持的js,主要支持以下平台:
苹果的iOS,谷歌的Android,微软的Windows Phone
特点
- 在线开发
- AppBuilder(可以快速将修改后更新至设备上测试)
- 可以将代码转存至github。(本该如此)
- 支持直接发布到官方市场(需要对应的验证,感觉放到他们网站,不太安全)
弊端
- 打开时会有Telerik Logo
- 如果在线开发,依赖于网络。
- 如果不依赖于它的AppBuilder,不如直接使用PhoneGap或Cordova
Famo.us + AngularJS
http://famo.us/integrations/angular/#/intro
理论上这不属于 移动混合开发 框架,但是 cordova 是 html5 + js + css 的形式做开发,可以将这个嵌入进去,获得高性能的体现。(例如下拉刷新等)
特点
- 性能评级,同类最高。
- 60 fps的动画效果让应用更加生动,拥有着更好的用户体验
- 提供初学者工具包
弊端
- 整合AngularJS
- 不提供菜单、标签、基本应用结构/布局等基础架构
- 发展尚未成熟,可供参考的范例有限
- 文档中缺少“入门指南”
- 学习曲线不太友好。
实测
未发现与 cordova 有比较直接的关联。Codepen上,到是有一些比较酷炫的演示。
追加1:
famous-cordova-test,这个项目有与 cordova 结合的例子,测试效率方面不错,以及因此接触到了 cordova 插件。
React Native
https://facebook.github.io/react-native/
据说年底会支持Android,目前还为支持,暂时不做详细调研。
特点
- 天猫拿来用了
弊端
- 暂不支持Android