深入剖析Android系统
资源名称:深入剖析Android系统
内容简介:
《深入剖析Android系统》以Android Jelly Bean(4.1)的代码为蓝本,对Android的部分关键代码进行了注释分析,并辅以大量插图,讲述了Android大部分子系统中的模块和类的静态结构,让读者对Android系统的内部静态结构有着“类”粒度这一层级上的认识和了解。同时,也对关键类和函数的代码调用流程、运行时刻所位于的进程和线程上下文等动态运行场景进行了分析讲述,让读者深刻理解Android系统内部是如何运行的。《深入剖析Android系统》直接对Source Insight进行截图,保留了代码的原始行号、英文注释等信息并进行了高亮显示,方便读者阅读;代码中同时添加了作者所做的中文注释说明。
资源目录:
第1章 智能指针 1
1.1 智能指针概述 1
1.2 引用计数基类RefBase 2
1.3 轻量级引用计数LightRefBase 3
1.4 强指针 3
1.4.1 强指针变量的初始化与生命周期 3
1.4.2 赋值操作与引用计数变化 5
1.5 弱指针 5
第2章 消息队列与线程处理 7
2.1 消息队列处理模型的设计 7
2.2 消息队列与线程处理的Java实现 9
2.2.1 Thread/Runnable 9
2.2.2 Message 10
2.2.3 MessageQueue概述 11
2.2.4 Handler 11
2.2.5 Looper 12
2.2.6 再论Handler 15
2.2.7 对同步消息的支持 16
2.3 native层的Looper与消息队列处理 19
2.3.1 Looper中的睡眠等待与唤醒机制 19
2.3.2 Looper对文件描述符的监控与处理 22
2.3.3 Looper中的消息队列处理机制 25
2.3.4 Looper与线程执行上下文 27
第3章 Binder IPC及其应用 29
3.1 Binder IPC 29
3.1.1 Binder IPC与系统服务 29
3.1.2 Binder类结构与调用关系 31
3.1.3 模板函数interface_cast的背后 33
3.1.4 例子AudioPolicyService 37
3.2 Java层对Binder的封装 40
3.2.1 例子IMediaPlaybackService 42
3.2.2 例子PhoneStateListener 47
3.3 大内存块的跨进程共享 52
3.3.1 概述 52
3.3.2 调用接口 53
3.3.3 设备空间的映射 55
3.3.4 Server侧的处理 57
第4章 HAL硬件抽象层 59
4.1 HAL概述 59
4.2 硬件模块库的通用写法 60
4.3 硬件模块库的装载与解析 63
4.4 例子Lights 65
4.5 例子Camera 68
4.6 例子Power和Vibrator 69
第5章 Android的启动过程 71
5.1 Android初始化语言及解析 71
5.1.1 Action 71
5.1.2 触发器trigger 72
5.1.3 命令Command 72
5.1.4 服务Service 74
5.1.5 .rc文件的解析 76
5.2 BootChart 82
5.3 ueventd守护进程 82
5.4 init进程的启动过程 87
5.5 init.rc文件中的服务进程 93
5.6 system_server进程 95
5.6.1 app_process程序 95
5.6.2 system_server进程 96
第6章 输入系统 99
6.1 输入系统概述 99
6.2 读线程 101
6.2.1 EventHub 101
6.2.2 InputReader 106
6.2.3 InputDevice 108
6.2.4 InputMapper 108
6.2.5 QueuedInputListener 111
6.3 分发线程 112
6.3.1 InputDispatcher 112
6.3.2 InputChannel 116
6.4 输入系统的开启 118
第7章 MassStorage 121
7.1 MassStorage概述 121
7.2 MountService 122
7.3 库libsysutils.so 123
7.3.1 SocketListener 123
7.3.2 FrameworkListener 126
7.3.3 NetlinkListener 127
7.4 守护进程vold 128
7.4.1 NetlinkManager 128
7.4.2 CommandListener 131
7.4.3 vold的main函数 135
第8章 Sensor 137
8.1 Sensor概述 137
8.2 SDK API概述 138
8.3 Sensor管理器 139
8.3.1 Sensor采样数据的获取与处理 141
8.3.2 SensorEventQueue 146
8.4 SensorService 147
8.4.1 逻辑传感器 149
8.4.2 物理传感器 150
8.4.3 Sensor HAL 150
第9章 RIL 153
9.1 RIL概述 153
9.2 rild守护进程 154
9.3 事件处理与分发线程 158
9.3.1 分发线程中的事件处理 158
9.3.2 RIL请求的接收与处理 161
9.3.3 RIL响应的回送 165
9.4 radiooptions工具程序 169
9.5 RILJ 169
9.5.1 RILJ概述 169
9.5.2 RILRequest的发送过程 171
9.5.3 Response的处理过程 174
第10章 com.android.phone进程 178
10.1 层次状态机StateMachine 178
10.2 GSMPhone 179
10.3 GsmCallTracker 184
10.3.1 GsmDataConnectionTracker 186
10.3.2 GsmServiceStateTracker 188
10.3.3 DefaultPhoneNotifier 188
10.3.4 其他 189
10.4 进程com.android.phone 190
第11章 Graphic 196
11.1 Graphic概述 196
11.2 Java层简介 197
11.2.1 SurfaceSession 198
11.2.2 Surface 198
11.2.3 SurfaceView 199
11.2.4 TextureView 200
11.3 JNI层简介 200
11.4 SKIA库简介 201
11.5 库libgui.so 202
11.5.1 概述 202
11.5.2 ComposerService 204
11.5.3 共享控制块surface_flinger_cblk_t 204
11.5.4 ISurfaceComposer 205
11.5.5 ScreenshotClient 207
11.5.6 SurfaceComposerClient 207
11.5.7 Surface 210
11.5.8 SurfaceControl 211
11.5.9 绘图操作的前后过程 213
11.5.10 SurfaceTexture Client 215
11.6 SurfaceFlinger进程 222
11.6.1 图层 223
11.6.2 DisplayHardware简介 228
11.6.3 HWComposer简介 228
11.6.4 VSync 229
11.7 库libui.so简介 247
11.7.1 GraphicBuffer 247
11.7.2 FramebufferNativeWindow 248
11.8 Renderscript简介 249
第12章 OpenGL ES软件层次栈 250
12.1 Android中的OpenGL ES简介 250
12.2 Android中OpenGL软件层次栈 251
12.3 包裹库与hook钩子 253
12.3.1 libGLESv1_CM.so包裹库 253
12.3.2 libGLESv2包裹库 257
12.3.3 libEGL包裹库 257
12.3.4 结构体egl_t和gl_hooks_t钩子 258
12.4 OpenGL实现库的加载和解析 260
12.4.1 加载和解析的发起 260
12.4.2 库装载器Loader 261
12.5 libGLES_android库和ETC1简介 265
第13章 Multimedia 267
13.1 Multimedia概述 267
13.2 API类简述 268
13.3 多媒体播放(playback) 270
13.3.1 播放流程 273
13.3.2 来自server侧的消息事件通知 277
13.4 多媒体录制(Recording) 279
13.5 元数据(MetaData)获取 281
13.6 Camera 284
13.6.1 Camera概述 284
13.6.2 CameraHardwareInterface与HAL层 287
13.7 Camera事件通知机制 289
第14章 Audio 293
14.1 Audio概述 293
14.2 Audio播放AudioTrack 295
14.2.1 共享控制块audio_track_cblk_t 296
14.2.2 数据的写入 298
14.2.3 事件的回送及处理 299
14.3 Auido录音Recording 301
14.3.1 录音的开始过程 303
14.3.2 录音的停止过程 306
14.4 AudioFlinger 307
14.4.1 AudioFlinger概述 307
14.4.2 Track相关类概述 308
14.4.3 AudioFlinger中的线程 311
14.5 音效AudioEffect 319
14.5.1 EffectHandle 320
14.5.2 音效引擎的封装EffectModule 320
14.5.3 音效链EffectChain 321
14.5.4 音效处理引擎接口effect_interface_s 322
14.5.5 音效引擎库audio_effect_library_s 323
14.5.6 音效引擎工厂EffectFactory 324
14.6 音频策略服务AudioPolicyService 326
第15章 Stagefright 331
15.1 Stagefright概述 331
15.2 节点子类 332
15.3 StagefrightPlayer 334
15.4 视频帧的渲染输出AwesomeRenderer 343
15.4.1 Renderer的创建 344
15.4.2 AwesomeLocalRenderer 345
15.4.3 AwesomeNativeWindowRenderer 347
15.5 AudioPlayer 347
15.6 A/V同步简介 350
15.7 StagefrightRecorder 351
第16章 OMXCodec 356
16.1 OpenMAX概述 356
16.1.1 组件(Component)与端口(Port) 357
16.1.2 组件的初始化 358
16.1.3 数据处理 359
16.1.4 组件命令OMX_Command 360
16.2 OMXCodec类 362
16.2.1 组件的创建 362
16.2.2 缓冲区的分配 364
16.2.3 数据处理流程 370
16.3 IOMX 374
16.4 OMX插件 376
16.4.1 平台厂家插件 377
16.4.2 软件OMX插件SoftOMXPlugin 379
16.5 组件消息的上报 383
第17章 GPS 386
17.1 GPS 简述 386
17.2 SDK API概述 386
17.3 LocationManagerService 388
17.4 GpsLocationProvider 390
17.4.1 初始化代码分析 391
17.4.2 消息处理与回调结构体 392
17.4.3 例子:位置信息的上报 394
17.5 HAL层简介 396
17.5.1 GPS的位置信息 396
17.5.2 GPS卫星信息 397
17.5.3 GPS回调函数 397
第18章 NFC 399
18.1 NFC概述 399
18.2 SDK API概述 400
18.2.1 NfcAdapter 401
18.2.2 NdefMessage 401
18.2.3 NFC Tag 402
18.2.4 NFC-extras 403
18.3 进程com.android.nfc 403
18.3.1 P2pEventManager 403
18.3.2 P2pLinkManager 405
18.3.3 Bluetooth Handover 408
18.3.4 SNEP 409
18.3.5 NDEF Push 413
18.3.6 其他类简介 414
18.4 JNI层 415
第19章 USB 418
19.1 SDK API概述 418
19.2 UsbService 420
19.2.1 UsbDeviceManager 421
19.2.2 UsbHostManager 422
19.3 uevent 424
第20章 Bluetooth和Wi-Fi简析 429
20.1 Bluetooth 429
20.1.1 Bluetooth概述 429
20.1.2 SDK API概述 430
20.1.3 Bluetooth服务 432
20.1.4 JNI层 433
20.2 Wi-Fi 436
20.2.1 Wi-Fi概述 436
20.2.2 SDK API概述 436
20.2.3 JNI和HAL层 439
20.2.4 WPA_supplicant 440
第21章 Debuggerd 441
21.1 预备知识 441
21.1.1 ptrace调用 441
21.1.2 waitpid 442
21.2 debuggerd守护进程 442
后记 450
资源截图: