目录
根据基础的Android架构图,从下往上依次为:Linux内核、HAL层、Native Libraries、Runtime、Framework层、APP层。
每一层都包含大量的子模块或子系统,并提供固定的服务访问点SAP(service access point),具有高内聚、低耦合的特点。
一、Linux Kernel
Android操作系统以Linux内核为基石,组成底层内核空间。
1、什么是Linux内核
- 技术层面:内核是硬件和软件之间的一个中间层,将应用层的请求传递硬件,充当底层驱动程序,对系统中的各种设备和组件进行寻址
- 应用程序层面:应用程序只与内核有关,而内核就是应用程序知道的层次中的最底层
内核是资源管理程序,负责将可用的共享资源(CPU、磁盘空间等)分配给各系统进程。同时内核像一个库,提供了一组面向系统的命令。
例如:整个软件是通过系统调用(Syscall)连通系统的内核空间和用户空间。而用户空间就是接下来要说的,由HAL层、Native Libraries、Runtime、Framework层、application层组成。
内核的作用简单说,就是提供了进程管理、文件网络管理、系统安全权限管理、以及系统与硬件设备通讯基础。
2、作用
Linux内核层为Android设备的各种硬件提供底层驱动:显示驱动、音频驱动、电源管理、Flash内存驱动、进程管理、系统安全、camera驱动、蓝牙驱动、Binder IPC驱动(进程间通讯驱动)等。
二、HAL层
HAL(Hardware Abstraction Lay,硬件抽象层),是对底层驱动(即Linux内核层)进行了一层封装,向Framework层提供调用驱动的通用接口,HAL层开发者只需要按照HAL规范,实现相应接口,并以共享库的形式放在特定目录下,那上层开发者只需要加在这个共享库并找到对应模块的对应指针,即可操作底层硬件。这一层出现的目的是维护开发者利益(实现开放不开源)。
简单来说,就是将控制硬件的动作放在了HAL层。
例如:CameraHardwareInterface(camera_device_name)是Android的通用接口,通过它适配向CameraService提供硬件操作接口。
三、系统运行库层
系统运行库层是由程序库和运行时库组成。
1、Native Libraries
Android Native Libraries(程序库),是相对于Java层(即Framework层)的底层,用C/C++语言实现,提供一些本地服务和链接库。通过这一层去实现一些复杂运算,并通过JNI和Java层通讯;或是通过Native层去运行底层驱动进而操作设备。
其支持整个系统正常运行的基础库,具备9个子系统:
序号 | 子系统 | 描述 |
1 | 系统C库 | 从BSD(伯克利软件套件,Unix衍生系统)继承来的标准C系统函数库,专门为基于嵌入式Linux设备制定 |