通用技术 Crosswalk 简介

恒温 · 2015年05月29日 · 最后由 麦子 回复于 2016年09月23日 · 3297 次阅读

我是搬运工。最近测试 Hybrid 的人越来越多了,但是却不知道 Hybrid 的一些开发技术。你可以不会用,但是基本的知识还是要了解下的。

Web 技术的优势早已被广大应用开发者熟知,比如可与云服务轻松集成,基于响应式 UI 设计的精美布局,高度的开放性,跨平台能力, 高效的分发与部署等等。但是要充分利用 Web 技术的优势,仍然有许多障碍。Crosswalk 项目正是为了跨越这些障碍而生。本文讲会简单介绍 Crosswalk 项目相关的概念和基本功能。


首先,Crosswalk 采用 Chrome 浏览器的 Blink 渲染引擎并不断的快速演进 (六周一次更新周期),使 Web 应用在 4.0 版本之后的 Android 平台上充分享受 Blink 的性能优势。同时,我们支持最新的 HTML5 API,包括 WebGL,WebRTC,WebAudio,Screen Orientation,WebSocket 等等。

有人可能会问,Android WebView 自 Android 4.4 起已经采用 Blink 渲染引擎,这与 Crosswalk 有和不同?基于 Chrome 的 WebView(Chrome WebView)和 Crosswalk 比起来目前存在两大缺陷:

  • 一是不被 4.4 之前的 Android 支持;
  • 二是性能以及功能与 Chrome 还有较大差别。

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

起步

Crosswalk 支持比较完善的 Web 技术,可以帮助 Web 开发者提高开发效率。例如像 Polymer 这样的 Web 组件模型框架可以在 Crosswalk 上顺利的工作,如同在 Chrome 浏览器中一样。同时对 HTML5 API 最大程度的支持让你的游戏与应用开发得心应手。

如果 Crosswalk 提供的 API 不能满足你的需求,我们还支持通过编写原生的 Java 代码来创建你自己的 Web API。通过这种扩展机制用户可以轻松地获得他们所需的平台和设备能力。

如果你正在使用 Cordova 并且渴望更好的性能和更新的功能,如 WebGL,那么 Crosswalk 是一个很好的选择。Crosswalk Cordova 项目帮助你在 Cordova 中用 Crosswalk 替换原生的 Android WebView,并将两者完美的融合,是不是两全其美?!当然,我们仍然支持 Crodova 的扩展机制,不过如果你的 APP 扩展对性能要求较高, 采用 Crosswalk 自带的扩展机制是更好的选择。

打包你的应用

Crosswalk 允许 Web 开发者将他们的应用打包成 Android 系统的应用安装包(APK),之后可以发布至应用商店,如 Google Play。Crosswalk 支持多个应用同时使用一个 Crosswalk 库的共享模式。但是大多数情况下开发者更倾向于将 Crosswalk 直接嵌入到应用本身。在这种嵌入模式下 Web 应用开发者可以完全控制 Crosswalk 的更新。例如在发布到应用商店之前在最新的 Crosswalk 上对应用进行测试,这是开发者这一直想要的功能。

创建一个 APK 的另外一种方法是使用 Intel 的 XDK 或者其它类似的工具,如 Construct 2。Crosswalk 也提供了自己的命令行工具, 让开发者比较灵活地控制打包过程。这个命令行工具使用起来十分简单:写一个包含基本应用信息的 manifest 文件,然后运行一条命令就直接搞定!

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 13 条回复 时间 点赞

这篇文章很眼熟。。。
据我所知,现在不少主流浏览器都是基于 WebKit 内核做的,如新版的 opera ,文中的 crosswalk(某个角度来说它也算浏览器)。所以他们都会提供自己在 chromedriver 基础上进行更改来适配自己的浏览器的 webdriver 。只是 crosswalk 的 webdriver 有点坑爹,只提供了 linux 的预编译版本(而且我在 docker 中用 ubuntu:14.04 跑还会说需要某些动态库),其他平台需要自己编译。

crosswalk 是界面都用 html 实现(区别于既有原生界面,又有 webview 界面的 hybrid)的 android app 的利器(否则 4.4 以下的界面适配和调试会死人的),用 cordova/phonegap 来做产品的不少都会用它。

之前做过一下使用 cordova/phonegap 的应用,晚些我也搬运一些这方面的文章介绍一下。

React 一出,谁与争锋.

@lihuazhang 恒温,你不是做盒子的么,我一直有个疑问啊,你们盒子的 APP 还要 Hybrid 么?用 Hybrid 有什么优势么?~

恒温 #11 · 2015年05月29日 Author

我们盒子没这些测试的。晚点我搞一个 crosswalk 的测试方法出来。雏形有了。

android 上 hybird 上用它的还蛮多,测试和 webdriver 几乎无异,只是目前只有 linux 版本

#5 楼 @luis 什么意思?只有 linux 版本?你说的是它提供的编译好的 webdriver 吧?

@chenhengjie123 我们目前用的就是他 github 上的 linux 版本的 driver,其他 platform 要自己编译一个版本。

#7 楼 @luis 嗯。是的,要自己编译。。。真心麻烦。。。

#8 楼 @chenhengjie123 恩,knowledge 不够,各种问题,不懂。。。

#7 楼 @luis linux 下面可以直接自动化应用么?

@lihuazhang ,恩用了一年多了。。。

#11 楼 @luis 写篇文章分享下?我急需这方面的知识。。

@lihuazhang http://testerhome.com/topics/2669, 加班写的,希望可以帮助你。。。

麦子 [该话题已被删除] 中提及了此贴 09月23日 16:33
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册