Android系统概述

220 阅读2分钟

Android系统可以分为五层:应用层、应用框架层、系统运行层、硬件抽像层,Linux内核层。

应用层(SystemApps)

 Android系统内置的系统应用以及非系统应用都属于应用层,这一层的应用直接与用户交互,为用户提供UI页面,向用户展示应用的信息,同时用户也可以在UI页面上输入信息。

常见的系统应用:相机、联系人、电话、系统设置等;

非系统应用:微信、抖音、QQ音乐、高德地图等;

应用层的开发语言主要是Java或kotlin。

应用框架层 (Framework)

Framework层主要是为应用层提供系统接口,例如:相机应用需要打开摄像头需要调用Framework层提供的系统接口,Android系统具备的能力都通过这一层提供给上层应用。

Framework层的开发语言主要是Java。

系统运行层 (Native Library + Android Runtime)

通过上图可以看出系统运行层分为Native C/C++Library 和 Android Runtime

Native C/C++Library

主要为应用框架层提供接口,Framework层可以通过Android NDK去访问Native C/C++库;

开发语言主要是 C和C++语言

ART(Android Runtime )

Android应用的运行环境,可以理解为类似于Java虚拟机

硬件抽像层 (Hardware Abstraction Layer)

硬件抽象层(HAL)位于Framework和Linux内核之间抽象出来的,对下层Linux驱动程序进行封装,用于屏蔽底层硬件的差异,对上层Framework层提供标准统一的接口,Framework层不需要关心硬件的差异性。

例如:小米A手机使用X厂商的摄像头,B手机使用了Y厂商的摄像头,对于A和B手机的相机应用(CameraApp)来说不需要区分具体使用了哪家厂商的摄像头,CameraApp只需要调用Framework层提供的接口即可,具体的差异在HAL层来实现,A手机软件的HAL层去调用X厂商提供的驱动程序,B手机软件的HAL层去调用Y厂商提供的驱动程序即可。

Linux内核层(Linux Kernel)

Linux Kernel层主要是为Android硬件设备提供驱动程序,例如:摄像头驱动、Wifi驱动、蓝牙驱动、屏幕驱动等。