本书特 适合高级用户( MI 称这部分用户为发烧友)学习使用 目前不少手机用户对各种硬件拆机评测很熟悉,这本书有如 个软件拆解,作者有如应丁解牛 般,把运行在手机中Android 系统逐层拆解。在简要地介绍了 Android 的版本演化历史之后,作者先从分区和文件系统开始,详细介绍了各个分区的作用,各个分区上存储的内容和数据,还用实验详细演示了如何制作一 刷机包。在介绍了这些静态的软件组成之后,作者开始详细探索这些静态的内容是如何动态工作的。书中以关键的 init 进程作为切入点,详细阐述分析了 Android 的启动过接着分析了启动过程中的关键服务 原生服务和 Andro id 框架服务 操作系统有两个重要的角色 资源的协调者和服务的提供者 作者重点分析了 servicemanager system_ server 这两个进程,它 构成了 Android 系统所扮演的两个角色的基石Android 系统有一点了解的读者可能知道, Android 是基于 Linux 内核的,那么 Android个常用 Linux 系统有何不同?作者接下来就从 一个Linux 用户的视角来观察和分析Android 系统,剥去构筑在 Linux内核之上的那层 Android 外衣,让 个熟悉 Linux系统的人跃跃欲试 “我 能构建一个 Android 系统”。
目录第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
评论