最强Android书 架构大剖析
出版时间:2018
内容简介
本书通过实验而不是源码,将Android 系统层层拆解,令读者深刻透彻地掌握Android 系统的内部技术:以init 进程为切入点详细阐述了Android 的启动过程和关键服务;从Android 作为资源协调者和服务提供者的角度,重点分析了servicemanager 和system_server 这两个进程。同时,作者比较了Linux 与Android 系统的区别,并对Android 系统的安全性做了深入的阐述。 本书采用了大量的图表示例和实验,表达新颖清晰,让读者能直观地掌握Android 的技术精髓。 本书适合广大移动开发者及对Android 系统感兴趣的人员阅读。
目录
关于本书 XIV
第1 章 Android 体系结构的变革之路 1
1.1 Android 系统版本的历史变迁 2
Froyo(冻酸奶) 3
Gingerbread(姜饼人) 3
Honeycomb(蜂巢) 4
Ice Cream Sandwich(冰激凌三明治) 5
JellyBean(果冻豆) 5
KitKat(奇巧) 6
Lollipop(棒棒糖) 7
Marshmallow(棉花糖) 8
Nougat(牛轧糖) 9
1.2 Android 与Linux 11
并非另一个Linux 发布版本 11
然后Android 就登场了 12
与Linux 的异同 13
Android 的框架 15
Dalvik 虚拟机 18
JNI 19
原生二进制可执行文件 20
Bionic 22
Android 的原生库 25
源自其他项目的原生库 27
硬件抽象层 28
Linux 内核 29
1.3 Android 的衍生产品 30
谷歌官方的衍生产品 30
非谷歌官方的衍生品 33
1.4 对前方道路的思考 36
兼容64 位 36
ART(Android 运行时) 37
多画面 38
把Android 用作台式机操作系统 38
Android 和ARA 项目 39
Brillo 40
本章小结 40
参考文献 41
第2 章 Android 的分区和文件系统 43
2.1 分区架构 43
需要许多单独分区的原因 44
GUID 分区表 45
闪存(Flash Storage)系统 46
文件系统 46
Android 设备中的分区 49
2.2 Android 文件系统中存储的内容 53
root 文件系统 53
/system 分区 54
/data 分区 65
/cache 分区 71
/vendor 目录 72
SD 卡 73
2.3 受保护的文件系统 74
OBB:Opaque Binary Blobs 74
ASec:Android 安全存储(Android Secure Storage) 76
2.4 Linux 伪文件系统 78
cgroupfs 78
debugfs 79
functionfs(/dev/usb-ffs/adb) 80
procfs(/proc) 81
pstore(/sys/fs/pstore) 81
selinuxfs(/sys/fs/selinux) 82
sysfs(/sys) 83
本章小结 84
参考文献 84
第3 章 Android 的启动、备份和重置 86
3.1 Android 系统镜像 87
Boot Loader 89
Boot 镜像 93
内核 95
RAM disk 97
/System 和/Data 分区镜像 99
3.2 启动过程 101
固件启动过程 101
内核启动过程 105
3.3 关机和重启 109
3.4 应用的备份和恢复 112
命令行工具 113
本地备份 114
监视备份操作 117
3.5 系统重置(recovery)和升级 119
OTA(Over-The-Air)升级包 121
制作你自己的ROM 124
制作ROM 时可用的网上资源 128
本章小结 130
参考文献 130
第4 章 init 132
4.1 init 的角色和任务 132
系统属性 134
.rc 文件 140
总结:init 的执行流程 146
4.2 init 和USB 150
4.3 init 的其他角色 152
ueventd 153
watchdogd 154
本章小结 154
XIV ┃ 最强Android 书:架构大剖析
本章讨论所涉及的文件 155
第5 章 Android 的守护进程 156
5.1 core 类中的服务 156
adbd 156
servicemanager 160
healthd 161
lmkd(Android L) 165
logd(Android L) 168
vold 173
5.2 网络相关服务 182
netd 182
mdnsd 187
mtpd 187
racoon 188
rild 189
5.3 图形及多媒体服务 190
surfaceflinger 190
bootanimation 192
mediaserver 194
drmserver 196
5.4 其他服务 197
installd 197
keystore 200
debuggerd[64] 204
gatekeeper(Android M) 207
sdcard 208
Zygote[64] 211
本章小结 214
本章讨论涉及的文件 214
参考文献 215
第6 章 框架服务的架构 216
6.1 再探servicemanager 217
6.2 服务调用的模式 222
优点和缺点 224
序列化和Android 接口定义语言(AIDL) 225
6.3 Binder 228
简明历史 228
那么,Binder 究竟是什么 229
使用Binder 230
分析Binder 的当前使用情况 231
6.4 system_server 232
启动及执行流程 232
修改启动时的行为 234
本章小结 237
本章讨论涉及的文件 237
参考文献 237
第7章 从Linux 角度看Android 238
7.1 重温/proc 239
符号链接:cwd、exe 和root 240
fd 243
fdinfo 245
status 247
7.2 用户模式内存管理 254
虚拟内存的分类和生命周期 254
内存的相关术语 258
内存不足时的应对方案 266
7.3 跟踪系统调用 269
toolbox ps 工具 269
wchan 和syscall 文件 270
strace 工具 271
本章小结 272
参考文献 272
第8 章 Android 安全性 274
8.1 移动安全威胁建模 275
攻击向量 275
攻击之道 278
8.2 Linux 层上的安全措施 281
Android 使用Linux 权限的方式 281
Linux 权能 289
SELinux 294
其他值得注意的特性 301
8.3 Dalvik 层上的安全措施 305
Dalvik 层上的权限 305
Dalvik 代码签名 310
8.4 用户层上的安全措施 312
锁屏机制 312
支持多用户 316
密钥管理 318
证书管理 318
密钥和私钥管理 322
8.5 存储安全 323
加密/data 分区 323
基于文件的加密(Nougat 7.1) 326
Direct Boot (Nougat 的新特性) 326
启动过程中加强验证 327
8.6 Root Android 设备 328
在设备启动环节中root 329
利用安全漏洞root 331
Root 对安全的影响 332
本章小结 334
参考文献 334