DCloud_heavensoft
DCloud_heavensoft
  • 发布:2014-10-27 06:27
  • 更新:2014-10-27 06:27
  • 阅读:16986

crosswalk可以作为插件集成进来吗,和5+runtime各有什么优劣?

分类:HTML5+

更新于2017年2月,intel官方已经宣布终止crosswalk项目。
此问题没有继续讨论的必要了。

====================================================================

有不少开发者问到crosswalk是否可以作为插件集成到HBuilder中。
首先,通过我们的原生插件集成方案,使用HBuilder的离线打包和插件开发模型,可以把crosswalk当作一个原生插件集成进来。
但是需要一点原生开发的知识,在问答系统里搜索"插件开发"就有教程。
注意即使集成后crosswalk的webview和5+的webview并不能同时出现,一个app里的某个页面,要不用cw渲染,要不用5+渲染。
其次,我们曾有想法要把crosswalk做一个标准插件,在cw上扩展5+的api,包括Native.js,但到了2016年后,团队已经放弃了这个想法,投入产出太低。

crosswalk的技术路线:是集成chromium内核替换Android webkit浏览器内核,由于chomuin的执行效率高于webkit,所以性能也得到提升。
cw主要解决的问题有2个:

  1. Android4.0-Android4.3之间的webview性能差的问题,主要是div动画、canvas、webgl。Android4以前用不了cw,Android4.4起用不着cw。
  2. 浏览器的兼容性问题。

对于5+而言,这2个问题并非本质问题。

  1. Android4.4已经成为主流,Android6.0也在快速增长,Android4.0-4.3之间的canvas、webgl改进价值虽然存在,但越来越弱。而div动画低效的问题在5+里一直是用原生view动画来解决,性能体验更好。
    目前如果是为了优化canvas,可以采用的一个方案是:把canvas界面独立出来,把cw通过sdk方式进入,然后独立的界面用cw渲染,如果需要5+api,通过跨窗体通信让其他webview执行5+api。
  2. 浏览器兼容性问题在手机上并不严重,都是webkit内核,不要用太新的css3语法,一般不会有兼容性问题。HBuilder也有浏览器兼容性语法提示,写代码时注意看下代码助手右侧的提示。

但引入cw进5+的问题很多:

  1. cw上扩展plus和Native.js工作量非常大
  2. cw上真机运行、云打包、sdk配套的工作量非常大
  3. cw的体积最小也得9M。而目前HBuilder基座如果不带个推那些插件,才1m的体积。

利弊权衡,我们决定放弃引入cw的计划,把精力投入到更容易产生效果的地方。

6 关注 分享
Curtis Joshua 梓宏 书痕 Trust j***@qq.com

该文章目前已经被锁定, 无法添加新评论

DCloud_heavensoft

DCloud_heavensoft (作者)

回复 Joshua :
mui里也有基于纯css的actionsheet,可以自己添加内容。
2015-01-15 19:26
Joshua

Joshua

回复 DCloud_heavensoft :
其实想问下,有没有提供Modal的的api。
2015-01-15 09:12
Joshua

Joshua

回复 DCloud_heavensoft :
其实做一些复杂的popover,比如里面包含着table,list之类的内容,那就只能用html+css3了
2015-01-15 09:08
DCloud_heavensoft

DCloud_heavensoft (作者)

回复 Joshua :
popover用css3实现有2个问题,一个是盖不住原生控件,比如map或者跨webview;另一个是背景遮罩盖不住手机顶部状态栏。为了解决这个问题,我们提供了plus.nativeUI,参考 www.html5plus.org/#specification#/specification/nativeUI.html
2015-01-14 19:14
Joshua

Joshua

非常感谢DCloud_heavensoft, 解析得很详细。不过我觉得,其实性能方面,应该分两方面说明,一个是原生的api,和浏览器的html/css/js。比如我只是做一个popover或者一个slider,我肯定是用css3实现,不可能调用原生的api。这里就涉及到浏览器的性能了。但是如果我要处理图片,音频或者视频,那肯定是调用原生的api。前端的js永远限制在浏览器的环境,性能肯定不如原生的。
2015-01-14 15:09
doPatient

doPatient

现在貌似就已经降到10%了 支持hbuilder团队着手集成了
低端机起码还有2年以上的时间才会被淘汰
2015-01-03 23:57