分类: Android平台
2013-03-31 15:11:13
和市面上很多书籍一样,本书可以归于一个特殊的门类——“开源软件/系统源代码分析”。面对这样一类书籍,很多人会十分兴奋,因为能够长期稳定运行的开源系统的实现源代码必定经过了千锤百炼,因此这是一个学习大牛进行系统设计和代码开发的千载难逢的好机会。不过,必须指出的是,我觉得本书的目标对象是有一定基础的Android开发人员,而并不是初学者;刚刚涉足这个领域的各位coder还是应该再啃一段时间的“Android开发大全”这类入门书籍,待夯实基础之后再以此书作为进阶之用方为循序渐进之正途。
回到这本书上来,应该说信息量是足够大的,内容也比较饱满。唯一的遗憾是,试读章节选的不好,是全书最难懂的章节之一,读了几遍依然比较晕,于是只好走老路子,看看书的目录吧。从目录来看,本书最大的特点是,各个章节自成体系,互相之间的关系并不大,阅读顺序不再重要,这对于仅关注Android系统某个方面的读者来说绝对是个福音。例如,搞界面开发者一定不要错过第11、12两章,因为这两章重点介绍了GUI的内部原理以及OpenGL软件层次栈;搞流媒体开发者则应该仔细看看第13~16章,这几章按顺序分别介绍了Multimedia、Audio、Stagefright和OMXCodec这几个和摄像头、音频、视频等相关的组件;第17章的GPS应该是搞地图开发者最为熟悉的吧;而搞通信方面的专业人员则肯定会对第19、20这两章介绍USB、Bluetooth和Wi-Fi的内容感兴趣。可以看出,本书的后半部分就是对Android不同组件实现细节的介绍,因而专业性比较强;那么很自然地,前半部分当然就是一些通用的内容,例如第2章的消息队列与线程处理、第4章的HAL硬件抽象层以及第5章的系统启动过程等等,相信无论你是哪方面的专家,这些内容都是理解Android系统必不可少的。对于我而言,我就比较关心第2章的内容,这是因为平时进行开发的时候使用多线程进行任务调度,要利用Message和Handler进行界面更新等,这些东西用得太多了,但从来都不知道系统中是如何实现的,有机会一定要把这方面搞懂。我想很多开发者应该和我怀有同样的心情,即对于自己常用的东西迫切地想知道它是怎么来的。再来说说这个不太好懂的试读章节(第9章)吧。虽然没能很明白,但大体知道讲的RIL属于Android系统的一个接口层,用于对与Telephony相关的不同进程进行调度。第12章则比较好理解了,介绍了OpenGL规范在Android系统中的实现。
最后来说说这本书的两个小细节,其一是它所用的系统版本为Android 4.1,是目前比较新的版本,一直基于Android 2.3系统进行开发的人员应该对此有所注意,两个系统还是有较大差异的;其二就是书中的代码截图直接采自Source Insight这个编辑器,显示比较美观,代码的不同属性一目了然,不过有点怀疑纸质书上的显示效果,毕竟不像PDF上的彩色显示,黑白打印的书籍上面究竟什么样还是不得而知的。总而言之,对于有一定Android开发经验的人员来说,进行源代码分析是一条不错的进阶途径,相信这本书能够带给我们所需的帮助。