说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

一篇文章读懂开源web引擎Crosswalk

HTML文档下载 WORD文档下载 PDF文档下载
Crosswalk发布至今只有不到一年的时间,截止至2014年8月份仅在Google Play上已发现的基于Crosswalk的web应用数量已有380多款,其中百万级下载量的应用有2款。本文将介绍Crosswalk的优势,与WebView的区别等特性。

Web技术的优势早已被广大应用开发者熟知,比如可与云服务轻松集成,基于响应式UI设计的精美布局,高度的开放性,跨平台能力, 高效的分发与部署等等。伴随着移动互联网的快速发展与HTML5技术的逐步成熟,Web应用已经成为移动端跨平台应用开发的热门解决方案。然而要在移动端充分利用Web技术的优势,仍然有许多障碍。


Crosswalk作为一款开源的web引擎,正是为了跨越这些障碍而生。目前Crosswalk正式支持的移动操作系统包括Android和Tizen,在Android 4.0及以上的系统中使用Crosswalk的Web应用程序在HTML5方面可以有一致的体验,同时和系统的整合交互方面(比如启动画面、权限管理、应用切换、社交分享等等)可以做到类似原生应用。现在Crosswalk已经成为众多知名HTML5平台和应用的推荐引擎,包括Google Mobile Chrome App、Intel XDK、Famo.us和Construct2等等,未来的Cordova 4.0也计划集成Crosswalk。同时在今年的中国iWeb大会上,Cocos2d-html5游戏引擎也宣布与Crosswalk展开合作。

Crosswalk有何优势?

