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

一篇文章读懂开源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.

用VB快速读取TextBox第N行的数据 用VB 设计VCD播放器 用VB设计更好的用户界面 用VB设计聚焦框程序 用VB实现“ICQ”式的启动欢迎画面 用VB实现全屏幕图形界面及动态功能提示 用VB实现任务栏右下角的小图标 用VB制作常居上层的浮动工具箱 用VB制作即时动态按钮 用VB作浮动式图标提示按钮 用Visual Basic编写托盘程序 用Visual Basic窗体背景花纹的实现 用Visual Basic设计窗体背景花纹 用Visual Basic设计更好的用户界面 用Visual Basic设计三维图形按钮 用VisualBasic制作半透明窗体 运行时改变控件大小的两种方法-VB资料 运行中隐藏/显示窗口标题栏-VB资料 在ListBox适当设定水平滚动条的宽度-VB资料 在VB中利用API实现窗体的平滑显示 在vb中让控件大小和位置随着表单的大小成比例变化的方法 在VB中实现闪动标题栏 在VB中实现位图的透明放置 在VB中使用数据窗体设计器插件 在VB中制作单独程序封面的两种方法 在VB中制作透明按钮 在Visual Basic中如何拖动窗体或控件 在Visual Basic中显示动态运行进度 在菜单中加入图标 -VB资料 在程序中调用关闭Windows对话框-VB资料 在任务栏中显示无边框窗体的图标-VB资料 关于设计一个防震系统!欢迎讨论! 请问各位高手!Win32 SDK里面有没有用来设置麦克风音量的函数? 用.Net技术实现:与扫描仪直接连接,将扫描图像保存为文件,其他子内容保存到数据库中? 请大虾介绍一款好用的web报表打印控件,最好有说明文档,谢谢 CString类型怎样转换成unsigned char * 关于使用System.Net.Sockets时的一些不明白的问题 关于.net编辑器操作的问题? 将main函数移动后出现的编译错误 请各位大佬帮忙,sql server是否有..start with..这样语句? 读"征集2001参加工作的程序员的工作感受和打算"有感! 我知道问提出在那里了,再问: 求职 怎么修改RTE控件的字体大小? 删除文件的问题 出大问题了?????!!!!! 有没有人用CORBA,JBUILER编写JSP? 请问有没有vc.net方面的好书呀 哪位大侠在使用JMAIL3。7来发送邮件时,出现,邮件成功发送但收件人收到的邮件没有内容???? 关于nt4.0下 hp -cdrw 不见了 在redhat linux中怎样配置dns和apache。本人是初次接触,希望您能详细点,多谢!! 在FTP服务器上删除文件用什么函数啊 一个奇怪的网络连接现象!请高手帮忙! @怎样比较数据库中的时间??急急急!!! 我知道我搞不定的,有高手肯定可以的!!!!!! 关于frame的问题 如何在Turbo C中加入汇编代码 vb中如何遍历文件夹 一个关于COM注册的小问题 急!如何安装 SMTP Service? 怎么设置treeview中每个分支中的背景色? first time vb中如何遍历文件夹 怎样调用别人的东西? 询问关于JAVA类库的问题 如何在.NET开发环境中为控件写事件与方法的代码? video for window 在2000下碰到的问题(急急急!!!!) 请问,如何才能将一个很大(多媒体)的文件上传到服务器上?如果我将这个一功能做成一个active.oxc控件然后放在网页上,可否正常使用呢? 多个终端向一个服务器发送数据时不能成功,而一个终端是成功的,刚开始学习网络编程,多指教 谁把大富翁2发给本人(newmon.wei@utstar.com),并提供其在2000底下的用法,不胜感谢 中国把投资足球的钱,不如用来发展一下IT业! 求教各位,我这样的有公司会要吗? debug.print 在VB.NET 中怎么用啊? 求播放声音的类 问大家一个简单的问题 关于自定义的动态创建窗口的函数的请教。 关于用Armadillo加壳 高分求救,大家来帮帮忙 打不出双引号,help 高分请问: Recordset.Delete的问题 绘图!!!! 如何使用DOMAIN 日内瓦是哪个国家的 一个电热毯接入照明电路中,通过他的电流为0.5A正常工作10min电流做的功是多少?能产生多少内能 日光灯的能量转化是不是直接由电能转化成光能白炽灯是电能转化成内能在后才变成光能对不? 日内瓦是哪个地方 巴西高原、东非高原、南非高原和青藏高原分别位于哪个大洲? 现在的日光灯如何将电能转化为光能 日内瓦是什么国家 到底是南极高原高还是青藏高原高? 日光灯的冷光能直接转化为内能或电能吗 南极洲是高原大陆,平均海拔高多少米? 东非高原和青藏高原哪个地壳厚度更大? abcd是元素周期表前四周期的四种常见元素,1、a是地壳中含量第二的元素2、b是第三周期元素中原...abcd是元素周期表前四周期的四种常见元素,1、a是地壳中含量第二的元素2、b是第三周期元素 南极洲大部分的面积都在1000米以上,为什么不说南极洲是世界上最大的高原? 当标准溶液PH=4.00时,测得电池的电动势为0.209V,测量未知溶液时,电池电动势为0.312V,求未知液的PH值 从元素周期表中,你还能得到有关元素的哪些信息 高原大陆为什么是非洲而不是南极洲 酸度计(pH计)是一种通过测量 的方法来测定溶液pH值的仪器.酸度计(pH计)是一种通过测量 的方法来测定溶液pH值的仪器.除可测量溶液的pH值,还可 等.酸度计由 和 构成.测量电极是 .新电极使用 什么白色晶体无色无味,无毒,易容于水? 硅酸钠与过量的碳酸和少量的碳酸反应有什么不同.为什么详细点谢谢 pH计能否测有色溶液或浑浊溶液的pH? 浓硝酸如何稀释,操作顺序,注意事项rt 我要照着操作,希望回答的人能够负责人,也为我的安全着想,好的话, 偏铝酸钠与过量二氧化碳反应会生成氢氧化铝沉淀,沉淀不消失为什么沉淀不消失?氢氧化铝明明有两性,二氧化碳与水反应生成碳酸,碳酸再与氢氧化铝反应,沉淀消失,但就是沉淀不消失,为什么 碱式盐、酸式盐与碱性盐、酸性盐的区别(越清楚详细越好) 高中化学题,Y是元素周期表中前四周期的元素,常温常压下, 大刀怎么飞 偏铝酸钠通入少量和过量二氧化碳反应现象 硫酸和偏铝酸钠反应方程式怎么写 大刀的环有什么作用 我的世界铁傀儡我想把铁傀儡放在我家附近,但我怕他会走得很远不回来. 亚硫酸钠能与偏铝酸钠反应吗? 国家的美称要150字以下,多一点,(要有解释) 我的世界铁傀儡问题都说他是好的,不过他总是迈着大步追我,我还在以为自己是安全的时候我已经被他挑飞了 配制50ml 65%的硝酸需要多少毫升75%的硝酸 有"足球王国"美称的国家是? 南极总面积有多大? 0.1mol/L的硝酸如何配制,硝酸的质量分数是65%~68%,浓度小于15mol/L,具体是多少不知道, 大型水力发电机的发电过程中那部分在转动?还是磁体. 南极面积有多大?同学说是 很大 用65%—68%的硝酸怎么配1+1硝酸? 哪些国家有两个美称 亚硝酸钠 硝酸钠 硝水 区别做卤菜中用的硝水,是什么东西啊?是亚硝酸钠的水溶液还是硝酸钠的水溶液啊?是不是用了它更容易使肉煮烂? 酸度计是电位差计吗? 我的世界手机版创造模式有没有铁傀儡? 南极的面积是多大? 关于测定电源电动势的问题为什么电流表与电源串联、电压表测得的U真=U测+UA′=U测+IRA?电压表测的不是电流表和电源的电压吗?不应该是最大的吗? 日内瓦是什么之国 污水硝氮含量和亚硝氮含量有什么直接关系吗 怎样测定电源的电动势和内电阻最好有视频还有注意事项 世界上最大的高原是巴西高原还是南极洲冰雪大高原如题 南极大陆的面积有多大 有什么东西向柠檬酸一样的晶体?要求:无色.无味.无毒.能食用.价格便宜. 偏铝酸钠和碳酸氢铵反应方程式 一把电烙铁接在220v的电路中,每分钟消耗4620j的电能,这时流过电烙铁的电 有一种不溶于水的白色晶体A,加入盐酸后能产生无色无味的气体B…………B能使澄清石灰水变浑浊,再滴入稀硫酸生成不溶于稀硝酸的白色沉淀C,然后过滤,再滤液中加入硝酸银溶液,又生成不溶 功率跟马力的区别如何换算,194kw功率的机器马力是多少? 从世界地形图来看,东非高原和南非高原都比巴西高原大,但为什么说巴西高原是世界最大的高原?巴西高原面积是500万平方千米,东非高原和南非高原面积是多少? 为什么不能再酒精灯焰心处加热酒精灯灯芯处温度( ),当烧热的试管突然接触灯芯,因( ),便导致试管破裂 二氧化氮和碳酸钠反应方程式 铁和硫酸铜生成什么 日光灯发光用什么做电源,电流是什么电,是什么能到什么能的转化
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