分类: 嵌入式
2012-11-15 22:49:35
使用Android手机也已半年有余,刚入手时那种惊讶和欣喜至今依然历历在目。相信不少人一定有和我类似的经历,面对着这样一种和之前使用的Symbian系统完全不同的手机架构,浮现在脑海中的只有“神奇”这两个字。随着使用的深入,各种常用软件都安装了进去;看着一个个炫目的应用,作为软件从业人员的我终于手痒痒了,于是尝试着跟着教程开发简单应用。应该说这一步要比当年写第一个C程序复杂一些,毕竟这次开发环境和运行环境是分离的;因此当手机屏幕成功出现“Hello World!”两个单词的时候,还是按耐不住激动的心情。不过到此为止,对于Android的了解依然停留在应用层面,技术细节真的知道的不多;此番试读这本《Android系统源代码情景分析》就是希望通过对Android底层机制的学习对这个系统有更加深刻的理解,以期将来能够站在更高的高度上去认识Android系统的开发和应用。
试读的是书中的第2章——硬件抽象层。对于Android系统中几个层次的关系如书中的下图所示:
大体上分为用户空间和内核空间,其中用户空间是比较高的层次,面向应用开发,分别包括硬件抽象层、外部库和运行时库层、应用程序框架层和应用程序层;而内核空间则是底层级别,可以直接操作硬件设备,分别包括设备驱动、进程管理和内存管理。我们所说的硬件抽象层(HAL)就是处于两个空间的交界地带,属于用户空间但封装和调用的都是内核空间中的底层硬件实现。这一章的基本结构也是由低到高的顺序,首先在内核空间中开发硬件驱动,接下来在用户空间中添加硬件抽象层模块,然后在应用程序框架层添加硬件访问服务,最后开发应用程序访问硬件。本章给人的整体阅读感受主要有两点:第一是思路清晰,层次分明,从而把在哪一层需要做什么交待得很清楚;第二是内容详实,有说服力,不仅有技术细节和源代码,而且开发了验证程序,针对HAL的编写规范和访问权限设置也做出了说明,分析得比较到位。
大致看了一下目录,书中其余章节主要围绕上面那个图中的设备驱动和应用程序框架层来展开的,其中应用程序框架层无疑是很重要的,是最靠近我们开发者的源代码了,读者应该对这部分特别注意。阅读技术内幕类的书籍和应用开发的书籍是有明显不同的,那就是前者重理论,更加抽象,不容易理解;后者重实践,比较具体,需要自己动手。所以读者在这方面也应有心理准备,遇到想不通的地方不要气馁,仔细分析或者利用网络往往会取得事半功倍的效果。