第1章 准备工作 1
1.1 深入认识Android 2
1.1.1 Android的系统构架 2
1.1.2 Android的初始化流程 5
1.1.3 各个层次之间的相互关系 8
1.1.4 Android系统开发(移植)和应用开发 11
1.2 获取和编译Android的源码 13
1.2.1 环境配置 13
1.2.2 获取Android源码 14
1.2.3 编译Android的源码及其工具包 16
1.2.4 运行Android系统 21
1.3 开发环境搭建 23
1.3.1 应用开发环境搭建 23
1.3.2 源码开发环境搭建 26
1.4 Android源码结构 32
1.5 小结 33
第2章 Android的内核机制和结构剖析 34
2.1 Linux与Android的关系 35
2.1.1 为什么会选择Linux 35
2.1.2 Android不是Linux 35
2.2 Android对Linux内核的改动 37
2.2.1 Goldfish 37
2.2.2 YAFFS2 38
2.2.3 蓝牙 39
2.2.4 调度器(Scheduler) 39
2.2.5 Android新增的驱动 40
2.2.6 电源管理 41
2.2.7 杂项 41
2.3 Android对Linux内核的增强 42
2.3.1 Alarm(硬件时钟) 43
2.3.2 Ashmem(匿名内存共享) 46
2.3.3 Low Memory Killer(低内存管理) 52
2.3.4 Logger(日志设备) 56
2.3.5 Android PMEM 65
2.3.6 switch 79
2.3.7 Timed GPIO 88
2.3.8 Android Ram Console 94
2.4 小结 99
第3章 Android的IPC机制——Binder 100
3.1 Binder概述 101
3.1.1 为什么选择Binder 101
3.1.2 初识Binder 102
3.2 Binder驱动的原理和实现 102
3.2.1 Binder驱动的原理 102
3.2.2 Binder驱动的实现 103
3.3 Binder的构架与实现 132
3.3.1 Binder的系统构架 132
3.3.2 Binder的机制和原理 133
3.4 小结 150
第4章 电源管理 151
4.1 电源管理概述 152
4.2 电源管理结构 152
4.3 Android的电源管理机制 153
4.4 Android电源管理机制的实现 154
4.5 小结 187
第5章 驱动的工作原理及实现机制 188
5.1 显示驱动(Framebuffer) 189
5.1.1 Framebuffer的工作原理 189
5.1.2 Framebuffer的构架 190
5.1.3 Framebuffer驱动的实现机制 190
5.2 视频驱动(V4L和V4L2) 201
5.2.1 V4L2介绍 201
5.2.2 V4L2的原理和构架 201
5.2.3 V4L2的实现 202
5.3 音频驱动(OSS和ALSA) 208
5.3.1 OSS与ALSA介绍 208
5.3.2 OSS的构架与实现 209
5.3.3 ALSA的构架与实现 213
5.4 MTD驱动 214
5.4.1 MTD驱动的功能 214
5.4.2 MTD驱动的构架 215
5.4.3 MTD驱动的原理及实现 215
5.5 Event输入设备驱动 223
5.5.1 Input的系统构架 223
5.5.2 Event输入驱动的构架 224
5.5.3 Event输入驱动的原理 224
5.5.4 Event输入驱动的实现 225
5.6 蓝牙驱动(Bluetooth) 235
5.6.1 Bluetooth驱动的构架 235
5.6.2 BlueZ的原理及实现 237
5.7 WLAN驱动(Wi-Fi) 244
5.7.1 WLAN构架 244
5.7.2 Wi-Fi驱动的实现原理 245
5.8 小结 245
第6章 原生库的原理及实现 246
6.1 系统C库(Bionic Libc) 247
6.1.1 Bionic Libc功能概述 247
6.1.2 Bionic Libc实现原理 248
6.2 功能库 258
6.2.1 WebKit构架与实现 258
6.2.2 多媒体框架与实现 275
6.2.3 Android SQLite框架及原理 285
6.3 扩展库 289
6.3.1 Skia底层库分析 289
6.3.2 OpenGL底层库分析 299
6.3.3 Android-OpenSSL实现及运用 306
6.3.4 FreeType及Font Engine Manager 317
6.3.5 FreeType结构体系和渲染流程 317
6.4 原生服务 328
6.4.1 AudioFlinger实现 328
6.4.2 SurfaceFlinger实现 341
6.5 小结 353
第7章 硬件抽象层的原理与实现 354
7.1 硬件抽象层的实现原理 355
7.1.1 Android HAL构架 355
7.1.2 Android HAL的实现 357
7.2 Android Overlay构架与实现 361
7.2.1 Android Overlay系统构架 361
7.2.2 Overlay HAL框架与实现 362
7.2.3 Overlay与SurfaceFinger 369
7.3 Android Camera构架与实现 375
7.3.1 Android Camera系统构架 375
7.3.2 Camera HAL框架与实现 377
7.3.3 Camera本地实现 385
7.4 Android Audio HAL实现 394
7.4.1 Audio HAL框架 395
7.4.2 Android默认的Audio HAL实现 398
7.4.3 DUMP功能的Audio HAL实现 400
7.4.4 基于A2dp的蓝牙音频设备HAL实现 402
7.4.5 模拟器上的Audio HAL实现 403
7.5 Android RIL实现 404
7.5.1 Android RIL构架 404
7.5.2 radiooptiongs实现 407
7.5.3 libril库实现 409
7.5.4 reference-ril库实现 415
7.5.5 RILD守护进程实现 418
7.5.6 request流程分析 423
7.5.7 response流程分析 427
7.6 Android Sensor HAL实现 434
7.6.1 Android Sensor构建 434
7.6.2 Sensor HAL接口 435
7.6.3 Sensor HAL实现 438
7.7 Android WIFI HAL实现 441
7.7.1 Android WIFI系统构架 441
7.7.2 wpa_supplicant框架 442
7.7.3 WIFI HAL实现 444
7.8 Android蓝牙本地实现 447
7.8.1 Android蓝牙构架 447
7.8.2 BlueZ结构体系 448
7.8.3 BlueZ适配层 452
7.9 Android定位实现 453
7.9.1 定位系统构架 453
7.9.2 GPS HAL实现 454
7.10 Android Power HAL实现 459
7.11 Android Vibrator HAL实现 461
7.12 小结 462
第8章 Dalvik虚拟机的构架、原理与实现 463
8.1 Dalvik虚拟机概述 464
8.1.1 什么是Dalvik虚拟机 464
8.1.2 Dalvik虚拟机的功能 464
8.1.3 Dalvik虚拟机与Java虚拟机的区别 465
8.2 Dalvik构架与实现 466
8.2.1 Dalvik系统构架 466
8.2.2 dx和dexdump工具 468
8.2.3 .dex文件格式解析 470
8.2.4 Dalvik内部机制 487
8.2.5 Dalvik进程管理 492
8.2.6 Dalvik内存管理 501
8.2.7 Dalvik加载器 509
8.2.8 Dalvik解释器 517
8.2.9 Dalvik JIT 519
8.3 JNI的构架与实现 523
8.3.1 JNI构架 523
8.3.2 JNI实现 524
8.4 小结 526
第9章 Android核心库 527
9.1 Android核心库简介 528
9.2 Android系统API 529
9.2.1 android包 529
9.2.2 android资源包 529
9.2.3 ApiCheck机制 529
9.3 小结 532
后记 533