《Android技术内幕:系统卷》是国内首本系统对Android的源代码进行深入分析的著作。全书将Android系统从构架上依次分为应用层、应用框架层、系统运行库层、硬件抽象层和Linux内核层等5个层次,旨在通过对Android系统源代码的全面分析来帮助开发者加深对Android系统架构设计和实现原理的认识,从而帮助他们解决开发中遇到的更加复杂的问题。
全书分为两卷,系统卷主要分析了Linux内核层、硬件抽象层和系统运行库层的各个模块的底层原理和实现细节;应用卷主要分析了应用层和应用框架层的各个模块的底层原理和实现细节。
具体而言,系统卷第1章首先从宏观上介绍了Android系统的架构以及各个层次之间的关系,然后介绍了如何获取Android源代码并搭建Android源代码开发环境和阅读环境的方法;第2章有针对性地剖析了Android的内核机制和结构,以及Android对Linux内核的改动和增强;第3章分析了Binder的架构和工作机制,以及Binder驱动的实现原理;第4章分析了Android电源管理模块的机制与实现;第5章全面地剖析了Android硬件设备驱动(显示、视频、音频、MTD、Event、蓝牙、WLAN等)的工作原理和实现,掌握这部分内容即可修改和编写基于Android的设备驱动程序;第6章深刻阐述了Android原生库的原理及实现,涉及系统C库、功能库、扩展库和原生的Server等重要内容;第7章系统地讲解了硬件抽象层的原理与实现,掌握这部分内容即可编写适合特定硬件设备驱动的抽象层接口;第8章和第9章是对系统运行库层的分析,主要讲解了Dalvik虚拟机的架构、原理与实现,以及Android的核心库相关的知识,掌握这部分内容即可完成对Android运行库的移植和修改。
本书适合所有的高级Android应用开发工程师、Android系统开发工程师、Android移植工程师、Android系统架构师和所有对Android源码实现感兴趣的读者。
前言
第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
《血酬定律:中国历史中的生存游戏》内容简介:《血酬定律》是吴思先生在五年前推出的一部作品,此次新版,增写了新的前言,对五年
《盛夏的事》内容简介:本书为华语作家林俊頴的散文集,收入作者为《时报》专栏《三少四壮》所写文章共55篇,包括“蜂巢”“夏天的
《学习正则表达式》从正则表达式的基本概念讲起,到编写完整的sed和Perl脚本,再到转换HTML文件,将这种强大的工具解释得清晰透彻
《Java RESTful Web Service实战(第2版)》内容简介:迫不及待,这是我想为读者更新REST服务新发展的心情,遂有此第2版。首先,我
偏微分与变分技术在图像分割中的应用研究 内容简介 本书总结了笔者近年来在图像分割方面的研究成果, 主要介绍了基于变分水平集的分割技术及其应用, 并在对该领域基本...
《资本主义民主的批判与反思》内容简介:本书集中收入了国外马克思主义者对民主问题的研究动态,并进行了理论上的探讨和分析。关于
《Python Flask Web开发入门与项目实战》内容简介:本书从Flask框架的基础知识讲起,逐步深入到使用Flask进行Web应用开发实战。其中
《SoftwareDesign中文版03》的主题为:sed/AWK入门和Mac开发环境。特辑1详细讲解了sed与AWK的基础与使用方法、日志分析、ShellSc
无师自通AutoCAD 2014中文版机械设计-(附光盘) 本书特色 《无师自通AutoCAD 2014中文版机械设计》以AutoCAD 2014中文版为平台,...
《代码之髓:编程语言核心概念》作者从编程语言设计的角度出发,围绕语言中共通或特有的核心概念,通过语言演变过程中的纵向比较
《儿童心理问题全攻略(家庭教育)》内容简介:每一个孩子的内心都是一个充满奥秘的世界。如何走进孩子的内心? 如何了解孩子莫名举
《德古拉》内容简介:德古拉,历史上著名的吸血鬼。自爱尔兰著名小说家布莱姆·斯托克出版《德古拉》以来,已经在全世界享有极高的
《生命3.0》内容简介:在人工智能崛起的当下,你希望看到一个什么样的未来?当超越人类智慧的人工智能出现时,人类将何去何从?你是
《jQuery用户界面库学习指南》介绍了jQuery用户界面库的各种界面控件和交换助手组件,涵盖了jQuery用户界面库的各种方法与技巧。
《20几岁,你为什么害怕来不及》内容简介:2015年6月,林夏萨摩,在简书上写下了一篇《你才20多岁,为什么总怕来不及》,一时间引爆
《网页设计与配色经典案例解析(第2版)(全彩)》以介绍色彩知识为主线,从色彩原理入手,辅以大量优秀网页便于读者对色彩搭配的理解
五笔字型经典教程 本书特色 本书是一本关于五笔字型输入法入门及应用的教程。全书共分为9章,包括指法训练、五笔字型输入法、拆分汉字、录入汉字、简码、词组、容错码、...
《可能世界视域下的名称和同一性理论研究》内容简介:本书主要对克里普克可能世界视域下的名称理论和同一性理论展开阐述与研究,内
设计与艺术关系密切,艺术史家往往是设计史家,本书是一个明证。以艺术史家著称的贡布里希对设计的思考与论述同样既引人入胜,又
基于形式概念分析的Folksonomy知识发现研究 本书特色 Web2.0下,folksonomy被广泛应用于各类社会化标注系统中,以实现自由、灵活、便捷的网络...