《深入剖析Android系统》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:杨长刚著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2013
  • ISBN:9787121193743
  • 页数:450 页
图书介绍:本书以Android Jelly Bean(4.1)的代码为蓝本,对Android的部分关键代码进行了注释分析,并辅以大量插图,讲述了Android大部分子系统中的模块和类的静态结构,让读者对Android系统的内部静态结构有着“类”粒度这一层级上的认识和了解。同时,也对关键类和函数的代码调用流程、运行时刻所位于的进程和线程上下文等动态运行场景进行了分析讲述,让读者深刻理解Android系统内部是如何运行的。

第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 SDKAPI概述 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 RIL Request的发送过程 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 libGLESvl_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 SDKAPI概述 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