安卓系统架构
借用 Google 官方一张图,记录一下安卓系统分层架构。
android-stack_2x.png
安卓系统是一个复杂庞大的操作系统,采用分层设计。从上到下依次是应用层、Java框架层、原生C/C++库、运行时库、硬件抽象层、内核层。
应用层
应用层包括原生系统应用(如桌面、电话、邮件等)和用户下载安装的应用。这些应用通常是通过Java 框架层提供的API开发的。
Java 框架层
即通常所说的 Framework。这一层提供了丰富的 API 供应用层调用,包括UI控件、四大组件、通知等。还包括系统运行时所需的服务也在这一层,包括 AMS、PMS、WMS等。
C/C++ 库
很多原生的安卓能力都是通过C / C++ 代码写的,与HAL层交互,这些能力通过 Java 框架层封装提供给上层应用使用。如果开发 C/C++ 安卓应用可直接通过 NDK 调用原生 C/C++ 库。
运行时库
运行时库与原生 C/C++ 库在同一层,运行时库包括两个部分。1.ART 2. Java 核心API。其中 ART 主要功能包括预先编译、优化垃圾回收、优化开发和调试功能。
硬件抽象层
提供系统硬件能力接口,如相机、音频、传感器等,通过 Binder 机制与框架层进行进程间通信(IPC)。
内核层
Linxu 内核,向上提供最底层操作系统能力,如文件挂载、内存管理、进程复制等。