资源名称:深入剖析Android系统

内容简介:

《深入剖析Android系统》以Android Jelly Bean(4.1)的代码为蓝本,对Android的部分关键代码进行了注释分析,并辅以大量插图,讲述了Android大部分子系统中的模块和类的静态结构,让读者对Android系统的内部静态结构有着“类”粒度这一层级上的认识和了解。同时,也对关键类和函数的代码调用流程、运行时刻所位于的进程和线程上下文等动态运行场景进行了分析讲述,让读者深刻理解Android系统内部是如何运行的。《深入剖析Android系统》直接对Source Insight进行截图,保留了代码的原始行号、英文注释等信息并进行了高亮显示,方便读者阅读;代码中同时添加了作者所做的中文注释说明。

资源目录:

第1章 智能指针1

1.1 智能指针概述1

1.2 引用计数基类RefBase2

1.3 轻量级引用计数LightRefBase3

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/Runnable9

2.2.2 Message10

2.2.3 MessageQueue概述11

2.2.4 Handler11

2.2.5 Looper12

2.2.6 再论Handler15

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 IPC29

3.1.1 Binder IPC与系统服务29

3.1.2 Binder类结构与调用关系31

3.1.3 模板函数interface_cast的背后33

3.1.4 例子AudioPolicyService37

3.2 Java层对Binder的封装40

3.2.1 例子IMediaPlaybackService42

3.2.2 例子PhoneStateListener47

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 例子Lights65

4.5 例子Camera68

4.6 例子Power和Vibrator69

第5章 Android的启动过程71

5.1 Android初始化语言及解析71

5.1.1 Action71

5.1.2 触发器trigger72

5.1.3 命令Command72

5.1.4 服务Service74

5.1.5 .rc文件的解析76

5.2 BootChart82

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 EventHub101

6.2.2 InputReader106

6.2.3 InputDevice108

6.2.4 InputMapper108

6.2.5 QueuedInputListener111

6.3 分发线程112

6.3.1 InputDispatcher112

6.3.2 InputChannel116

6.4 输入系统的开启118

第7章 MassStorage121

7.1 MassStorage概述121

7.2 MountService122

7.3 库libsysutils.so123

7.3.1 SocketListener123

7.3.2 FrameworkListener126

7.3.3 NetlinkListener127

7.4 守护进程vold128

7.4.1 NetlinkManager128

7.4.2 CommandListener131

7.4.3 vold的main函数135

第8章 Sensor137

8.1 Sensor概述137

8.2 SDK API概述138

8.3 Sensor管理器139

8.3.1 Sensor采样数据的获取与处理141

8.3.2 SensorEventQueue146

8.4 SensorService147

8.4.1 逻辑传感器149

8.4.2 物理传感器150

8.4.3 Sensor HAL150

第9章 RIL153

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 RILJ169

9.5.1 RILJ概述169

9.5.2 RILRequest的发送过程171

9.5.3 Response的处理过程174

第10章 com.android.phone进程178

10.1 层次状态机StateMachine178

10.2 GSMPhone179

10.3 GsmCallTracker184

10.3.1 GsmDataConnectionTracker186

10.3.2 GsmServiceStateTracker188

10.3.3 DefaultPhoneNotifier188

10.3.4 其他189

10.4 进程com.android.phone190

第11章 Graphic196

11.1 Graphic概述196

11.2 Java层简介197

11.2.1 SurfaceSession198

11.2.2 Surface198

11.2.3 SurfaceView199

11.2.4 TextureView200

11.3 JNI层简介200

11.4 SKIA库简介201

11.5 库libgui.so202

11.5.1 概述202

11.5.2 ComposerService204

11.5.3 共享控制块surface_flinger_cblk_t204

11.5.4 ISurfaceComposer205

11.5.5 ScreenshotClient207

11.5.6 SurfaceComposerClient207

11.5.7 Surface210

11.5.8 SurfaceControl211

11.5.9 绘图操作的前后过程213

