- 定价:¥89.00
- POD价:¥89.00
- 评分:
(已有0条评价)
- 电子书:深入理解Android:卷III[按需印刷]
- 促销活动:
- 我要买:
- ·如此书原封面缺失,印刷将采用出版社授权的新封面;
- ·如电子文件出现问题,可能延长印制周期,我们将提前与您沟通
基本信息

编辑推荐
经典畅销书系“深入理解Android”系列Framework卷完结篇,数十万Android开发工程师翘首以盼
从源代码层面全面、详细剖析了Android框架UI系统的实现原理和工作机制,以及优秀代码的设计思想,填补市场空白
内容简介
计算机书籍
本书是Android经典畅销书系(对Android系统源代码的分析最为系统和细致)“深入理解Android”系列Framework卷的第III卷,从源代码的角度,对Android系统的Audio和UI两大功能的相关模块的实现原理和工作机制做了系统且详细的分析,填补了市场的空白。
本书在逻辑上分为4个部分:
Part 01(第1—2章):这是本书的基础部分,首先介绍了Android源码环境的搭建、编译和调试;然后讲解了Android进程间通信与任务调度的工具Binder与MessageQueue。这两项基础工作是深入研究Android前必须做的功课。
Part 02(第3章):详细分析了AudioService服务的实现,包括音量管理、音频外设管理、AudioFocus机制的实现等内容。
Part 03(第4-6章):这是本书的核心内容之一,详细分析了Android UI的通用实现,依次剖析了WindowManagerService、Android输入系统、Android控件系统的工作原理。
Part 04(第7—8章):主要分析了SystemUI和Android壁纸相关服务的实现,包括StatuSBarManagerService与NotificationManagerService两个系统服务,以及WallpaperManagerService系统服务、动态壁纸与静态壁纸的工作原理等内容。
除此之外,在对海量的Android源代码进行分析的过程中,本书尽可能地对其中的精妙之处进行了分析和解读,目的是希望帮助读者领悟其中的优秀设计思想和方法。
作译者
资深Android系统开发工程师,现就职于索尼移动。从2011年开始从事Android开发,专注于Android系统源代码的研究、定制与维护工作,对Android的架构设计与运行原理有着深入的认识与实践经验,其中对UI相关模块、多媒体系统尤为擅长。曾主持了Android多窗口、多任务以及单手操作等系统定制的开发工作。此外对于其他开发平台如.NET亦有相当的经验。
目录
前 言
第1章 开发环境部署1
1.1获取Android源代码1
1.2Android的编译3
1.3在IDE中导入Android源代码4
1.3.1将Android源代码导入Eclipse4
1.3.2将Android源代码导入SourceInsight5
1.4调试Android源代码6
1.4.1使用Eclipse调试Android Java源代码6
1.4.2使用gdb调试Android C/C++源代码8
1.5本章小结9
第2章深入理解Java Binder和MessageQueue10
2.1概述11
2.2Java层中的Binder分析11
2.2.1Binder架构总览11
2.2.2初始化Java层Binder框架13
2.2.3窥一斑,可见全豹乎16
2.2.4理解AIDL25
2.2.5Java层Binder架构总结28
前言
本书是“深入理解Android”系列的第三本,也是完结篇。按照“深入理解Android”系列图书的路线图,本书所关注的重点是Android中有关用户交互的Framework的知识。总体来说,本书所涵盖的内容分为两个部分:
第一部分是对构成Android用户交互基础的WindowManagerService、输入系统以及控件系统的介绍。
第二部分是以StatusBarManagerService、NotificationManagerService以及Wallpaper-ManagerService为例,对Android在第一部分内容基础之上所实现的UI相关的服务进行探讨。
具体内容如下:第1章介绍进行Android分析的一些准备工作,包括如何获取与编译代码,使用IDE进行代码的阅读及调试等。第2章,根据邓凡平的建议,由《深入理解Android:卷II》第2章内容升级而来,将Android升级到 4.2.2版本,并增加了与AIDL相关的内容。Binder与MessageQueue是Android进程间通信与任务调度的重要工具。因此,进行Android的深入研究之前理解这两个工具的工作原理十分重要。
第3章主要介绍与AudioService服务相关的内容,包括音量控制、AudioFocus以及音量控制面板等内容。第4章介绍WindowManagerService的工作原理,其中涵盖与窗口的创建、布局及动画相关的知识。第5章介绍Android输入系统的工作原理,主要探讨输入事件的监听、读取、翻译、封装以及派发循环等内容。第6章介绍Android控件系统的工作原理,包括控件系统的测量、布局、绘制、动画以及输入事件的派发。第7章主要介绍与SystemUI相关的内容,其中包括StatusBarManagerService与NotificationManagerService两个系统服务,以及与状态栏和导航栏有关的知识。
第8章介绍与Android壁纸相关的内容,包括WallpaperManagerService系统服务、动态壁纸与静态壁纸的工作原理。另外还介绍WindowManagerService对壁纸窗口的一些特殊处理。
其中第1章和第2章是全书的基础。第3章的内容相对独立,主要介绍与用户交互直接相关的音频方面的知识。而第4~6章是本书的重点内容,介绍Android UI的通用实现。在深入理解这三章的知识之后,读者可以通过借鉴第7章和第8章所介绍的SystemUI与壁纸的架构来提高Android与用户进行交互的深度定制能力。另外,Android源代码作为一个优秀的开源项目,大到架构的设计,小到某段代码的实现,都包含值得我们细细品味与吸收的设计思想,并且可以应用于自己所设计的代码上。因此,本书在代码分析的过程中尽可能地给出Android采用某种特定实现的原因或对其优秀的设计思路进行提取,希望读者能够知其然更知其所以然,进而能够在代码研究的过程中跳出代码的具体实现来体会其设计思想,而这正是本书根本目的所在。
读者对象Android应用开发者。
通过本书可以理解SDK中与用户交互相关的API或工具的工作原理,而拥有这部分知识有助于应用开发者设计出更健壮、更有效率,而且更加细腻的代码实现。Android系统开发工程师。
Android系统开发工程师将是本书所面向的最主要的读者群。同“深入理解Android”系列的其他书籍一样,本书将为这些读者提供其最感兴趣的系统实现方面的内容。
对Android系统的运行原理感兴趣的读者。
Android系统源代码中所体现的设计思想并不仅仅局限于Android,它对Android以外的开发工作同样极具借鉴意义。
如何阅读本书
本书所讨论的Android版本号为4.2.2,读者可以通过本书第1章所介绍的方法获取或在线阅读此版本的源代码。因为版本差异可能会使得某些源文件与类定义的位置发生变化,读者可以通过IDE集成的代码搜索功能进行查找。截至本书结稿之日,Android的最新版本为L,即5.0。在这个版本中,与输入系统相关的代码从frameworks/base/services/input文件夹移动到frameworks/native/services/inputflinger中,但本书所介绍的内容在这个版本中仍然适用。
读者需要注意,自第4章起,后一章的部分内容会以上一章为基础,尤其是第4~6章。虽说更加关注某一部分的读者可以直接阅读相关章节,但是笔者建议在阅读过程中至少先完成第4章有关窗口管理与布局内容的学习,因为这部分知识是后续内容的基础中的基础。
本书沿用了“深入理解Android”系列图书的代码引用风格,即在每章的开篇给出所有引用代码的完整路径,并在引用某一段代码之前指明这段代码来自哪个文件、哪个类的哪个方法(或函数),并以注释的方式对代码中的知识点进行介绍。如下所示:
[WindowManagerService.java-->WindowManagerService.addWindow()]
// 普通的单行注释
/* 多行 注释 */
序言
回顾
今天是一个值得高兴的日子。历经两年多的艰苦奋斗,张大伟同学的这本著作,同时也是“深入理解Android”系列三卷中的最后一卷终于完成了。从2011年我和华章公司的杨福川编辑一起开创这一迄今为止国内Android技术书籍市场上唯一一套兼具广度和深度的“深入理解Android”系列书籍算起,四个年头已经过去。在这四年中,本系列书籍的作者们和出版社的编辑们共同奋斗,成果斐然:
2011年9月《深入理解Android:卷I》发布。
2012年8月《深入理解Android:卷II》发布。
2013年1月,本系列的第一本专题卷《深入理解Android:Telephony原理剖析与最佳实践》发布,作者是杨青平。
2014年4月,本系列的第二本专题卷《深入理解Android:Wi-Fi,NFC和GPS卷》发布。
2015年,《深入理解Android:卷III》发布,作者即是本书的主人公张大伟。
2015年及以后,我们还要发布“深入理解Android”系列书籍中的WebKit专题卷、自动化测试卷、蓝牙专题卷等。
从技术层面来说,本书填补了深入理解Android Framework卷中的一个主要空白,即Android Framework中和UI相关的部分。在一个特别讲究“颜值”的时代,本书分析了Android 4.2中WindowManagerService、ViewRoot、Input系统、StatusBar、Wallpaper等重要“颜值绘制/处理”模块。虽然在写书的两年中,Android版本已经从4.2进化到M,但“面虽新,神依在”。所以,我可以很负责任地说,对那些掌握了本书精髓的读者而言,即使Android未来升级到了X,那也只不过是换了一个“马甲”罢了。
展望
我在《深入理解Android:卷II》中曾经详细阐述过“深入理解Android”这一系列的路线图(http://blog.csdn.net/innost/article/details/7648869)。
本系列书大体分为应用部分、Framework部分、专题部分和内核部分。
1)应用部分。这部分拟以Android源码中自带的那些应用程序为分析目标,充分展示Google在自家SDK平台上进行应用开发的深厚功力。这些应用包括Contacts、Gallery2、Mms、Browser等,它们的分析难度都不可小觑。通过对这些系出名门的应用的分析,我们希望读者不仅能把握商业级应用程序开发的精髓,更能精确熟练地掌握Android应用开发的各种技能。
2)Framework部分。关注Android的框架,包括三本书。
卷I:以Native层Framework模块为分析对象。知识点包括init、binder、zygote、jni、Message和Handler、audio系统、surface系统、vold、rild和mediascanner。本书已于2011年9月出版,虽然是基于Android 2.2,读者如若扎实地掌握并理解了其中的内容,那么以后再研究Android 2.3或4.0版本中对应的模块,也是轻而易举之事了。
卷II和卷III:以Java层Framework模块为分析对象。卷II基于4.0.1版,包括UI相关服务和Window系统之外的一些重要服务,如PackageManagerService、ActivityManagerService、PowerManagerService、ContentService、ContentProvider等。而的卷III将以输入系统、WindowManagerService、UI相关服务为主要目标。
Framework部分这3本书的目的是让读者对整个Android系统有较大广度、一定深度的认识,这有益于读者构建一个更为完整的Android系统知识结构。应当指出,这3本书不可能覆盖Android Framework中的所有知识点。因此,尚需读者在此基础上,结合不同需求,进行进一步的深入研究。
3)专题部分。这部分旨在帮助读者沿着Android平台中的某一些专业方向,进行深度挖掘,这一部分拟规划如下专题:
Telephony专题,涵盖SystemServer中相关的通信服务、rild、短信、电话等模块。