最强Android书:架构大剖析

作者
Jonathan Levin (乔纳森·列维)
丛书名
出版社
电子工业出版社
ISBN
9787121318139
简要
简介
内容简介书籍计算机书籍 本书首次将android的内部工作机制整理成了文档,揭示了Android中各种组件的执行逻辑和工作流程。本书通过实验而不是源码,将Android系统层层拆解,令读者深刻透彻地掌握Android系统的内部技术:以init进程为切入点详细阐述了Android的启动过程和关键服务;从Android作为资源协调者和服务提供者的角度,重点分析了servicemanager 和system_server 这两个进程。同时,作者比较了Linux与Android系统的区别,并对Android系统的安全性做了深入的阐述。本书采用了大量的图表示例和实验,表达新颖清晰,让读者能直观地掌握Android 的技术精髓。本书适合广大移动开发者及对Android系统感兴趣的人员阅读。
目录
关于本书\tXVIII
第1章 Android体系结构的变革之路\t1
1.1 Android系统版本的历史变迁\t2
Froyo(冻酸奶)\t3
Gingerbread(姜饼人)\t3
Honeycomb(蜂巢)\t4
Ice Cream Sandwich(冰激凌三明治)\t5
JellyBean(果冻豆)\t5
KitKat(奇巧)\t6
Lollipop(棒棒糖)\t7
Marshmallow(棉花糖)\t8
Nougat(牛轧糖)\t9
1.2 Android与Linux\t11
并非另一个Linux发布版本\t11
然后Android就登场了\t12
与Linux的异同\t13
Android的框架\t15
Dalvik虚拟机\t18
JNI\t19
原生二进制可执行文件\t20
Bionic\t22
Android的原生库\t25
源自其他项目的原生库\t27
硬件抽象层\t28
Linux内核\t29
1.3 Android的衍生产品\t30
谷歌官方的衍生产品\t30
非谷歌官方的衍生品\t33
1.4 对前方道路的思考\t36
兼容64位\t36
ART(Android运行时)\t37
多画面\t38
把Android用作台式机操作系统\t38
Android和ARA项目\t39
Brillo\t40
本章小结\t40
参考文献\t41
第2章 Android的分区和文件系统\t43
2.1 分区架构\t43
需要许多单独分区的原因\t44
GUID分区表\t45
闪存(Flash Storage)系统\t46
文件系统\t46
Android设备中的分区\t49
2.2 Android文件系统中存储的内容\t53
root文件系统\t53
/system分区\t54
/data分区\t65
/cache分区\t71
/vendor\t72
SD卡\t73
2.3 受保护的文件系统\t74
OBB:Opaque Binary Blobs\t74
ASec:Android安全存储(Android Secure Storage)\t76
2.4 Linux伪文件系统\t78
cgroupfs\t78
debugfs\t79
functionfs(/dev/usb-ffs/adb)\t80
procfs(/proc)\t81
pstore(/sys/fs/pstore)\t81
selinuxfs(/sys/fs/selinux)\t82
sysfs(/sys)\t83
本章小结\t84
参考文献\t84
第3章 Android的启动、备份和重置\t86
3.1 Android系统镜像\t87
Boot Loader\t89
Boot镜像\t93
内核\t95
RAM disk\t97
/System和/Data分区镜像\t99
3.2 启动过程\t101
固件启动过程\t101
内核启动过程\t105
3.3 关机和重启\t109
3.4 应用的备份和恢复\t112
命令行工具\t113
本地备份\t114
监视备份操作\t117
3.5 系统重置(recovery)和升级\t119
OTA(Over-The-Air)升级包\t121
制作你自己的ROM\t124
制作ROM时可用的网上资源\t128
本章小结\t130
参考文献\t130
第4章 init\t132
4.1 init的角色和任务\t132
系统属性\t134
.rc文件\t140
总结:init的执行流程\t146
4.2 init和USB\t150
4.3 init的其他角色\t152
ueventd\t153
watchdogd\t154
本章小结\t154
本章讨论所涉及的文件\t155
第5章 Android的守护进程\t156
5.1 core类中的服务\t156
adbd\t156
servicemanager\t160
healthd\t161
lmkd(Android L)\t165
logd(Android L)\t168
vold\t173
5.2 网络相关服务\t182
netd\t182
mdnsd\t187
mtpd\t187
racoon\t188
rild\t189
5.3 图形及多媒体服务\t190
surfaceflinger\t190
bootanimation\t192
mediaserver\t194
drmserver\t196
5.4 其他服务\t197
installd\t197
keystore\t200
debuggerd\t204
gatekeeper(Android M)\t207
sdcard\t208
Zygote\t211
本章小结\t214
本章讨论涉及的文件\t214
参考文献\t215
第6章 框架服务的架构\t216
6.1 再探servicemanager\t217
6.2 服务调用的模式\t222
优点和缺点\t224
序列化和Android接口定义语言(AIDL)\t225
6.3 Binder\t228
简明历史\t228
那么,Binder究竟是什么\t229
使用Binder\t230
分析Binder的当前使用情况\t231
6.4 system_server\t232
启动及执行流程\t232
修改启动时的行为\t234
本章小结\t237
本章讨论涉及的文件\t237
参考文献\t237
第7章 从Linux角度看Android\t238
7.1 重温/proc\t239
符号链接:cwd、exe和root\t240
fd\t243
fdinfo\t245
status\t247
7.2 用户模式内存管理\t254
虚拟内存的分类和生命周期\t254
内存的相关术语\t258
内存不足时的应对方案\t266
7.3 跟踪系统调用\t269
toolbox ps工具\t269
wchan和syscall文件\t270
strace工具\t271
本章小结\t272
参考文献\t272
第8章 Android安全性\t274
8.1 移动安全威胁建模\t275
攻击向量\t275
攻击之道\t278
8.2 Linux层上的安全措施\t281
Android使用Linux权限的方式\t281
Linux权能\t289
SELinux\t294
其他值得注意的特性\t301
8.3 Dalvik层上的安全措施\t305
Dalvik层上的权限\t305
Dalvik代码签名\t310
8.4 用户层上的安全措施\t312
锁屏机制\t312
支持多用户\t316
密钥管理\t318
证书管理\t318
密钥和私钥管理\t322
8.5 存储安全\t323
加密/data分区\t323
基于文件的加密(Nougat 7.1)\t326
Direct Boot (Nougat的新特性)\t326
启动过程中加强验证\t327
8.6 Root Android设备\t328
在设备启动环节中root\t329
利用安全漏洞root\t331
Root对安全的影响\t332
本章小结\t334
参考文献\t334

推荐

车牌查询
桂ICP备20004708号-3