资源名称:深入剖析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
资源截图: