《Android深度探索》第一章讲的是Android系统移植与驱动开发概述。Android的系统架构分为四层:Linux内核、C/C++代码库、Android SDK API、应用程序。Android移植的主要工作:移植Linux驱动和移植HAL。学习Linux驱动要准备一个自己熟悉的Linux操作系统,用于开发和测试Linux驱动;准备一块开发板;学习GNU C;学习相关的硬件知识;不断地实践。Linux将存储器和外设分为3大类:字符设备、块设备、网络设备。
通过对第一章的学习,我了解到由于Android原生的代码支持的设备并不多,要想在自己的设备上完美运行Android,就需要另外开发一些程序,使得Android可以识别相应设备中的硬件,因此就要求Android系统能够进行移植,在移植的过程中开发的最多的就是支持各种硬件设备的Linux驱动程序。因此,进行Android系统移植就必须学会驱动开发。我也知道了Linux驱动只与Linux内核有关,与用户使用的Linux系统无关,不管是哪个Linux系统,只要使用了同样的Linux内核,驱动就可以通用,唯一可以判断Linux内核是否相同的方法就是Linux内核版本号。学习Android驱动开发,实际上就是学习Linux驱动开发,只是Android增加了一个Android特有的HAL,一般的Android驱动都会有对应的HAL,不过HAL也不是必需的,通过NDK也可以直接访问Linux驱动。但是Google建议最好为Linux驱动程序编写相对应的HAL程序库。