0%

深入理解Android(卷1)

基本信息

名称: 深入理解Android(卷1)
作者信息: 作者: 邓凡平 [ 中文 pdf ]

简单介绍

《深入理解Android(卷1)》:结合实际应用开发需求,以情景分析的方式有针对性地对Android的源代码进行了十分详尽的剖析,深刻揭示Android系统的工作原理。机锋网、51CTO、开源中国社区等专业技术网站一致鼎力推荐!
在Android领域,无论是从事上层的应用开发.还是从事底层的系统级开发,如果想成为一名优秀的开发者,通过深入探究Android的源代码来了解Android的实现原理与工作机制也许是唯一的捷径。Android Framework是Android系统的基石,也是Android的核心之一,对于上层的应用开发者而言,深入理解它的工作原理是十分有必要的。Java世界是如何通过Zygote创建的?Handler和Looper是如何工作的?Binder的工作原理是什么?Audio系统和Surface系统的工作流程是怎
样的?Vold、Rild、MediaScanner等是如何实现
的?
这些内容是每一位从事Android应用开发的程序员都需要学习和掌握的。
《深入理解Android(卷1)》用情景分析的方式对Android的源代码进行了有针对性的分析,不仅全面而详细地分析了Framework层的工作机制和实现原理,而且还涉及Native层和Application层的重要内容。每一个功能模块的分析都从实际的使用场景和具体的问题入手,每一个知识点都力求做到把实现原理讲清楚,把工作机制说明白,尽量深入.竭力避免泛泛而谈。除此之外,《深入理解Android(卷1)》在重要章节还精心设计了“拓展思考”的内容,旨在进一步激发读者学习和研究Android源代码的兴趣。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
第1章 阅读前的准备工作 / 1
1.1 系统架构 / 2
1.1.1 Android系统架构 / 2
1.1.2 本书的架构 / 3
1.2 搭建开发环境 / 4
1.2.1 下载源码 / 4
1.2.2 编译源码 / 6
1.3 工具介绍 / 8
1.3.1 Source Insight介绍 / 8
1.3.3 Busybox的使用 / 11
1.4 本章小结 / 12
第2章 深入理解JNI / 13
2.1 JNI概述 / 14
2.2 学习JNI的实例:MediaScanner / 15
2.3 Java层的MediaScanner分析 / 16
2.3.1 加载JNI库 / 16
2.3.2 Java的native函数和总结 / 17
2.4 JNI层MediaScanner的分析 / 17
2.4.1 注册JNI函数 / 18
2.4.2 数据类型转换 / 22
2.4.3 JNIEnv介绍 / 24
2.4.4 通过JNIEnv操作jobject / 25
2.4.5 jstring介绍 / 27
2.4.6 JNI类型签名介绍 / 28
2.4.7 垃圾回收 / 29
2.4.8 JNI中的异常处理 / 32
2.5 本章小结 / 32
第3章 深入理解init / 33
3.1 概述 / 34
3.2 init分析 / 34
3.2.1 解析配置文件 / 38
3.2.2 解析service / 42
3.2.3 init控制service / 48
3.2.4 属性服务 / 52
3.3 本章小结 / 60
第4章 深入理解zygote / 61
4.1 概述 / 62
4.2 zygote分析 / 62
4.2.1 AppRuntime分析 / 63
4.2.2 Welcome to Java World / 68
4.2.3 关于zygote的总结 / 74
4.3 SystemServer分析 / 74
4.3.1 SystemServer的诞生 / 74
4.3.2 SystemServer的重要使命 / 77
4.3.3 关于 SystemServer的总结 / 83
4.4 zygote的分裂 / 84
4.4.1 ActivityManagerService发送请求 / 84
4.4.2 有求必应之响应请求 / 86
4.4.3 关于zygote分裂的总结 / 88
4.5 拓展思考 / 88
4.5.1 虚拟机heapsize的限制 / 88
4.5.2 开机速度优化 / 89
4.5.3 Watchdog分析 / 90
4.6 本章小结 / 93
第5章 深入理解常见类 / 95
5.1 概述 / 96
5.2 以“三板斧”揭秘RefBase、sp和wp / 96
5.2.1 第一板斧——初识影子对象 / 96
5.2.2 第二板斧——由弱生强 / 103
5.2.3 第三板斧——破解生死魔咒 / 106
5.2.4 轻量级的引用计数控制类LightRefBase / 108
5.2.5 题外话-三板斧的来历 / 109
5.3 Thread类及常用同步类分析 / 109
5.3.1 一个变量引发的思考 / 109
5.3.2 常用同步类 / 114
5.4 Looper和Handler类分析 / 121
5.4.1 Looper类分析 / 122
5.4.2 Handler分析 / 124
5.4.3 Looper和Handler的同步关系 / 127
5.4.4 HandlerThread介绍 / 129
5.5 本章小结 / 129
第6章 深入理解Binder / 130
6.1 概述 / 131
6.2 庖丁解MediaServer / 132
6.2.1 MediaServer的入口函数 / 132
6.2.2 独一无二的ProcessState / 133
6.2.3 时空穿越魔术-defaultServiceManager / 134
6.2.4 注册MediaPlayerService / 142
6.2.5 秋风扫落叶-StartThread Pool和join Thread Pool分析 / 149
6.2.6 你彻底明白了吗 / 152
6.3 服务总管ServiceManager / 152
6.3.1 ServiceManager的原理 / 152
6.3.2 服务的注册 / 155
6.3.3 ServiceManager存在的意义 / 158
6.4 MediaPlayerService和它的Client / 158
6.4.1 查询ServiceManager / 158
6.4.2 子承父业 / 159
6.5 拓展思考 / 162
6.5.1 Binder和线程的关系 / 162
6.5.2 有人情味的讣告 / 163
6.5.3 匿名Service / 165
6.6 学以致用 / 166
6.6.1 纯Native的Service / 166
6.6.2 扶得起的“阿斗”(aidl) / 169
6.7 本章小结 / 172
第7章 深入理解Audio系统 / 173
7.1 概述 / 174
7.2 AudioTrack的破解 / 174
7.2.1 用例介绍 / 174
7.2.2 AudioTrack(Java空间)分析 / 179
7.2.3 AudioTrack(Native空间)分析 / 188
7.2.4 关于AudioTrack的总结 / 200
7.3 AudioFlinger的破解 / 200
7.3.1 AudioFlinger的诞生 / 200
7.3.2 通过流程分析AudioFlinger / 204
7.3.3 audio_track_cblk_t分析 / 230
7.3.4 关于AudioFlinger的总结 / 234
7.4 AudioPolicyService的破解 / 234
7.4.1 AudioPolicyService的创建 / 235
7.4.2 重回AudioTrack / 245
7.4.3 声音路由切换实例分析 / 251
7.4.4 关于AudioPolicy的总结 / 262
7.5 拓展思考 / 262
7.5.1 DuplicatingThread破解 / 262
7.5.2 题外话 / 270
7.6 本章小结 / 272
第8章 深入理解Surface系统 / 273
8.1 概述 / 275
8.2 一个Activity的显示 / 275
8.2.1 Activity的创建 / 275
8.2.2 Activity的UI绘制 / 294
8.2.3 关于Activity的总结 / 296
8.3 初识Surface / 297
8.3.1 和Surface有关的流程总结 / 297
8.3.2 Surface之乾坤大挪移 / 298
8.3.3 乾坤大挪移的JNI层分析 / 303
8.3.4 Surface和画图 / 307
8.3.5 初识Surface小结 / 309
8.4 深入分析Surface / 310
8.4.1 与Surface相关的基础知识介绍 / 310
8.4.2 SurfaceComposerClient分析 / 315
8.4.3 SurfaceControl分析 / 320
8.4.4 writeToParcel和Surface对象的创建 / 331
8.4.5 lockCanvas和unlockCanvasAndPost分析 / 335
8.4.6 GraphicBuffer介绍 / 344
8.4.7 深入分析Surface的总结 / 353
8.5 SurfaceFlinger分析 / 353
8.5.1 SurfaceFlinger的诞生 / 354
8.5.2 SF工作线程分析 / 359
8.5.3 Transaction分析 / 368
8.5.4 关于SurfaceFlinger的总结 / 376
8.6 拓展思考 / 377
8.6.1 Surface系统的CB对象分析 / 377
8.6.2 ViewRoot的你问我答 / 384
8.6.3 LayerBuffer分析 / 385
8.7 本章小结 / 394
第9章 深入理解Vold和Rild / 395
9.1 概述 / 396
9.2 Vold的原理与机制分析 / 396
9.2.1 Netlink和Uevent介绍 / 397
9.2.2 初识Vold / 399
9.2.3 NetlinkManager模块分析 / 400
9.2.4 VolumeManager模块分析 / 408
9.2.5 CommandListener模块分析 / 414
9.2.6 Vold实例分析 / 417
9.2.7 关于Vold的总结 / 428
9.3 Rild的原理与机制分析 / 428
9.3.1 初识Rild / 430
9.3.2 RIL_startEventLoop分析 / 432
9.3.3 RIL_Init分析 / 437
9.3.4 RIL_register分析 / 444
9.3.5 关于Rild main函数的总结 / 447
9.3.6 Rild实例分析 / 447
9.3.7 关于Rild的总结 / 459
9.4 拓展思考 / 459
9.4.1 嵌入式系统的存储知识介绍 / 459
9.4.2 Rild和Phone的改进探讨 / 462
9.5 本章小结 / 463
第10章 深入理解MediaScanner / 464
10.1 概述 / 465
10.2 android.process.media分析 / 465
10.2.1 MSR模块分析 / 466
10.2.2 MSS模块分析 / 467
10.2.3 android.process.media媒体扫描工作的流程总结 / 471
10.3 MediaScanner分析 / 472
10.3.1 Java层分析 / 472
10.3.2 JNI层分析 / 476
10.3.3 PVMediaScanner分析 / 479
10.3.4 关于MediaScanner的总结 / 485
10.4 拓展思考 / 486
10.4.1 MediaScannerConnection介绍 / 486
10.4.2 我问你答 / 487
10.5 本章小结 / 488

亚马逊链接

欢迎关注我的其它发布渠道