Android深度探索-卷1读后感
————陈昊楠
第一章 安卓系统移植与驱动开发概述
这一章主要概括的介绍了安卓驱动开发和系统移植的主要内容,对安卓与Linux驱动做了一个总体的介绍。通过对第一章的学习,使我对Linux驱动开发有了一个感性的认识。在学习过程中,首先,我通过以往上课时学习到的知识和查阅资料了解了一些专业词汇的含义(例如:.so文件:共享库,是shared object,用于动态连接;SDK:软件开发工具包;API:应用程序编程接口;HAL:硬件抽象层等),为以后更好的学习安卓驱动开发打下了基础。
其次在了解了一些专业基础的前提下,通过对第一章的学习我了解到,目前,安卓系统已经形成了非常完善的架构,主要包括Linux内核、核心库及环境(C/C++代码库和Runtime)、安卓软件开发工具包(应用框架)和应用程序。
Android移植可分为两部分:分别是应用移植与系统移植。本书主要介绍的是系统移植,是指让Android操作系统在某一个特定硬件平台上运行。这么做要求该操作系统支持硬件平台的CPU架构,还要让Android可以识别平台上的各种硬件。因此,系统移植除了移植CPU架构外,最重要的就是移植Linux驱动。除了Linux驱动移植外,安卓系统还独有HAL硬件抽象层,它位于安卓系统与Linux系统之间,在安卓访问Linux时起到作用。以此,安卓移植就分成了Linux驱动移植和HAL移植。
我们都知道Android是基于Linux内核的,因为一直以来Linux是开源的,所以基于Linux内核的Android也号称开源,所以一经推出后就受到了广大程序员和手机厂商的青睐。但是在开源方面Android“半遮半掩”,具体原因得从Android的发展历史谈起。
比如所有为Android写的硬件驱动都不能合并到Kernel中。这些驱动程序只能在Google代码中有效,而在Kernel中根本没法用。正是因为这个原因,Google从不把大量的硬件驱动程序和平台源码提交给Kernel。 既然硬件厂商都不开源驱动代码,对于我们生存在Android底层的开发人员,特别是从事驱动开发的成员来说,就带来了巨大的就业机会。我们可以为硬件厂商开发不开源的驱动程序而获得报酬,为此随着Android的异常火爆,市面上有很多企业在招聘Android驱动开发人员。由此可见,驱动的不开源给我们的学习带来了难题,但同样也为以后的就业机会增加了砝码。学习Linux需要做的事情有以下几件:准备一个自己熟悉的Linux操作系统,用于开发和测试Linux驱动,建议使用Ubuntu Linux10.04及以上版本、准备一块开发板(建议采用基于ARM11的开发板)、学习GNUC、学习相关的硬件知识、不断地实践。