Android 4.4 webview 架构
来源:互联网 发布:如何查看淘宝客pid 编辑:程序博客网 时间:2024/06/02 04:30
容,API是不能随便乱动的,所以framework/base下面webview中留下了提供给上层接口的一些类文件。
对Anrdoid webview实现取而代之的是chromium项目的webview,通过桥接的方式将chromium的中webview的实现和framework base的webview接口相联
系,主要结构如下:
Android.webkit.WebView
Bridge from AwContents to WbViewAndroid AOSP
Chrome Project
AwContents
ContentBrowser Components
Blink
上图所示的代码结构如下:
org.chromium.content.browserexternal/chromium_org/content/publicChromium ContentView
根据上述图表信息可以看到4.4 webview的实现最终转移到chromium的ContentView来进行,在ContentView所在的模块最终调用native的内核对网页进行渲染。
形象的理解上述流程从一个loadUrl来看,详细流程如下:
Browser.loadUrl ------> WebView.loadUrl -------> WebViewChromium.loadUrl --------> AwContents.loadUrl ------> ContentViewCore.loadUrl
从Browser APP调用loadUrl之后依次经过上面表格中的四个模块的调用,最终结束了WebView的内部流程,最后在ContentViewCore.中调用nativeLoadUrl从而调到内核的具体实现中。
上面这个loadUrl是一个比较简单调用流程的例子,在一些比较复杂的调用流程在org.chromium.content.browser的类中还会去调用chromium_org下面的其它类的实现,比如调用base下面的基本类库等等。
Chromium WebView使用的webkit内核的代码在external/chromium_org/third_party/WebKit目录下,Chromium_org目录下面会有java以及C/C++的Code,在java层中调用的native方法会在对应目录下的C code文件中实现。
JNI的实现在4.4中使用Chromium中的Python脚本进行自动生成JNI相关的文件,java向native层的调用方法前面会带有native字样,如nativeLoadUrl,
而native层调用java层的方法会有@CallByNative的注释,python脚本会在编译的时候根据这个注释自动的去生成JNI的相关的文件。
java层的native方法将方法名前面的native字样直接去掉就是native层对应的该方法的实现,如Java层nativeLoadUrl =====》 native层的loadUrl
有待继续study.......
参考资料 http://mogoweb.net/archives/596
http://www.ituring.com.cn/minibook/705
- Android 4.4 webview 架构
- android 4.4 WebView
- android 4.4 webview 学习
- Android 4.4 WebView实现分析
- Android 4.4 webview 显示问题
- Android 4.4 WebView实现分析
- 【Android】【Webview】WebView 简介
- android WebView
- Android WebView
- Android WebView
- android webview
- Android WebView
- android WebView
- android WebView
- Android webview
- android webview
- android webview
- Android WebView
- Android JNI的若干问题总结
- Linux双向链表(二)——逻辑判断
- test1-1(谨以此开始我的c++之旅)
- php smarty
- c#不修改Host文件,指定IP地址
- Android 4.4 webview 架构
- CRM上线之路 走上了CRM实施顾问-第82天上班 -第17周 .
- 超级精仿高仿金山手机卫士源码
- 大端和小端区别-linux
- 【Lua学习笔记】 Lua中实现面向对象,转自云风的博客
- Linux RAR 安装和使用
- MySQL中的临时表,与表变量
- 前端开发设备的屏幕尺寸和规格
- 2013.11.28数据仓库和事务处理系统的不同(物理底层参数)