《Android系统源代码情景分析》试读

    Android系统把对硬件的支持划分为两层来实现属于取巧,它借用了成熟的Linux系统的内核,但又不希望因为GPL协议而将设备开发商逼走,所以采用了这种间接的方式绕过了GPL协议,表面上它完全遵循GPL,但它开了个后门,让用户空间的程序具有了内核空间的权限。

Linux会不会为此投机取巧的行为火冒三丈呢?我觉得应该相反,这种方式兼顾了开放和利益,团结了大多数可以团结的力量,所以在如此短的时间内以星火燎原之势为大多数厂商、开发商所接受,让用户可以尽快享受智能手机带来的乐趣,这是纯粹的GPL方式不能做到的,而这是个人PC领域微软采用的方式,Google会成为移动领域的微软吗?

虽然前有苹果iOS,后有微软WindowsPhone,但我更看好Android的前景。它不仅仅是一个生机勃勃的系统,而是一个生态圈,有着全球各大手机和平板电脑厂商以及它们背后的产业链的倾向和支持。没办法,苹果太封闭也太让人眼红了,大家都围在苹果周围,挥动着Android这把锄头,指望能挖掉苹果的利润呢,苹果好汉难敌群狼啊。在苹果与三星、HTC等打来打去的时候,Android在迅速成熟。得道多助,失道寡助,Android的开源方式和对硬件厂商的保护将使得它必定能成为全球各大手机、平板电脑厂商和独立软件开发商的首选目标,这使得它的发展速度超越其它对手,相信无论硬件性能指标和优秀应用的数量都将很快超过其它封闭对手,在这种情况下,用户还会只选贵的,不选对的吗?

    这本书从书名和目录上看采用的是情景应用介绍的方式,试读章节也体现了这一点。作者颇费心思的选择了一个虚拟硬件设备的范例进行讲解,手把手的教你实现了一个从虚拟硬件设备驱动、硬件抽象层模块、硬件访问服务到Android应用程序调用服务的全过程,特别是虚拟硬件设备驱动给出了编译和验证的细节,这对于初学者来说很重要;在硬件抽象层模块的编写过程中介绍了相关的Android源码的内容,分析了它的加载过程,给出了权限问题的处理方法;在硬件访问服务编程中介绍了项目文件结构和重要说明(比如句柄值)。整个过程说明的非常详细,可以作为读者重现整个开发过程的操作指南。
    市面上其它介绍Android开发的书,通常只介绍应用程序部分的开发,只涉及到如何获取硬件事件进行处理,而试读部分的内容则深入到系统核心,把握住了Android架构的关键部分,内容复杂了很多,但同时读者的收获也会大很多。
    在试读提供的全过程开发讲解之后,按目录编排,分别介绍了Android提供的专用驱动和应用程序框架,这些是实际开发过程中必不可少的,有了前面的铺垫,就很清楚整体开发的架构以及这些现成的功能用于哪个层次的开发,甚至可以自己去分析它们是如何实现的。整本书的内容讲述从整体到部分,层次清晰,非常适合用来学习理解Android的精髓。
    这种方式和其它的源码分析的书--比如《莱昂氏UNIX源代码分析》、《Windows内核情景分析》等的写作方式是完全不同的。如果说《莱昂氏UNIX源代码分析》 是源码文件的静态分析,《Windows内核情景分析》是源码的功能分析的话,这本书更偏向于核心应用开发的相关源码介绍。好处是容易阅读和动手操作,不足是不能从操作系统设计的角度展现Android的设计之美和内在细节,很多源码都躲在场景分析能接触到的源码的背后,如果能提供一份Android源码的主要文件的概要介绍就最好了。个人觉得如果书名叫《Android核心编程》可能更名副其实。