您的位置:首页 > 移动开发 > Android开发

Android webkit 时代结束,我们需要做些什么准备?

2014-03-03 01:26 597 查看
Android 4.4最新发布版本对浏览器来说是一个革命性变化,external下面的webkit源码已经被移除,前一阵子吵得沸沸扬扬的chromium作为android默认浏览器的猜测已经尘埃落定,这对于已经习惯于android webkit开发的人来说,需要去学习android chromium。根据本人观察这次大的变化需要以下几点。

(1).WebView接口没有任何变化,基于此的应用可以继续放心使用

(2).android chromium 在功能和性能较之google自己研发的Chrome浏览器(Android版)差距还是挺大。

(3).有些在androidwebkit 实现的功能在androidchromium 基本需要重来一遍,对于已经习惯android webkit开发的人员,需要快速去了解新的内核原理和实现方式。(焦点实现逻辑,绘制方式等等)

针对这3点重点做下介绍,实际在androidchromium出世之前,google已经在调整WebView的内部实现了,已经加上了WebViewProvider(WebView继承WebViewProvider),已经为换核做好准备了.为了保持WebView上层接口的一致性,google对于android chromium还是动了很大手术。我们知道chromium本身的框架是基于多进程模型,渲染进程采用沙箱模型。大家可能看到在external目录下存在一个chromium文件,但是这个不是真正的chromium源码,这只是chromium其中的一个网络模块。这个模块google做得已经很独立,这个模块也是体现chromium速度快的新特性,目前已经好多使用开源软件的公司直接拿这个网络模块单独去使用。chromium_org是真正存放chromium源码的文件夹。目前android4.4采用chromium30版本,目前最新的chromium33
Release版本已经发布。

针对android chromium和Chrome浏览器(Android)在设计框架上还是存在较大差异。

(1).android chromium 采用单进程模型,能够省内存,当时在稳定性上就要略差一些,同时没有了沙盒模型安全系数会略低一些。

Chrome浏览器(Android) 采用多进程模型,在稳定性安全性都有一定优势,但是占用内存又会多一些。

(2).渲染方式 android chromium 要依赖于android UI架构,也就是我们常说的OnDraw模型,说到OnDraw,google采用硬件和软件2种方式。软件方式和androidwebkit使用方式接近,就是把所有的数据放到skpicture上面,然后在OnDraw的时候绘制,通知到surfaceflinger 完成最终混合操作。硬件方式:依赖于android本身UI系统,目前只能在android4.4平台上运行。具体如何运作,在后续的文章中会进行详尽介绍。

Chrome浏览器(Android) 只有硬件加速一种,但是这种硬件加速的模式和上面的有所不同,采用SurfaceView方式,道理很简单就是申请一块单独的内存,专门给GPU线程来使用(android版本的GPU存在Browser进程中以线程方式存在),这样做的目的,可以同主UI线程分离,使得页面动作处理更加顺滑。

(3) android chromium 在功能上目前不支持WebGL,WebRTC,WebAudio等,Chrome浏览器(Android版)支持绝大多数HTML5功能。

Android webkit 我们知道如果要对焦点定制,我们直接修改webkit封装层就可以,但是如果要修改android chromium中的焦点或者js扩展一些功能,就显得不是那么直接,其中有以下几点原因:

(1) 多进程的框架带来了,全局数据的共享以及控制都显得不方便。拿简单的settings的数据控制,都带来不方便性

(2) android chromium 内核改名为blink,虽然在基本的功能上和webkit有非常相近之处,但是在具体的逻辑上,改动已经非常大,特别是在Loader过程,而且以后会越走越远。也就是说在以后的开发过程中,只是掌握webkit的框架是远远不够的,需要跟上blink的节奏。

(3) 从绘制方式来看,android chromium的混合主要采用CC(chromium compositer) 模块,这和webkit直线式绘制模式有很大区别。

以上是研究了android chromium代码得出的一些结论,如有不当之处欢迎指正。

如果对这篇讲的技术有任何疑问,第一时间获得文章更新,每天发布一篇技术大牛的原创文章,更多技术信息分享。

欢迎关注个人微信公众平台:程序员互动联盟,扫一扫下方二维码或搜索微信号coder_online即可关注,在线帮您解决技术难点,给大牛直接出难题。





参考资料:

https://android.googlesource.com/platform/external/chromium_org/

lihui40319@sina.com

QQ:390012381
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