2.5 各个子系统的移植方式

Android中各个子系统的移植实现方式各不相同,主要是驱动程序和硬件抽象层两个方面的内容。在不同的Android开源版本中,有些硬件抽象层的实现方式也发生了变化。Android各个子系统的工作量各不相同,移植的内容和工作量也不相同。对于每一个子系统实现的内容需要分别考虑。

↘2.5.1 Android2.3中的实现方式

Android2.3作为一个广为使用的Android版本,其中很多子系统的实现方式比较典型。

Android2.3版本的各个子系统的BSP部分大部分继承自前面版本的Android系统,并且被Android4.x等后续版本继承。

Android2.3中各个子系统的BSP支持方式如表2-1所示。

表2-1 Android2.3中各个子系统的BSP支持方式

↘2.5.2 Android2.2及之前的实现方式

在Android2.2版本及之前,有些子系统曾经使用不同的方式实现。随着版本的升级,有些实现方式已经不再使用。

Android2.2及之前几个子系统的BSP支持方式如表2-2所示。

表2-2 Android2.2及之前几个子系统的BSP支持方式

以上列出的是结构变化较大的子系统。事实上,每个硬件相关的子系统在版本升级时,其结构都会发生变化,常见的变化是增加一些接口。

另外几个变化较大的子系统如下所示:

·用户输入系统的主干虽然都是基于Input设备,但是新旧版本中虚拟按键、校准的处理方法不同,为了支持NDK,Android 2.3将很多实现移到了本地层。

·音频子系统早期的若干个版本并不包括单独的策略部分。

·传感器子系统Android 2.2的版本并没有本地层的库实现,采取由JNI直接调用硬件抽象层的形式,并且硬件抽象层的接口和Android 2.3也并不相同。

↘2.5.3 Android4.x中的实现方式

Android4.x是Android比较新的版本,其中大部分子系统的实现方式和Android2.3相同,也有一部分子系统的结构做了改变,主要的改动在用户交互和多媒体部分,并且新增了标准化的近场通信子系统。

Android4.x中几个升级的子系统的BSP支持方式如表2-3所示。

表2-3 Android4.x中几个升级的子系统的BSP支持方式

近场通信、电源管理、本地时间和密钥等几个小型的硬件模块在Android4.0至Android 4.2版本被增加作为新的硬件抽象层。