Android系统构架是安卓系统的体系结构,android的系统架构和其操作系统一样,采用了分层的架构,共分为四层,从高到低分别是Android应用层,Android应用框架层,Android系统运行层和Linux内核层。
可以看到,蓝色区域是我们熟悉的 Java 程序,黄色的代表为运行 Java 程序而实现的虚拟机,绿色部分为用 c / c++ 编写的程序库,红色部分为内核( Linux 内核 + driver )。
从高到低了解下 Android 的系统架构:
Android 应用层
Android的应用程序主要是用户界面方面的,现在主要通过 Java 跟 kotlin 来编写。
Android 应用框架层
该层主要为 Android 应用层提供 APIs,是一个应用程序的框架,包含了应用程序中需要的各种控件。
Android 系统运行层
本层分成两个部分,一部分是各种程序库,另一个部分是运行时环境。
程序库
- C 库:C 语言的标准库,系统中最为底层的库,通过 Linux 的系统调用来实现;
- 多媒体框架(MediaFramework):Android 多媒体的核心部分,基于 PacketVideo 的 OpenCore,从功能上一共分为两部分,一部分是音频、视频的回放( PlayBack ),一部分是音频、视频的记录( Recorder );
- SGL:底层的2D图形引擎;
- SSL:Secure Socket Layer,未育 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持;
- OpenGL ES 1.0:3D支持;
- 界面管理工具( Surface Management):提供了管理显示子系统等功能;
- SQLite:嵌入式数据库;
- WebKit:web 浏览器引擎;
- FreeType:位图和矢量显示
运行环境
Android 运行时环境主要是虚拟机技术 Dalvik。 Dalvik 虚拟机与一般的 Java 虚拟机( JVM )不同,它执行的不是 Java标准的字节码( bytecode ),而是 Dalvik 可执行格式( .dex )。执行过程中,每一个应用程序即一个进程。二者最大的区别是 JVM 是基于栈的虚拟机( Stack-base ),而 Dalvik 是基于寄存器的虚拟机( Register-base ),后者可根据硬件实现最大优化。
Linux 内核
Android 的核心系统服务依赖于 Linux 2.6 内核 ,如安全性,内存管理,进程管理, 网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件栈之间的抽象层。其外还对其做了部分修改,主要涉及两部分修改:
- Binder (IPC):提供有效的进程间通信,虽然linux内核本身已经提供了这些功能,但Android系统很多服务都需要用到该功能,为了某种原因其实现了自己的一套。
- 电源管理:省电。