齐全立足于Android系统源代码,深化解析Android内核的架构设计与完成原理
透彻剖析Android内核层、硬件形象层和系统运转库层的各性能模块的底层机制
内容简介
书籍
计算机书籍
《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源码完成感兴味的读者。
作译者
杨丰硕,国内Android畛域的先驱者和布道者,资深Android开发工程师,在Android运用开发方面有丰富的实战阅历。他对Android的源代码停止了长达一年的系统学习和钻研,对Android系统的架构设计和完成原理有十分深化的理解和意识,理论功底也非常深沉。国内著名IT技术网站51CTO引荐技术专家,曾屡次承受《程序员》杂志采访并为其撰稿,同时他还屡次应邀在国内的移动开发者大会和技术沙龙中展开讲座,深受欢迎。他还是滞销书作家,撰写的《Android运用开发揭秘》一书是目前Android畛域口碑最好、销量也最好的一本书之一,这本书自上市以来已经重印9次,而且销量不断排在当当网、出色网和互动网这3大网店的计算机类图书的排行榜前列。
此外,他还知晓Java、C、C++等言语,在机顶盒软件开发和MTK平台软件开发方面有十分丰富的阅历。游戏开发也是他的专长,曾经参与过《三国群英传说》、《大航海传奇》、《养成方案》等游戏的开发,2007年荣获中国软件行业协会游戏软件分会(CGIA)认证及国际游戏开发教育联结会国际认证。
目录
《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
前言