今天是一个值得高兴的日子。历经两年多的艰苦奋斗,张大伟同学的这本著作,同时也是隶属“深入理解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,那也只不过是换了一个马甲罢了。
我在卷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,读者如若扎实地掌握并理解了其中的内容,那么以后再研究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、短信、电话等模块。
· 多媒体专题,涵盖MultiMedia相关的模块,包括Stagefright、OMX等。另外,我们也打算引入开源世界中最流行的一些编解码引擎和播放引擎作为分析对象。
· 浏览器和Webkit专题,该专题难度非常大,但其重要性却不言而喻。
· Dalvik虚拟机专题,该专题希望对Dalvik进行一番深度研究,涉及面包括Java虚拟机的实现、Android的一些特殊定制等内容。现在来看,Dalvik已经被ART替换,所以这本书的目标就应该是ART虚拟机专题了。
· Android系统安全专题,该专题的目标是,分析Android系统上提供的安全方面的控制机制。另外,Linux平台上的一些常用安全机制(例如,文件系统加密等)也是本书所要考虑的。这套安全专题我已经在自己的博客[①]上写了部分内容,包括Java Security、设备加密等。
· UI/UE设计以及心理学专题,:该专题希望能提供一些心理学方面的指导以及具体的UI/UE设计方面的指南以帮助开发人员开发出更美、更体贴和更方便的应用。
专题部分隐含着的一个极为重要的宗旨:即基于Android,而高于Android。换言之,这些书籍虽都以Android为切入点,但我们更希望读者学到的知识、掌握的技术却不局限于Android平台。
4) 内核部分。这部分图书拟以Linux内核为主。虽然这方面的经典教材非常多,但要么是诸如《Linux内核情景分析》之类的鸿篇巨帙,要么是类似《Linux内核设计与实现》,内容过于简洁。另外,现有书籍使用的内核源码都已比较陈旧。为此,我们希望能有一本难度适中、知识面较广、深度适宜的书籍。
今天,正是由于大伟的努力,我们的Framework部分得以完美收官。高兴的同时,我们认为前路依然艰辛。在此,我和福川兄再次诚挚邀请国内外有热情,愿分享、有责任心的兄弟姐妹们来一起继续发扬光大“深入理解Android”这一系列书籍。
还是杨澜的那句话,“原来我只佩服成功的人,现在我更尊敬那些正在努力的人”。让我们一起成为被尊敬的人吧!
我和大伟相知相识的过程还颇有点意思。
那时我们都在中科创达工作,有一次,我们俩要一起重构一个和音频相关的解码模块。当时我噼噼啪啪把几段和多线程相关的同步代码块改写后,引起了大伟的强烈质疑。在质疑(challenge)和争论(argue)的过程中,我发现大伟思路清晰,技术能力较强,是一个不可多得的好苗子,便有意交往。虽然吵得很激烈,不过最终实践的结果是这次改写还是比较成功的,这使得我赢得了大伟的信任。
交手过后,我们便成了好兄弟。2012年夏天,我和大伟被派遣到上海高通公司OnSite。当时我刚完成了卷II的撰写,同时也在思考很多读者提出的一个问题,即什么时候能详细分析一下AndroidFramework UI部分。古语云“书如其人”,对于我这样一个对颜值不是很讲究的人来说,写这本书肯定不是最合适的。因为我觉得这边书的作者需要耐心、细心、同时还需要一定审美观。在我认识的技术能力较强的兄弟们中,大伟无疑是最适合撰写本书的人选。
当然,对于一个从未写过书籍的人而言,写书这样的重任最初还是让大伟觉得紧张,感觉没有信心。所以,我和大伟一起签的合同,让他觉得自己不是孤身作战。另外,在一些技术难点上,我会编写一些小例子,让大伟去完善,并以这些例子为出发点来分析Framework的实现。最后,大伟凭借自己的的天分和努力,很快就从一个跟随者变成了这本书的主导者和唯一作者。
在本书的审稿过程中,我很欣慰得发现这本书细节深入、知识全面,是一本诚意之作。在此,我个人非常感谢大伟的努力,这本书了却了我多年的一桩心愿。
我曾经很羡慕那些有战友之情的士兵们。在和平年代的今天,我觉得我和大伟,福川,杨青平等作者、编辑都曾为了共同一个目标一起努力过,奋斗过,我们之间的感情应该能够媲美战友之情吧。
邓凡平
2015-7-5
[①] 我的博客地址:blog.csdn.net/innost。