Android框架概述

本文概述了Android系统的三层架构——APP, Framework, Kernel,并详细解释了每个层级的主要职责。APP层专注于用户界面和功能设计;Framework层整合Kernel功能,为APP开发者提供服务;Kernel层则处理硬件接口。此外,还介绍了Framework的细分部分——Framework、Libraries和HAL,以及它们各自的作用。" 104837101,5110035,Flink实时处理与HDFS分桶写入实践,"['大数据开发', '流处理', 'Flink', 'HDFS', '数据写入']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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相机
FrameworkgetSystemService(CAMERA_SERVICE)
JNIcameraOn(JNIEnv *env,jobject clazz,jlong timeout ms)
HALcameradev->tag = HARDWARE_DEVICE_TAG;
Drivestatic int _init camera_init(void)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值