| 作者 |
| 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 |