Crosswalk采用Chromium内核并不断地快速演进(六周一次更新),使基于Crosswalk的Web应用充分享有Chromium的功能与性能优势,以及较好的平台一致性。同时,Crosswalk支持最新的HTML5 API,包括WebGL,WebAudio,WebRTC,Gamepad,WebSocket等等。一个展示基于Crosswalk的web应用的很好的例子是这款名为HexGL的3D游戏,我们在原有游戏(http://hexgl.bkcore.com)基础上做了一些改进(https://github.com/hmin/HexGL),如图1所示。它是一款用纯web技术开发的游戏,使用了WebGL,WebAudio,Gamepad,Presentation等HTML5 API,支持4.0之后的所有Andorid平台,并且在低端的Android设备上也能流畅运行,诸如红米手机。


图1:HexGL游戏演示

如果Crosswalk提供的API不能满足需求,还支持通过编写原生的Java代码来创建新的Web API。通过这种扩展机制用户可以轻松地获得他们所需的平台和设备能力。如果开发者不想自己动手而是利用已有的一些扩展API的实现,Crosswalk也支持与Cordova的整合,后者已有大量的成熟的API实现供开发者使用。稍后我们更会详细的解释。

Crosswalk允许Web开发者将他们的应用打包成系统的应用安装包(如:Android上的APK),获得与本地应用一致的体验。Crosswalk也支持多个应用同时使用一个Crosswalk库的共享模式,仅当应用第一次启动并且发现系统还没有相应的Crosswalk库时才提示用户下载安装。目前是大多数情况下开发者将Crosswalk直接嵌入到应用本身。在这种嵌入模式下Web应用开发者可以完全控制Crosswalk的更新。

同时,Crosswalk在不断试验各种Web前沿的功能,并积极地反馈与影响标准(W3C)的制定。更重要的是,Crosswalk确保这些被标准化的功能解决了现实的问题并帮助开发者创造更具吸引力的应用与用户体验。HexGL游戏中使用的Presentation API就是这些实验性功能的一个典范。它由英特尔向标准化组织提出,并在Crosswalk中最早实现。使用Presentation API的Web应用可以将网页内容以无线连接的方式显示在其它的屏幕上。例如,在HexGL游戏中用户可以使用一块大屏幕显示游戏的场景,并用一块小触摸屏来控制游戏。

与WebView的不同

WebView组件,如iOS的UIWebview、Android的Webview等,作为系统自带Web引擎,在HTML5能力上相比Safari for iOS、Chrome for Android都要差一截。另外在Android平台上,由于系统碎片化比较严重,不同Android版本的Webview的HTML5能力也有较大差异,导致相应的HTML5应用一致性难以保证。而Crosswalk,如前文所述,作为第三方的独立引擎有较好的HTML5功能和性能支持,较好的平台一致性,以及近似原生应用的系统整合体验。当然这样导致的缺点则是开发者需要将Crosswalk与应用程序一起打包,生成的应用大小会更大。因此Crosswalk提供了共享模式来减少应用的大小。同时Crosswalk一直在模块化与定制化方面不断努力,尽量缩减应用的大小。

有人可能会问,Android WebView自Android 4.4起已经采用了Chromium内核,这与 Crosswalk有和不同?基于Chromium内核的WebView(Chrome WebView)和Crosswalk比起来目前存在两大缺陷:一是不被4.4之前的Android支持;二是性能以及功能与Crosswalk还有较大差别。主要的原因是Chrome WebView要向前兼容基于Android 4.4之前的WebView的应用。这意味着Chrome WebView要支持许多旧的功能,所以架构设计更为复杂, 从而导致部分功能还没有完善,同时在某些情况下会降低性能。目前Chrome WebView的Canvas的性能所受影响最大,WebGL的性能与Crosswalk比也有所差距。由于Crosswalk不需要保持这种兼容性,它可以采用与Chrome浏览器非常相近的设计,  事实上Crosswalk正是构建于Chromium的content模块之上,这使得它速度飞快并易于扩展与维护。同时还有相应的增强 ,比如Web应用不需要采用多进程架构,这样运行时内存可以更加节省,等等。

Crosswalk与Cordova

Cordova(PhoneGap),作为第三方的HTML5应用开发框架工具的代表,极大促进了HTML5应用的发展。它提供了方便的跨平台应用打包/发布服务、实用的API、灵活的扩展机制、以及积累下来的丰富的第三方API实现。然而Cordova使用的web引擎是系统的WebView。如果开发者正在使用Cordova并且渴望更好的性能和更新的功能,如WebGL,那么Crosswalk是一个很好的选择。Crosswalk支持开发者在Cordova中用Crosswalk替换原生的Android WebView,并将两者完美的融合。当然,它仍然支持Crodova的扩展机制,不过如果web应用对扩展的性能要求较高, 采用Crosswalk自带的扩展机制是更好的选择。

目前Crosswalk采用提供定制过的Cordova开发包来支持Cordova中Crosswalk引擎的使用。不过Crodova项目本身也在改进架构以便引入诸如Crosswalk一样的第三方的web引擎,到那时开发者就可以更加灵活自如地在Cordova使用Crosswalk了。

打包基于Crosswalk的web应用

目前Crosswalk支持ARM与X86两种架构,用户在打包时可以自由地选择支持其中一种或全部架构。同时Crosswalk支持多种方式打包基于Crosswalk的应用。一种方式是Crosswalk的自带打包工具链,在这种方式下用户只需为web应用额外写个配置文件并运行一条打包命令即可完成打包。另外一种方式是使用Intel XDK,Crosswalk已经是XDK支持的web引擎之一,在用XDK打包的时候只需选择用Crosswalk打包即可。还有一种方式是我们前文所说的Cordova,开发者无论使用Cordova的CLI(Command Line Interface),还是ADT(AndroidDevelopment Tool),都可以打包基于Crosswalk的web应用。

Crosswalk也提供一种嵌入模式。在这种模式下Crosswalk支持一组类似于WebView的API,称之为XWalkView。通过嵌入XWalkView开发者可以在原生的Android应用中访问网页或运行web应用,如同使用WebView一样。当你的应用中有大量的java代码,但又想用web技术来写UI,这时我们推荐你使用Crosswalk的嵌入模式。在这种嵌入模式下,用户开发的是一种混合型的应用,打包方式上与系统原生的应用没有差别。

如果读者想了解更多使用Crosswalk的细节,请查阅Crosswalk官方文档(https://crosswalk-project.org/#wiki/home)。此外,我们之后也会陆续推出中文文章详细讲解如何使用Crosswalk。

总结

Crosswalk发布至今只有不到一年的时间,但是Crosswalk作为一款基于Chromium内核的web引擎,以其在移动平台上的功能、性能、系统整合体验、API扩展以及支持Cordova等优势。截止至2014年8月份仅在Google Play上已发现的基于Crosswalk的web应用数量已有380多款,其中百万级下载量的应用有2款。因为统计范围有限,我们相信Crosswalk实际使用量不仅于此,更重要的是Crosswalk的使用量仍在持续增长。在Crosswalk的邮件列表以及各类技术网站论坛中,如StackOverFlow,Construct2等等,几乎每天都开发者提出各种问题或给予我们反馈。这些让我们更加相信我们我们走在正确的道路上,今后Crosswalk仍将不断地创新与演进,推动移动端的web应用的发展!

作者:王兴楠,WebKit项目Committer, Chromium项目Committer,2011加入英特尔亚太研发有限公司,任开源技术中心的软件工程师,参与过多个浏览器与Web引擎项目。目前主要致力于移动端开源Web引擎Crosswalk在Android平台上的研发。

技术资料免责声明

1) Crosswalk is a project from the Intel OpenSource Technology Center.

2) Copyright © 2014 Intel Corporation. Allrights reserved. Intel, the Intel logo are trademarks of Intel Corporation inthe U.S. and/or other countries.

