2.6 与硬件抽象层相关的框架层目录

实际上,各个硬件抽象层的内容在不同的Android版本中变化并不大,但是Android框架层的代码则有一些位置上的变化。从发展的过程上来看,从Android2.3到Android4.1版本之间的变化都不大,而Android4.2则有一些比较大的变化。

↘2.6.1一直保持不变的代码

Android框架层的主要内容在frameworks/base中,其中一些重点目录自Android2.3到Android4.2版本基本不变,甚至从Android1.x版本开始都没有发生大的变化。

·include/:框架层本地库的头文件(Android 4.x将部分内容移出)。

·libs/:框架层本地库的源代码(Android 4.x将部分内容移出)。

·cmd/:框架层的本地可执行程序和Java命令行程序源代码。

·core/java/:框架库(framework.jar)的Java代码。

·core/jni/:框架库的JNI的代码。

·services/java/:服务库(service.jar)的Java代码。

·services/jni/:服务库的JNI的代码。

·media/java/:多媒体部分的Java代码。

·media/jni/:多媒体部分的JNI代码。

↘2.6.2 框架层的本地代码

在Android 4.2中,frameworks/native是一个与frameworks/base并列的目录,navtive的含义为本地层的内容,原本在base目录中的一些本地的内容被拆分到native目录中。

几个主要的目录如下所示(内部的结构没有变化)。

·include/:utils、binder、ui和gui等几个本地库的头文件。

·libs/:utils、binder、ui和gui等几个本地库的实现。

·services/:sensorservice和surfaceflinger等几个服务库的代码。

·cmds/:sensorservice和surfaceflinger等几个可执行程序。

↘2.6.3 音频视频相关的代码

在Android4.2中,frameworks/av是一个与frameworks/base并列的目录,av的含义就是音频audio和视频vidoe,原本在base目录中的一些与音频视频相关的内容被拆分到av目录中,并且原本的下一级目录结构保持不变。

几个主要的目录如下所示。

·include/camera/:camera库的头文件。

·include/media/:media库(包括media和audio部分)的头文件。

·camera/:camera库的源代码。

·media/libmedia:media库源代码。

·media/libmediaplayerservice/:libmediaplayerservice库的源代码。

·media/libstagefright/:libstagefright库的源代码。

·media/mediaserver/:mediaserver可执行程序的源代码。

·services/audioflinger/:audioflinger服务库的源代码。

·services/camera/:cameraservice库的源代码。

·cmds/stagefright/: stagefright可执行程序。

以上目录一般只是上层的位置发生了变化,目录内部的结构则没有变化。