《深入理解Android:WebKit卷》是Android經典畅销书籍系“深层次了解Android”系列产品的第6部,由前百度站长平台挪动浏览器市场部的几个主要从事Android系统软件和WebKit科学研究的杰出技术工程师编写。它承继了该系列产品书籍的整体观念,以Android源码为借助,以WebKit解决数据信息的步骤和它的程序模块根据,对WebKit的工作方案和完成原理开展了深层的分析,应该是现阶段对Android系统软件下WebKit讲解最深入的经典著作。自然,它对全部科学研究浏览器和WebKit核心的技术工程师们有一样的协助。
本书共11章,行为主体一部分按浏览器解决数据信息的步骤来机构:
第1章是准备工作,详细介绍了Android全源代码开发工具的构建、调节专用工具的应用,及其WebKit源码的构造。
第二章讲解了浏览器工作中原理、WebKit的总体构架与设计方案,及其与它与流行浏览器模块的较为。
第三章讲解了WebKit的WTF库,包括智能指针、Assertion、代码优化与器皿、进程封裝、Webkit运作时进程构造。
第四章讲解了WebKit的Loader与互联网库,包括Loader的设计方案与完成构架、資源载入步骤、MainResourceLoader和SubResourceLoader、Chrome-net互联网库,及其WebCache。
第五章讲解了网页页面分析,包括HTML英语的语法分析、网页页面解决一般全过程、CSS款式解决、JS脚本实行等內容。
第六章讲解了排版设计合理布局,包括CSS框实体模型、合理布局测算,及其render有关的关键类。
第7章讲解了3D渲染和硬件加速器,包括手机软件绘图步骤、手机软件生成、硬件加速器生成等。
第八章讲解了AndroidWebKit架构,包括WebKitJava层关键类与关键插口和WebKit架构完成源代码,并根据WebKit的浏览器做了案例完成
第9章讲解了JavaScript拓展插口,包括V8原理及插口、WebKitJavaScript插口,并做了HTMLElementbinding案例分析和HTML5拓展分析
第10章讲解了WebKit的软件系统软件,包括NPAPI插件接口详细说明、WebKit的软件完成、Android服务平台软件开发设计等。
第11章讲解了RemoteInspector,包括RemoteInspector完成构架、RemoteInspector协议书、Inspector编码分析、BackEnd编码分析、FrontEnd编码分析等
此外,在对大量的Android源码开展分析的全过程中,这书尽量地对在其中的绝妙之处开展了分析和讲解,目地是期待协助阅读者理解在其中的优秀设计观念和方式。
目录
- 序
- 前 言
- 第1章 搭建源代码编译环境 1
- 1.1 Android全源码开发环境 1
- 1.1.1 PC配置建议 1
- 1.1.2 Ubuntu系统安装 2
- 1.1.3 Ubuntu下Android编译环境搭建 2
- 1.1.4 工作目录设置 3
- 1.1.5 源代码下载 3
- 1.1.6 整体编译Android源代码 4
- 1.1.7 单个模块按需编译 5
- 1.1.8 编译生成本地Android SDK 5
- 1.2 Android常用工具使用及相关技巧说明 6
- 1.2.1 启动Android模拟器 10
- 1.2.2 Android调试工具adb的使用方法 10
- 1.3 WebKit源代码目录结构 13
- 1.4 WebKit代码调试 15
- 1.5 本章小结 17
- 第2章 浏览器工作原理及WebKit概览 18
- 2.1 浏览器工作原理概述 18
- 2.1.1 页面 19
- 2.1.2 内核 19
- 2.1.3 外壳 24
- 2.2 浏览器和WebKit简史 27
- 2.3 WebKit架构概览 29
- 2.3.1 整体组成架构 30
- 2.3.2 核心工作流程 34
- 2.3.3 代码设计风格 36
- 2.4 本章小结 38
- 第3章 WTF的实现及使用 39
- 3.1 WTF库概述 39
- 3.2 智能指针 40
- 3.2.1 OwnPtr的实现及使用 41
- 3.2.2 RefPtr的实现及使用 44
- 3.2.3 线程安全性 45
- 3.3 Assert与crash dump 46
- 3.3.1 Assert的实现及使用 46
- 3.3.2 crash dump的实现及使用 47
- 3.4 内存管理与容器 50
- 3.4.1 FastAllocator的实现及使用 50
- 3.4.2 容器类概述 51
- 3.5 原子操作 57
- 3.6 WebKit运行时线程结构 57
- 3.6.1 MessageQueue实现分析 57
- 3.6.2 Task传递 59
- 3.6.3 MainThread运行原理 60
- 3.7 本章小结 61
- 第4章 Loader与网络库 62
- 4.1 Loader概述 63
- 4.2 Loader的设计与实现架构 63
- 4.2.1 Loader模块的设计 63
- 4.2.2 Loader中的类结构及作用 65
- 4.3 MainResourceLoader资源加载流程 67
- 4.3.1 主资源 67
- 4.3.2 主资源加载示例 67
- 4.4 SubResourceLoader资源加载流程 73
- 4.4.1 派生资源 73
- 4.4.2 派生资源加载示例 73
- 4.5 WebKit网络库chrome-net介绍 80
- 4.5.1 chrome-net实现结构 80
- 4.5.2 chrome-net与WebKit的接口 81
- 4.6 WebKit中的 Cache 81
- 4.6.1 Memory Cache内存缓存 82
- 4.6.2 Page Cache页面缓存 84
- 4.6.3 Disk Cache磁盘缓存 86
- 4.7 本章小结 87
- 第5章 网页解析 88
- 5.1 WebKit网页解析概述 88
- 5.2 DOM模型简介 89
- 5.3 HTML解析过程 90
- 5.3.1 DOM树的构建 90
- 5.3.2 Render树的构建 94
- 5.3.3 RenderLayer树的构建 96
- 5.4 CSS样式表处理 97
- 5.4.1 CSS文档结构 97
- 5.4.2 CSS解析过程 99
- 5.4.3 CSS规则匹配 100
- 5.5 JavaScript脚本执行 101
- 5.6 本章小结 103
- 第6章 排版布局 104
- 6.1 CSS盒模型 104
- 6.2 定位与包含块 106
- 6.3 Render类的核心对象 111
- 6.4 Render树创建流程代码分析 121
- 6.5 Layout流程代码分析 123
- 6.5.1 计算大小 123
- 6.5.2 确定位置 127
- 6.5.3 简单例子 130
- 6.6 绘制流程分析 131
- 6.7 本章小结 136
- 第7章 渲染与硬件加速 137
- 7.1 Android SurfaceFlinger系统介绍 137
- 7.2 WebKit 的三棵树 138
- 7.3 Android WebKit渲染过程 139
- 7.3.1 Android WebKit记录网页绘制命令过程分析 140
- 7.3.2 Android WebKit软件渲染流程分析 145
- 7.3.3 Android WebKit硬件渲染流程分析 147
- 7.4 软件渲染与硬件渲染的优缺点 156
- 7.5 本章小结 156
- 第8章 Android WebKit框架 157
- 8.1 Android系统中的WebKit框架介绍 157
- 8.1.1 Android Framework介绍 158
- 8.1.2 Java Native Interface简介 160
- 8.1.3 Android WebKit相关API简介 161
- 8.2 Android WebKit框架实现解析 163
- 8.2.1 架构简述 164
- 8.2.2 初始化流程 165
- 8.2.3 网页加载流程 167
- 8.2.4 绘制调用流程 168
- 8.3 基于Android WebKit的浏览器实现 169
- 8.3.1 浏览器App的基本功能 169
- 8.3.2 Android系统浏览器实现解析 170
- 8.3.3 Android系统WebKit内核定制开发 174
- 8.4 本章小结 175
- 第9章 JavaScript扩展接口 176
- 9.1 V8原理及接口 176
- 9.1.1 V8设计元素 176
- 9.1.2 V8运行实例分析 181
- 9.1.3 V8 接口及使用 183
- 9.2 WebKit JavaScript接口 191
- 9.2.1 V8 binding作用及结构 191
- 9.2.2 WebKit接口扩展 191
- 9.3 HTML 5扩展实例 196
- 9.3.1 WebSocket概述 196
- 9.3.2 WebSocket实现分析 198
- 9.4 本章小结 200
- 第10章 WebKit的插件系统 201
- 10.1 NPAPI插件概述 202
- 10.1.1 浏览器插件功能作用 202
- 10.1.2 NPAPI插件规范 202
- 10.2 WebKit的插件系统 204
- 10.2.1 WebKit插件基础组件 205
- 10.2.2 插件加载流程 205
- 10.2.3 插件与脚本的交互 210
- 10.3 Android平台插件开发 213
- 10.3.1 新增特有接口 213
- 10.3.2 插件APK化及参考范例 214
- 10.4 本章小结 217
- 第11章 浏览器调试工具 218
- 11.1 Inspector概述 218
- 11.2 WebKit Inspector协议 219
- 11.3 Remote Inspector实现结构 223
- 11.3.1 协议信道 224
- 11.3.2 Inspector后端 225
- 11.3.3 Inspector前端 229
- 11.4 JavaScript调试 233
- 11.5 本章小结 235