Android原生的代码支持的设备不多,需另开发程序使Android可识别相应设备中的硬件,为特定设备定制Android的过程称为“移植”。
Android系统架构——4层
第一层:Linux内核:Android是基于Linux内核的,这一层主要包括Linux的驱动程序以及内存管理、进程管理、电源管理等程序。Android使用Linux2.6作为其内核。
第二层:C/C++代码库:这一层主要包括使用C/C++编写的代码库(Linux下的.so文件以及嵌入到APK程序中的NDK代码),也包括Dalivk虚拟机的运行时(Rumtime)。
第三层:Android SDK API:直接面向应用程序的Java API层,用Java编写的各种Library(为基于Dalvik虚拟机格式的)。
第四层:应用程序:是所有Android用户都要接触到的,直接面向最终用户的Java应用程序,所有Android应用程序都属于这一层,主要依靠第三层来完成各种功能。
Android移植
应用移植:将应用程序移植到某一特定硬件平台。
系统移植:指让Android操作系统在某一特定硬件平台上运行。(移植CPU架构,移植Linux驱动,移植硬件抽象层HAL)
查看Linux内核版本
在Android系统中“设备”>“关于手机”中查看当前Android系统所采用的Linux内核版本。
查看Linux系统内核版本:方法一:在Linux终端执行命令“uname -a”。方法二:在Linux终端执行命令“cat /proc/version”。(/proc是系统内核的映射,该目录中的文件是存放在系统内存中的,以文件系统的方式为访问系统内核数据的操作提供接口。uname命令就是从/proc/version文件中获取信息)
Linux内核版本号的定义规则
组成:主版本号;次版本号;修订版本号;微调版本号;为特定的Linux系统特别调校的描述(可为任意字符串,由开发者自行定义)。
当五部分完全相同才能说明两个Linux系统的内核相同。
Linux设备驱动
驱动是直接和硬件交互的一类程序,负责对硬件进行抽象。驱动针对的对象是存储器和外设,并将其分为3大类:字符设备(Character devices)(必须以串行顺序依次进行访问),块设备(Block devices)(任意顺序进行访问,以块为单位进行操作),网络设备(Network devices)。
小结
任何的Linux驱动都有一个装载函数和一个卸载函数,分别通过module_init和module_exit宏指定。Linux驱动只与Linux内核有关。