Android框架概述

来源:互联网 发布:淘宝店找不到了怎么办 编辑:程序博客网 时间:2024/05/04 01:18

Android框架概述

从一张老图开始

这里写图片描述

大体上,Android是分成三层APP,Framework,Kernel。三层所面向的对象是不一样的,APP层面向的是用户,更多的倾向于界面,功能的设计。Framework层主要的面向对象是APP开发者以及Kernel提供的驱动接口,倾向于将Kernel提供的功能整合,为上层的APP设计者提供服务。Kernel一般是面向硬件接口,提供Framework中服务的。

APP层一般指的是应用,UI把界面设计出来之后的部分都会属于APP层。具体的Layout设计,组件设计,功能设计都是由APP层负责。一直到各种Service各种Manager,就渐渐是Framework层了。个人感觉层次的区分并没有一个定量的标准,更多的是按照需要实现的功能进行区分。

Framework细分之后可以分作Framework、Libraries以及HAL三个部分。Framework一般讲的是如图的一些Manager以及Service,这一部分一般是用java语言来编写。
Libraries一般是一些库文件(.so或.a),利用JNI技术使上层得以调用,库一般是用c或c++编写的。和Library层并行的会有Dalvik虚拟机,而5.0版本之后有ART虚拟机,装APP的时候会预存解码,装APP的速度就会下降,但运行的时候更快。
HAL层全称是Hardware Abstract Layer,在图中并无示意,这一层负责对Kernel层进行整合,并对其进行抽象提供给上层的接口。一般有Graphics,Audio,GPS等等。这一层设计的初始目的是为了保护公司的软件版权问题。对于开源的Linux系统开发的软件,也需要进行开源,而这会损害一些公司的利益,利用HAL层可以有效保护公司利益。

Kerner层一般都是系统内核,有一些调度资源,内存管理,启动系统等等的功能以及大量的驱动。大多数的手机操作系统来说,一般就是进行对Kerner的定制修改,修改开机界面或者优化启动的内容等等。还有些时候需要精简驱动的话也会需要定制Kerner层。

下面举出一个照相机例子:

层次 负责功能 APP 相机 Framework getSystemService(CAMERA_SERVICE) JNI cameraOn(JNIEnv *env,jobject clazz,jlong timeout ms) HAL cameradev->tag = HARDWARE_DEVICE_TAG; Drive static int _init camera_init(void)

以上只作示例,具体实现见Android源码。

0 0
原创粉丝点击