第1章 预备知识 1
1.1 Android系统架构 1
1.2关于AOSP 3
1.3理解Android Binder机制 3
1.3.1 Binder机制简介 3
1.3.2整体架构 4
1.3.3驱动层 7
1.3.4 Binder Framework C++部分 26
1.3.5 Binder Framework Java部分 54
1.3.6参考资料与推荐读物 70
第2章Android系统中的进程管理 72
2.1关于进程 72
2.2系统进程与应用进程 73
2.2.1 init进程与init语言 75
2.2.2 Zygote进程 81
2.2.3 system server进程 84
2.3应用进程的创建 87
2.3.1关于应用组件 87
2.3.2进程与线程 88
2.3.3 ActivityManagerService 89
2.3.4 Activity与进程创建 92
2.3.5 Service与进程创建 94
2.3.6 ContentProvider与进程创建 96
2.3.7 BroadcastReceiver与进程创建 97
2.3.8参考资料与推荐读物 99
2.4进程的优先级管理 100
2.4.1优先级的依据 100
2.4.2优先级的基础 102
2.4.3优先级的更新 105
2.4.4优先级的算法 108
2.4.5优先级的生效 119
2.4.6结束语 119
2.4.7参考资料与推荐读物 120
2.5进程与内存的回收 120
2.5.1开发者API 121
2.5.2虚拟机的垃圾回收 122
2.5.3开发者的内存回收 122
2.5.4 Linux OOM Killer 123
2.5.5 LowMemoryKiller 125
2.5.6进程的死亡处理 126
2.5.7参考资料与推荐读物 127
2.6结束语 127
第3章Android系统上的虚拟机 129
3.1 Java语言与Java虚拟机 130
3.1.1 Java语言 130
3.1.2 Java虚拟机 130
3.1.3 Java虚拟机实现架构 130
3.1.4类加载器(Class loader ) 132
3.1.5垃圾回收 132
3.1.6结束语 135
3.1.7参考资料与推荐读物 135
3.2 Dalvik虚拟机 135
3.2.1 Stack-based VS.Register-based 136
3.2.2 Dalvik Executable(dex)文件 137
3.2.3 Dalvik指令 139
3.2.4 Dalvik启动过程 144
3.2.5程序的执行:解释与编译 153
3.2.6 Dalvik上的垃圾回收 156
3.2.7参考资料与推荐读物 159
3.3 Android Runtime (ART) 159
3.3.1 ART VS.Dalvik 159
3.3.2 OAT文件格式 162
3.3.3 boot.oat与boot.art 165
3.3.4 Dalvik到ART的切换 166
3.3.5 ART虚拟机的启动过程 169
3.3.6内存分配 173
3.3.7垃圾回收 178
3.3.8 JIT的回归 182
3.3.9 ART虚拟机的演进与配置 185
3.3.10参考资料与推荐读物 186
第4章 用户界面改进 187
4.1多窗口功能 187
4.1.1概述 188
4.1.2开发者相关 189
4.1.3内部实现 191
4.1.4参考资料与推荐读物 205
4.2 App Shortcuts 206
4.2.1开发者API 206
4.2.2内部实现 209
第5章 系统界面改进 215
5.1 SystemUI整体介绍 215
5.1.1 SystemUI简介 215
5.1.2 SystemUI的初始化 216
5.1.3 System Bar的初始化 221
5.1.4参考资料与推荐读物 224
5.2 System Bar 224
5.3 Notification 234
5.3.1开发者API 234
5.3.2通知栏与通知窗口 240
5.3.3 Notification从发送到显示 243
5.4 Quick Settings 256
5.4.1开发者API 256
5.4.2系统实现 260
5.4.3参考资料与推荐读物 265
第6章 功耗的改进 266
6.1 Project Volta 266
6.1.1 JobScheduler API 267
6.1.2电量消耗分析工具 277
6.1.3在虚拟机层面减少电池消耗 279
6.1.4省电模式 280
6.1.5结束语 281
6.1.6参考资料与推荐读物 281
6.2 Doze模式与App StandBy 282
6.2.1概述 282
6.2.2了解Doze模式 282
6.2.3了解App StandBy 284
6.2.4对其他用例的支持 284
6.2.5在Doze模式和App StandBy下进行测试 285
6.2.6 Doze模式的实现 287
6.2.7 App StandBy的实现 293
6.2.8参考资料与推荐读物 297
6.3 Android 8.0上的后台限制 297
6.3.1概览 298
6.3.2后台服务限制 299
6.3.3广播限制 300
6.3.4系统实现 301
6.3.5结束语 308
第7章 面向设备管理的改进 310
7.1多用户的支持 310
7.1.1术语 311
7.1.2支持多用户 312
7.1.3多用户的实现 313
7.1.4参考资料与推荐读物 333
7.2设备管理 334
7.2.1 Device Administration API介绍 334
7.2.2开发设备管理程序 335
7.3面向企业环境的Android 339
7.3.1企业环境解决方案 340
7.3.2受管理资料(Managed Profiles ) 340
7.3.3受管理资料的内部实现 342
7.3.4参考资料与推荐读物 349
第8章Android系统安全改进 350
8.1 Android系统安全概览 350
8.2运行时权限 351
8.2.1功能介绍 351
8.2.2新增API 354
8.2.3参考资料与推荐读物 370
第9章 图形系统改进 371
9.1整体架构 371
9.1.1 Android图形组件 371
9.1.2组件 373
9.1.3 Android如何绘制视图 374
9.1.4关于硬件加速 376
9.1.5参考资料与推荐读物 377
9.2图形系统组件 377
9.2.1 Activity与Surface 377
9.2.2 Gralloc 379
9.2.3 BufferQueue 382
9.2.4 Surface 384
9.2.5参考资料与推荐读物 388
9.3 Project Butter 388
9.3.1 FPS 389
9.3.2 VSYNC 391
9.3.3 Choreographer与VSYNC 392
9.3.4 Triple Buffer 398
9.3.5参考资料与推荐读物 400
9.4 SurfaceFlinger 400
9.4.1 SurfaceFlinger介绍 401
9.4.2 Hardware Composer 402
9.4.3 SurfaceFlinger的启动 403
9.4.4 SurfaceFlinger的对外接口 405
9.4.5 VSYNC的传递 407
9.4.6 SurfaceFlinger的事件 409
9.4.7图层的合成 411
9.4.8刷新 412
9.4.9参考资料与推荐读物 413
9.5 Vulkan简介 414
9.5.1 Vulkan组件 414
9.5.2修改的组件 415
9.5.3 Vulkan API 415
9.5.4参考资料与推荐读物 415
第10章 系统架构改进 416
10.1 Project Treble整体介绍 417
10.2 HIDL 420
10.2.1语法介绍 421
10.2.2 HIDL与Binder 422
10.3 ConfigStore HAL 423
10.3.1概述 423
10.3.2内部实现 424
10.4 Vendor Native Development Kit 426
10.5 Vendor Interface Object 427
10.5.1概述 427
10.5.2 Manifest 429
10.5.3内部实现 429