第1章 智能指针
1.1 智能指针概述
1.2 引用计数基类RefBase
1.3 轻量级引用计数LightRefBase
1.4 强指针
1.4.1 强指针变量的初始化与生命周期
1.4.2 赋值操作与引用计数变化
1.5 弱指针
第2章 消息队列与线程处理
2.1 消息队列处理模型的设计
2.2 消息队列与线程处理的Java实现
2.2.1 Thread\/Runnable
2.2.2 Message
2.2.3 MessageQueue概述
2.2.4 Handler
2.2.5 Looper
2.2.6 再论Handler
2.2.7 对同步消息的支持
2.3 native层的Looper与消息队列处理
2.3.1 Looper中的睡眠等待与唤醒机制
2.3.2 Looper对文件描述符的监控与处理
2.3.3 Looper中的消息队列处理机制
2.3.4 Looper与线程执行上下文
第3章 Binder IPC及其应用
3.1 Binder IPC
3.1.1 Binder IPC与系统服务
3.1.2 Binder类结构与调用关系
3.1.3 模板函数interface_cast的背后
3.1.4 例子AudioPolicyService
3.2 Java层对Binder的封装
3.2.1 例子IMediaPlaybackService
3.2.2 例子PhoneStateListener
3.3 大内存块的跨进程共享
3.3.1 概述
3.3.2 调用接口
3.3.3 设备空间的映射
3.3.4 Server侧的处理
第4章 HAL硬件抽象层
4.1 HAL概述
4.2 硬件模块库的通用写法
4.3 硬件模块库的装载与解析
4.4 例子Lights
4.5 例子Camera
4.6 例子Power和Vibrator
第5章 Android的启动过程
5.1 Android初始化语言及解析
5.1.1 Action
5.1.2 触发器trigger
5.1.3 命令Command
5.1.4 服务Service
5.1.5 .rc文件的解析
5.2 BootChart
5.3 ueventd守护进程
5.4 init进程的启动过程
5.5 init.rc文件中的服务进程
5.6 system_server进程
5.6.1 app_process程序
5.6.2 system_server进程
第6章 输入系统
6.1 输入系统概述
6.2 读线程
6.2.1 EventHub
6.2.2 InputReader
6.2.3 InputDevice
6.2.4 InputMapper
6.2.5 QueuedInputListener
6.3 分发线程
6.3.1 InputDispatcher
6.3.2 InputChannel
6.4 输入系统的开启
第7章 MassStorage
7.1 MassStorage概述
7.2 MountService
7.3 库libsysutils.so
7.3.1 SocketListener
7.3.2 FrameworkListener
7.3.3 NetlinkListener
7.4 守护进程vold
7.4.1 NetlinkManager
7.4.2 CommandListener
7.4.3 vold的main函数
第8章 Sensor
8.1 Sensor概述
8.2 SDK API概述
8.3 Sensor管理器
8.3.1 Sensor采样数据的获取与处理
8.3.2 SensorEventQueue
8.4 SensorService
8.4.1 逻辑传感器
8.4.2 物理传感器
8.4.3 Sensor HAL
第9章 RIL
9.1 RIL概述
9.2 rild守护进程
9.3 事件处理与分发线程
9.3.1 分发线程中的事件处理
9.3.2 RIL请求的接收与处理
9.3.3 RIL响应的回送
9.4 radiooptions工具程序
9.5 RILJ
9.5.1 RILJ概述
9.5.2 RILRequest的发送过程
9.5.3 Response的处理过程
第10章 com.android.phone进程
10.1 层次状态机StateMachine
10.2 GSMPhone
10.3 GsmCallTracker
10.3.1 GsmDataConnectionTracker
10.3.2 GsmServiceStateTracker
10.3.3 DefaultPhoneNotifier
10.3.4 其他
10.4 进程com.android.phone
第11章 Graphic
11.1 Graphic概述
11.2 Java层简介
11.2.1 SurfaceSession
11.2.2 Surface
11.2.3 SurfaceView
11.2.4 TextureView
11.3 JNI层简介
11.4 SKIA库简介
11.5 库libgui.so
11.5.1 概述
11.5.2 ComposerService
11.5.3 共享控制块surface_flinger_cblk_t
11.5.4 ISurfaceComposer
11.5.5 ScreenshotClient
11.5.6 SurfaceComposerClient
11.5.7 Surface
11.5.8 SurfaceControl
11.5.9 绘图操作的前后过程
11.5.10 SurfaceTexture Client
11.6 SurfaceFlinger进程
11.6.1 图层
11.6.2 DisplayHardware简介
11.6.3 HWComposer简介
11.6.4 VSync
11.7 库libui.so简介
11.7.1 GraphicBuffer
11.7.2 FramebufferNativeWindow
11.8 RenderScript简介
第12章 OpenGL ES软件层次栈
12.1 Android中的OpenGL ES简介
12.2 Android中OpenGL软件层次栈
12.3 包裹库与hook钩子
12.3.1 libGLESv1_CM.so包裹库
12.3.2 libGLESv2包裹库
12.3.3 libEGL包裹库
12.3.4 结构体egl_t和gl_hooks_t钩子
12.4 OpenGL实现库的加载和解析
12.4.1 加载和解析的发起
12.4.2 库装载器Loader
12.5 libGLES_android库和ETC1简介
第13章 Multimedia
13.1 Multimedia概述
13.2 API类简述
13.3 多媒体播放(playback)
13.3.1 播放流程
13.3.2 来自server侧的消息事件通知
13.4 多媒体录制(Recording)
13.5 元数据(MetaData)获取
13.6 Camera
13.6.1 Camera概述
13.6.2 CameraHardwareInterface与HAL层
13.7 Camera事件通知机制
第14章 Audio
14.1 Audio概述
14.2 Audio播放AudioTrack
14.2.1 共享控制块audio_track_cblk_t
14.2.2 数据的写入
14.2.3 事件的回送及处理
14.3 Auido录音Recording
14.3.1 录音的开始过程
14.3.2 录音的停止过程
14.4 AudioFlinger
14.4.1 AudioFlinger概述
14.4.2 Track相关类概述
14.4.3 AudioFlinger中的线程
14.5 音效Audio
展开
——诚迈科技(南京)有限公司 设备软件事业部经理 储刘火
本书汇聚作者多年的Android研发经验, 在作者的引导下, 您会逐渐理清Android的内部运行方式,作者在关键部分的注解,为您阅读源代码扫清障碍。
——联发博动(北京)有限公司 高级工程师 潘鹏
在Android与iOS分庭抗礼的移动互联时代,开放的Android几乎成为一种公众语言,掌握它可以使我们与Google、与厂商平等对话,发出自己的声音,让我们在互联终端设备领域驰骋无羁。
——Nvidia 客户经理 申力茜
这是一本让你能贯穿Android手机系统的书,它涵盖了从中间框架到上层应用的大部分内容,是一本完全适合参与Android开发的软件工程师参考阅读的书。作者以他在Android系统上坚实的背景知识和工作经验,为我们讲述了一个复杂系统的运行过程,引领我们快速进入Android的内部世界。
——Broadcom 高级应用工程师 王文龙
我是一个Android应用开发者,疯狂地热爱Android底层,我希望更深地了解Android SDK API背后的东西,以便我能更透彻地理解Android的官方文档,我还希望利用Android中某些最新特性去开发更酷功能更强的程序。这本书将给我很大的帮助。
——58同城 Android高级开发工程师 章发明
从事Android相关工作多年,读这本书仍然对我有许多启迪,尤其是其内部结构和运行机制,我十分高兴能读到这本书!
——联想公司 高级系统工程师 朱庆友