400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

ChromiumonAndroid:认识ChromiumWebView-创新互联

Android KitKat一项重要的更新就是WebView采用Chromium/Blink渲染引擎,本文简要的叙述了新版WebView的主要特性、需要进一步改进的地方以及WebView的代码结构等。

托里ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!

WebView前世今生

WebView是Android平台上一个非常重要的系统组件,用于将一个显示Web页面的窗口部件view嵌入到应用程序,并提供了一组API接口允许开发者定制页面加载和绘制的行为,比如响应页面加载状态的变化和弹出JavaScript对话框的请求等等。自Android 1.0发布以来,WebView被广泛地使用在应用程序中,最典型的当属Stock浏览器了,它就是基于WebView开发的一个浏览器程序。关于详尽的文档描述,请参看WebView的官方文档。

早期的WebView (在Android 4.4以前)是基于WebKit实现的,可以简单理解为直接在WebKit代码库中增加一个分支,解决Android平台特定的页面渲染方式以及通过JNI接口将WebKit的功能桥接为Java层的API接口。在图形方面,WebView和Android平台一样,采用的是Skia图形库,但没有启用硬件加速,渲染性能非常不好,这也是许多使用者经常抱怨的诟病之一。

随着Android 4.4 (KitKat) 平台的发布,基于Chromium开源项目的WebView成为KitKat平台的一大亮点。新版WebView采用了与Chrome浏览器相同的Blink渲染引擎,v8 JavaScript引擎,网络库以及内存分配器,在HTML5特性支持方面不仅与Chrome保持了更高的一致性,而且还弥补了旧版WebView在渲染性能方面的不足。Android平台上所有使用WebView的应用程序都将无缝透明地受益于新版WebView的特性支持和性能提升。

目前,Android KitKat上的WebView是基于Chromium 30.0.0.0,而Chromium开源项目一直以6周一次的迭代周期在快速演进,Google官方并没有给出一个明确的计划什么时候以什么方式升级WebView组件,也许是通过GMS,但尽管如此,就目前的情形来看,新版WebView只能在Android 4.4系统上使用。这就意味着目前市面大量Android 4.3或以前的设备都不能使用新版的WebView,享用不到新版WebView引入的好处。为什么其他非4.4的设备上不能使用呢?原因主要是Chromium WebView必须与AOSP (Android Open Source Project) 源代码一起才能编译,不能单独从Chromium的代码库中编译一个可以独立安装的软件包。

主要特性

不足之处

更新:最新的Chromium WebView,已经添加了WebGL,WebRTC以及加速Canvas 2D的支持了。

代码结构

确切地说,在AOSP中WebView是由三部分代码组成:

Chromium on Android: 认识Chromium WebView

从AOSP中编译WebView

如果编译一个完整版的WebView,需要先要下载整个AOSP的代码,运行source build/envsetup.sh和lunch 命令后,进入framework/webview目录执行mm –j8编译WebView模块,最后在out目前将会得到libchromiumwebview.so和libwebkit_plat_support.so两个动态链接库,将这两个so文件拷贝到目标设备的/system/lib目录下,重启设备后就可以使用你自己编译的WebView了。

 从Chromium中编译WebView

实际上,也从直接从Chromium代码库中编译WebView,但这个WebView并不是一个完整的WebView。前面说到,WebView还包括了Android平台支撑代码,而Chromium代码库并没有包含这部分代码,所以编译出来的WebView只有纯软件的渲染模式。因此,它对帮助验证一个WebView功能性方面的问题还有有用的,对于优化渲染性能只能从AOSP编译了。

根据chromium.org官方文档,下载chromium代码库,配置好环境后运行:

$ . build/android/envsetup.sh
$ android_gyp
$ ninja –C out/Release android_webview_apk

编译成功后,在out/Release/apks目录中会有一个名为AndroidWebView.apk的文件生成,它是一个Shell程序,提供了一个简单的UI,方便开发者验证WebView的核心功能,但AndroieWebView.apk并没有直接使用android.webkit.WebView,而是基于WebView的核心类AwContents实现的,查看manifest文件你会发现它将android:hardwareAccelerated设置为false了,也就是说应用程序没有开启硬件加速,相应地WebView也只是工作在软件渲染模式下。如果强制把android:hardwareAccelerated设置为true,这个Shell程序则不能正常显示网页了,这是意料之中的,硬件加速渲染模式必须要与AOSP一起编译才会有。

参考资源

[1] WebView SDK,http://developer.android.com/reference/android/webkit/WebView.html

[2] Web程序的迁移,http://developer.android.com/guide/webapps/migrating.html

[3] WebView for Android, https://developers.google.com/chrome/mobile/docs/webview

[4] 远程调试 for Android, https://developers.google.com/chrome-developer-tools/docs/remote-debugging

[5] Android上编译Chromium, https://code.google.com/p/chromium/wiki/AndroidBuildInstructions

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文题目:ChromiumonAndroid:认识ChromiumWebView-创新互联
当前地址:http://mbwzsj.com/article/dojegh.html

其他资讯

让你的专属顾问为你服务