《最强Android书:架构大剖析》是一本非常优秀的Android技术书籍。该书通过深入剖析Android架构,不仅能帮助读者深入了解Android技术内幕,还能在不需要源码的情况下彻底掌握Android开发技术。书中采用全程实验直接指导的方式,通过层层拆解的方式详细讲解了Android的各个核心要素。更令人称奇的是,本书还持续更新中,确保读者掌握的知识始终与最新的Android技术保持同步。这本书不仅受到了美国中情局的青睐,还被国内部分手机厂商作为内部员工学习的教材。无论是对于Android开发初学者还是专业开发者来说,这本书都是一本不可多得的宝典。
最强Android书:架构大剖析 电子书封面
读者评价
只能大致看了一遍,因为细看真的不怎么看得懂,对作者的深度佩服的五体投地。
版权归作者所有,任何形式转载请联系作者。
与传统Android技术书不同的是,本书并不从源码分析入手,而是用实验指导,层层解剖Android架构,无须高深的知识背景,也能深入理解Android的精髓——让人知其所以然,有顿悟之感。
作者本身潜心钻研操作系统多年,业内资深大牛。对了,他还是名果粉,所以书中有时能看到他对Android和苹果系统的比较评价,很搞笑,性情中人也。
这本书不同于市面上其他剖析Android内核的书,它对安卓系统的每个模块都有涉猎。比如从介绍启动Bootloader, 然后各个daemon的启动和功能,到framework层各个service介绍,但只是蜻蜓点水。作者把所有的包袱都扔在了第二卷,可以想象第二卷的工作量也够大的了,第二卷目前还没消息。
书里有几个亮点,一个是提供了小实验,对于不熟悉android内部很多hack工具的人来说,有些命令会让人眼前一亮。
另一个亮点是作者画图非常精细漂亮,看得出他看代码功力深厚,仅仅几幅图就能把总体逻辑架构干干净净地展现在读者面前。(当然,这也许和作者的职业有关系吧,他作为一个科技咨询公司的CTO,一大业务就是给美国的技术人员上培训课,因此图文并茂讲述倒是颇有意思。)
看得出作者的技术转型,从Linux的hacker转攻Android,并且很快将经验移植到android中并很快成了领域内的大牛。其中用很多Linux的工具和思维来分析对比android,非常有趣,可以从中横向对比两者系统的异同。
内容介绍
《最强Android书:架构大剖析》通过实验而不是源码,将Android 系统层层拆解,令读者深刻透彻地掌握Android 系统的内部技术:以init 进程为切入点详细阐述了Android 的启动过程和关键服务;从Android 作为资源协调者和服务提供者的角度,重点分析了servicemanager 和system_server 这两个进程。同时,作者比较了Linux 与Android 系统的区别,并对Android 系统的安全性做了深入的阐述。
《最强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