移动混合开发 - 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支持说明

最新的API支持

一些基于 Cordova 产品,以及开发评级

基于一篇Github上的中文记录

测试设备:三星 I8150,Android 2.3.6,单核 CPU 1.4GHz,512 RAM,800x480 屏幕,淘宝价 ¥1400。

应用1:Math IQ

复杂度:★★☆☆☆

流畅度:★★★★☆

市场评分: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

兼容性越强的技术,成本越低,性能越差;兼容性越差的技术,成本越高,性能越好。——月光博客

特点

  1. 兼容性:完全做到了Written Once,Run Everywhere!
  2. 标准化,Cordova采用W3C标准,Web App直接运行!
  3. 用JavaScript+HTM5。和iOS以及android的代码加XML没区别!
  4. 大众化移动互联网开发平台
    1. 轻量级架构,功能卓越的手机应用快速开发平台
    2. 精确兼容系统 Andriod iPhone&iPad Symbain WM
    3. 无成本开发,20%的开发周期,20%的升级维护成本
    4. 完全不需要手机编程基础,只要会HTML就能做应用

弊端

  1. javascript 的一个弊端之一就是它一个解释型语言,不像 Object-C等其他编译类型的语言,在代码不小心写错的时候不会即时的报错,只有在运行时执行到某一句错误的代码时才Crash掉,所以在调试的时候也是挺麻烦的。 tips: 当运行时出错的时候,你可以用你熟悉的浏览器所提供的开发者工具进行调试。
  2. 效率。效率问题据说在Android上,但是看到的文章都比较老旧,需要更消息的调研才清楚。

Titanium

Titanium是appcelerator的一个模块
使用javascript编写,同时生成Android、iOS应用,以及Html5代码。

支持平台、API

Titanium目前支持的操作系统包含:
苹果的iOS,谷歌的Android,Html代码。

优势

  1. 自有IDE
  2. 支持3个平台。
  3. 对于原生开发,据说支持得不错。

弊端

  1. 自有IDE。(可能必须依赖它)
  2. 只支持3个平台。
  3. 对于非原生开发,支持估计不太理想。

衍生框架

衍生框架,是指在 Cordova 的基础上,为了使得开发更加方便、快捷,而更进一步集成化的框架。(与Cordova的关系,就如Rails与Ruby)
他们可能给开发者以下这些方便:

  1. 命令行
  2. MVC框架
  3. startup
  4. 插件
  5. 社区
  6. 在线 开发/管理 支持

等等

ionic

http://ionicframework.com/

框架内容

自带命令行,整合AngularJS

支持平台、API

同Cordova支持的大多数平台,但是唯一少了Windows Phone:
苹果的iOS,谷歌的Android,amazon-fireos, blackberry10, browser, firefoxos

特点

  1. 有一些通用基础模版。
  2. 有独立命令行,选择添加、删除框架,编译,运行。
  3. 提供在线推送。(建议不要用国外的推送,选用国内的)
  4. 上手快。
  5. 社区、文档还不错。

弊端

  1. 创建新项目的时候,不穿越,会等待很久,最终可能报错。
  2. 整合AngularJS,大坑,不建议使用。
  3. iOS基础Tabs程序,在虚拟机第一次运行,有明显卡顿。网上也有不少黑它在Android机上效率的。
  4. 服务根据使用阶梯收费(包括Push、Analytics、Deploy-目测是自动更新到用户手机、Users),目测在国内基本用不着,不知是否自动集成了。
  5. 没有特别牛的项目,使用了这个框架。

使用案例

http://showcase.ionicframework.com/
暂时未见比较大牌的应用使用它。

实测

应用打开有明显卡顿(iOS、Android)都有


Onsen UI

http://onsen.io/
与ionic类似,据说是俨然为ionic的一大对手。

特点

  1. 兼容AngularJS,友好支持Cordova和PhoneGap
  2. 提供诸多实用的工具
  3. 易于定制
  4. 可以与Monaca结合,在线管理、编写代码。
  5. 运行时有Logo,但是这也使得没有任何卡顿的感觉。

弊端

  1. 使用自家的MVC框架
  2. 尚未得到广泛使用

使用案例

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

特点

  1. 在线开发
  2. AppBuilder(可以快速将修改后更新至设备上测试)
  3. 可以将代码转存至github。(本该如此)
  4. 支持直接发布到官方市场(需要对应的验证,感觉放到他们网站,不太安全)

弊端

  1. 打开时会有Telerik Logo
  2. 如果在线开发,依赖于网络。
  3. 如果不依赖于它的AppBuilder,不如直接使用PhoneGap或Cordova

Famo.us + AngularJS

http://famo.us/integrations/angular/#/intro
理论上这不属于 移动混合开发 框架,但是 cordova 是 html5 + js + css 的形式做开发,可以将这个嵌入进去,获得高性能的体现。(例如下拉刷新等)

特点

  1. 性能评级,同类最高。
  2. 60 fps的动画效果让应用更加生动,拥有着更好的用户体验
  3. 提供初学者工具包

弊端

  1. 整合AngularJS
  2. 不提供菜单、标签、基本应用结构/布局等基础架构
  3. 发展尚未成熟,可供参考的范例有限
  4. 文档中缺少“入门指南”
  5. 学习曲线不太友好。

实测

未发现与 cordova 有比较直接的关联。Codepen上,到是有一些比较酷炫的演示。

追加1:
famous-cordova-test,这个项目有与 cordova 结合的例子,测试效率方面不错,以及因此接触到了 cordova 插件。


React Native

https://facebook.github.io/react-native/
据说年底会支持Android,目前还为支持,暂时不做详细调研。

特点

  1. 天猫拿来用了

弊端

  1. 暂不支持Android