11.5.10 SurfaceTexture Client215

11.6 SurfaceFlinger进程222

11.6.1 图层223

11.6.2 DisplayHardware简介228

11.6.3 HWComposer简介228

11.6.4 VSync229

11.7 库libui.so简介247

11.7.1 GraphicBuffer247

11.7.2 FramebufferNativeWindow248

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 库装载器Loader261

12.5 libGLES_android库和ETC1简介265

第13章 Multimedia267

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 Camera284

13.6.1 Camera概述284

13.6.2 CameraHardwareInterface与HAL层287

13.7 Camera事件通知机制289

第14章 Audio293

14.1 Audio概述293

14.2 Audio播放AudioTrack295

14.2.1 共享控制块audio_track_cblk_t296

14.2.2 数据的写入298

14.2.3 事件的回送及处理299

14.3 Auido录音Recording301

14.3.1 录音的开始过程303

14.3.2 录音的停止过程306

14.4 AudioFlinger307

14.4.1 AudioFlinger概述307

14.4.2 Track相关类概述308

14.4.3 AudioFlinger中的线程311

14.5 音效AudioEffect319

14.5.1 EffectHandle320

14.5.2 音效引擎的封装EffectModule320

14.5.3 音效链EffectChain321

14.5.4 音效处理引擎接口effect_interface_s322

14.5.5 音效引擎库audio_effect_library_s323

14.5.6 音效引擎工厂EffectFactory324

14.6 音频策略服务AudioPolicyService326

第15章 Stagefright331

15.1 Stagefright概述331

15.2 节点子类332

15.3 StagefrightPlayer334

15.4 视频帧的渲染输出AwesomeRenderer343

15.4.1 Renderer的创建344

15.4.2 AwesomeLocalRenderer345

15.4.3 AwesomeNativeWindowRenderer347

15.5 AudioPlayer347

15.6 A/V同步简介350

15.7 StagefrightRecorder351

第16章 OMXCodec356

16.1 OpenMAX概述356

16.1.1 组件(Component)与端口(Port)357

16.1.2 组件的初始化358

16.1.3 数据处理359

16.1.4 组件命令OMX_Command360

16.2 OMXCodec类362

16.2.1 组件的创建362

16.2.2 缓冲区的分配364

16.2.3 数据处理流程370

16.3 IOMX374

16.4 OMX插件376

16.4.1 平台厂家插件377

16.4.2 软件OMX插件SoftOMXPlugin379

16.5 组件消息的上报383

第17章 GPS386

17.1 GPS 简述386

17.2 SDK API概述386

17.3 LocationManagerService388

17.4 GpsLocationProvider390

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章 NFC399

18.1 NFC概述399

18.2 SDK API概述400

18.2.1 NfcAdapter401

18.2.2 NdefMessage401

18.2.3 NFC Tag402

18.2.4 NFC-extras403

18.3 进程com.android.nfc403

18.3.1 P2pEventManager403

18.3.2 P2pLinkManager405

18.3.3 Bluetooth Handover408

18.3.4 SNEP409

18.3.5 NDEF Push413

18.3.6 其他类简介414

18.4 JNI层415

第19章 USB418

19.1 SDK API概述418

19.2 UsbService420

19.2.1 UsbDeviceManager421

19.2.2 UsbHostManager422

19.3 uevent424

第20章 Bluetooth和Wi-Fi简析429

20.1 Bluetooth429

20.1.1 Bluetooth概述429

20.1.2 SDK API概述430

20.1.3 Bluetooth服务432

20.1.4 JNI层433

20.2 Wi-Fi436

20.2.1 Wi-Fi概述436

20.2.2 SDK API概述436

20.2.3 JNI和HAL层439

20.2.4 WPA_supplicant440

第21章 Debuggerd441

21.1 预备知识441

21.1.1 ptrace调用441

21.1.2 waitpid442

21.2 debuggerd守护进程442

后记450

资源截图:

深入剖析Android系统