Android 4.4 Browser framework代码分析

概述
     Android 4.4 Kitkat版本中,google对浏览器的策略发生了很大的改变,以前使用的是Webkit内核,在Kitkat版本中,采用Chromium内核实现。如此,与浏览器相关的framework层代码也相应的有所变动,主要体现在对Webview的实现,原本基于Android WebKit的WebView实现被换成基于Chromium的WebView实现。
     从Android源码结构分析,Android 4.4之前版本中的external/WebKit目录被移除掉了,取而代之的是chromium_org,也就是说chromium已经完全取代了之前的WebKit 。而在framework层则多出了一个目录(/frameworks/webview/chromium/),原有的webkit目录(/frameworks/base/core/java/android/webkit/)依旧存在。上层应用依旧为Browser(/packages/apps/Browser),以下将主要针对Android 4.4中浏览器模块的framework架构进行分析。
     
    WebView层次结构
      Android 4.4  framework中WebView的结构分为了两层,一层为原有的WebView API层(/frameworks/base/core/java/android/webkit/),其主要提供一些API给上层使用,提供一些接口,对于这些提供给上层的API基本保持不变,便于与老的版本进行兼容。另外一层则为桥接代码层(/frameworks/webview/chromium/),其作为中间交互层,对WebView API接口数据的处理,并将处理信息传递到chromium内核中进行实现与执行。总体结构如所示:

       上图主要有四个部分,其中跟WebView相关的主要是上面三个部分,首先是WebView接口部分,它提供对外编程接口,同时它的内部实现可以基于桥接代码,也就是第二个部分。桥接部分的代码主要有两个作用,其一是实现WebView接口对实现的调用,第二是调用下面一层的代码,这里面有个重要的部分就是需要设置AwContents为了绘图而需要设置的两组函数数组,这个在渲染部分介绍。它的代码可以在frameworks/webview/chromium部分找到。以上两个部分都是AOSP部分代码,而第三个部分是AwContents是在Chromium项目中的,主要是构建被桥接代码使用的接口,这一部分主要基于Content接口,里面有很多不同于Chrome浏览器的实现。
    Browser framework的实现关系

  之前也提到Android 4.4  framework中WebView相关主要由WebView API与桥接代码组成。WebView API作为接口部分,其很多类的实现与桥接代码部分一一对应。在WebView API中有与上层交互紧密相关的WebView类,网页加载有关的WebViewClient类,浏览器Cookie管理相关的CookieManager类,地理位置相关GeolocationPermissions类,浏览历史相关WebHistoryItem类,设置相关WebSettings类等,其对应桥接层类分别有WebViewChromium、WebViewContentsClientAdapter、CookieManagerAdapter、GeolocationPermissionsAdapter、WebHistoryItemChromium、ContentSettingsAdapter等。具体关系图如下图所示:




参考网页:

http://mogoweb.net/archives/686/comment-page-1

http://blog.csdn.net/milado_nju/article/details/17098399#comments


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值