3) Any products, systems, dates, plans andfigures provided are preliminary based on current expectations, and are subjectto change without notice.

4) *Other names and brands may be claimed asthe property of others.

5)  By usingthis document, in addition to any agreements you have with Intel, you acceptthe terms set forth below.

You may not use or facilitate the use of thisdocument in connection with any infringement or other legal analysis concerningIntel products described herein. You agree to grant Intel a non-exclusive,royalty-free license to any patent claim thereafter drafted which includes subjectmatter disclosed herein.

INFORMATION IN THIS DOCUMENT IS PROVIDED INCONNECTION WITH INTEL PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OROTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THISDOCUMENT. 

Intel may make changes to specifications andproduct descriptions at any time, without notice. Designers must not rely onthe absence or characteristics of any features or instructions marked"reserved" or "undefined.” Do not finalize a design with thisinformation.

The products described in this document may contain design defects or errorsknown as errata which may cause the product to deviate from publishedspecifications. Current characterized errata are available on request.

Contact your local Intel sales office or your distributor to obtain the latestspecifications and before placing your product order.

Copies of documents which have an order number and are referenced in thisdocument, or other Intel literature, may be obtained by calling 1-800-548-4725,or go to:
http://www.intel.com/design/literature.htm.

IBM公布Softlayer中国业务落地时间表 推荐30款最佳的数据可视化工具 数据库迁移测试:选白盒还是黑盒? 东软发布首款英特尔架构企业级移动终端解决方案 英特尔与腾讯创立游戏创新实验室 推进RealSense技术 《近匠》系列沙龙之探寻绝密武器:移动跨平台开发 iOS走向开放:苹果新推iAd Workbench广告服务 腾讯薛伟:快速模型更新在精准广告推荐中的应用 微软Build2014第一天要点精华汇总(组图) Windows 8.1 Update 1五大改变:任务栏回归,增强鼠标支持(图) 【十大院士】怀进鹏:全球的计算模式可能重新形成 微软Build2014第一天应了解的15件事 TypeScript1.0发布,完美支持Visual Studio系列产品 欲与Android展开价格战,微软宣布在移动设备上免费开放Windows 2014深圳英特尔信息技术峰会次日要点汇总 4月4日:微软39周岁,生日快乐! 正式进军硬件市场 Atlassian发布可穿戴设备Bitband 云计算时代IT专业人员需具备的10项技能 【走近院士】李德毅:大数据是连接虚拟和现实世界的桥梁 微软Build2014大会第二天干货总结 Microsoft Azure拥抱Puppet、Chef、MongoDB... 唏嘘不已!Brendan Eich上任Mozilla CEO仅十天即因歧视同性恋被迫辞职 最火HTML5 JavaScript游戏引擎:国外篇(一) Facebook发布PlanOut 开源部分A/B测试源码 一周消息树:6款Java转C#的最佳工具、Web开发者必备的9个软技能 对话“宙斯杯”获奖代表:依托京东云平台,打造精品电商CRM 关于微软开源WinJS,开发者必须知道的5件事 告别丑陋banner条,InMobi联合开发者尝试原生广告 免费游戏开发经验谈:第一印象很重要 《近匠》小旭音乐:游戏音乐金牌匠人的练级之路 日600亿消息,月4.65亿用户——WhatsApp的Erlang世界 一周热点:Cloudera新一轮融资总额已达9亿美元 如何反编绎DLL文件?只知应该是C++写的,封装的是读卡器读取的函数!详细见内! 我只有这么多了?不会让我头一次到Java里问兄弟们就不给面子哈? 哪儿有视频捕获、多播的源代码下载? 有招聘pb的吗?我使用pb已经两年了,现在在北京, javamail问题 连接ACCESS时,总是要弹出LOGIN窗口,如何去掉? DIB与DDB到底有什么区别?? delphi 怎样建数据库 (dos6.22不动一会儿硬盘就停止响应了)如何在dos下设置硬盘的电源管理。命令是什么?谢谢 《TCP-IP详解卷2:实现》的源代码在哪里下载? 如何接受这个消息呢? Not operational? 谁来推荐本关于NT或2000 服务编程方面的书籍下载地址? 请问如何编写组播路由软件 如何实现 Delphi 带参数运行? 寻找DDbgridEh控件for Delphi6,高分! 一个VFP的打印问题! 关于基于单文档应用程序的问题 怎样在Exchange Server上部署应用,拦截所有通过outlook发给该Exchange的邮件,提供一个思路也行! wolfAone (黑色的狼(WOLF))你给我进来,有消息了! 请问JAVA如何读写注册表 经典图书??? 请问一个关于窗体置前的问题 HELP!关于STRUCT的问题! 请问,怎样知道光驱里面的光盘是不是已被更换? 在Delphi如何进行包的调用,本人将无比感谢 关于exchange的几个问题? sdk中怎样在客户区中播放视频文件(从通用对话框中) 打印问题 大家帮帮忙看看代码,指点我一下。 请问如何让浏览器中的COM组件得到当前浏览器的IDsipach接口(或IWebBrowser2接口)? 控件打印的问题 有关request.getParameter();的奇怪问题! 常见代码,有些地方我不明白帮我详细注解一下以下代码 征求解决方案 裁剪linux后,不能起动 请教MayFlower,asmx文件变成下载的问题 高手难题:SYBASE触发器中如何获取text字段的内容 珠海程序员薪金调查!(决定了我的前途)谢谢! 对利用Telnet进行自动化处理提点意见 强制类型问题 这都啥年代了?CSDN还在卖VS.net beta2!!! 请问在一个基于对话框的应用程序中,怎样实现打印功能?同时要求不弹出打印对话框,而且将纸张大小设为A4,打印方向设为横向? 小问题 SQL Server 7.0有for Alpha的吗? JIT究竟是什么东西?能否详细叙述,谢谢!另外,由于Java的跨平台技术,编译后的Java程序速度相对较慢,那么速度究竟慢到什么程度?通过什么能提 请教各位高手,关于CDONTS.Newmail对象的一些疑问? 我在新建类时为什么找不到CTOOLBAR基类,怎么新建基于CTOOLBAR的类? 用goto语句如何调用另外一个过程中的标签?急!急!急! 我仍然不能打开第二个光驱? 500分求一份关于工资管理系统的分析报告 导体球壳内部一定等势吗?和接地有关系吗?和带电是否均匀有关系吗?关于这方面的知识多多益善,我是说空腔导体 煤含碳怎么测 晶粒和颗粒的区别? 平行板电容器两端电量不一样,电压怎么求? 石油中碳和氢的含量占? 我英语水平还不错,但是想学另一门外语,不知道哪一门比较好.主要还是想针对就业... 一平行板电容器电容为0.25UF 两级板间的电压为200V 则电容器电量为多少? 英语翻译二本院校的话 欢迎多多分析 商务英语 电气工程及自动化 哪个就业前景好 CH3-CH=CH -CH -C=C-CH3 有没手性碳原子的啊,有的话有几个啊?\ -OH 学哪门冷门的小语种前景好? 学商务英语的具体可以做哪些工作?3Q 解释下列语句的作用?LoginName=trim(request.form("LoginName")) Password=MD5(trim(request.form("Password"))) set rs = server.createobject("adodb.recordset") SQL="select * from Nwebadmin where username='"&LoginName&"'and password='"&Password&"'" “人活着就是为了改变世界”的含义是什么 大学物理两个同心共面的圆线圈,半径分别为R1和R2且R1 求大神解释下下面语句讲了些什么 人活在世界上的意义 太阳平常的紫外线 会无时无刻损坏金刚石晶格吗 语文当中语句有那几种?分别是怎样运用的? 人活在世界上有什么意义 日本核辐射,对我们有危害吗? 语文当中语句有那几种?分别是怎样运用的? 人活在这个世界上有何意义呢?怎样让朋友们更懂得珍惜你勒? 和刚来中国的受到核辐射的日本人一起在中国吃饭,会受到核辐射吗? 图1-7-7所示是一个由电池、电阻R与平行板电容器组成的串联电路.在增大电容器两极板间距离的过程中( ) 图图1-7-7所示是一个由电池、电阻R与平行板电容器组成的串联电路.在增大电容器两 商务英语和法语哪个就业前景好?我准备 报对外经济贸易大学的 ,选什么 就业前景好? 植物中含氮量测定方法,或者说微量的含氮量如何测定 人类世界是先有男人还是先有女人?一直搞不懂 世界上出现的第一个人是男人还是女人? 商务英语跟经贸英语哪个就业前景好 所有植物中 含钾量最高的 植物是什么.所有植物中 哪种植物含钾量 是最高的.注:是植物,不是食物. 为什么世界出了男人和女人就没有其他人类呢 商务英语和英语教育哪个就业前景好? 两个同心球面 外球带电量为Q,半径2R;内球接地,半径为R 求内球带电量 为什么答案为Q/2 如何准确测定不锈钢中的碳、硫含量量 商务英语和公共事业管理哪个就业前景好具体说说类似的工作,希望能具体,不要泛泛而谈的 物理牛顿第一定律生活中,常会见到物体从高处下落的运动.如用手拿着一个小球和一张纸片,从同一高度同时释放小球和纸片.我们看到小球先落地,纸片后落地,如图(a)所示.美国宇航员大卫&# 为什么世界上只有男人和女人,每人其他人类,除了外星人 在球坐标和柱坐标中解波动方程,得到的表达式是什么?亥姆霍兹方程在球坐标中求解球面波的表达式(要亥姆霍兹方程推导出来的)柱面波的表达式(要在柱坐标中解的波动方程求出来的) 物理牛顿第一定律题正在沿水平路平做直线运动的车厢天花板上A点有一个小螺钉脱落,在下落过程中,螺钉并没有与其它物体相碰,不计空气阻力的影响,以下结论正确的是:( )A.螺钉必定 304不锈钢的含碳量? 关于直线方程:求证中点坐标公式啊 植物缺氮怎么办自家的一盆景缺氮不用化肥该怎么办? 为什么动物总是雄性吸引雌性,人类却是女人吸引男人?我知道动物和人本来是有区别的,不能一概而论,但是还是想听听大家的看法.我是说人和动物怎么是相反的啊?比如很多雄性动物都花枝 球的标准方程是什么 植物 氮来自总所周知,氮元素在植物中占着很大的比例,植物体不可缺氮,这么大量的氮元素到底从哪里来的呢?不是常说只有根瘤豆科植物才可以利用空气中的氮妈?而且构成土壤的元素也没多 不锈钢为什么含碳量都很低? 北京是不是有核辐射?浙江的沿海地区会有较大的核辐射吗?假如有核辐射有什么简易的防护措施吗? 植物为什么需要氮?请写出主要原因,只要简要 谢了 原子序数等于核电荷数?消化属于化学还是物理反应? 世界上到底是先有男人还是先有女人. 桌面上有一个倒下的未开启的矿泉水瓶,瓶中的气泡位于瓶的中段上方,若将瓶突然向左推动,气泡将向(左)方运动,若将瓶突然向右推动,气泡将向(右)方运动,这是(水)的惯性起主要作用. 空气中氧气的含量的测定用什么----,不能用碳代替是为什么 串联U=U1+U2.U1和U2大小与R1和R2之间有什么关系串联电路中U=U1+U2.分电阻两端电压 U1和U2是串联电路总电压U一部分.那么分电压U1和U2大小与R1和R2之间有什么关系? 日本地区核辐射会造成生物和动物的变异吗?基因变异吗?还是本体变异。 为什么封闭导体壳接地时,内部电场不受壳外电荷与电场影响?为什么封闭导体壳接地时,内部电场不受壳外电荷的电场影响? 串联电路中R1/R2=U1/U2是怎么来的 晶格能与键能的区别 为什么接地的导体壳内部电场对壳外空间没有影响 串联电路中U1/U2=R1/R2,这句话怎么理解? 求2013年日本核辐射东京地区的数据,寒假想要去自由行可是家里以核辐射为理由不让去.(最好)要有数据!
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