Android系统架构分为五层,从上到下依次是应用层、应用框架层、系统运行库层、硬件抽象层和Linux内核层。
一、应用层(Application层)
系统内置的应用程序以及非系统级的应用程序都属于应用层,大部分是由Java编写。
二、应用框架层(Framework层)
应用框架层为开发人员提供了可以开发应用程序所需要的API,我们平常开发应用程序都是调用的这一层所提供的API。这一层的是由Java代码编写的,每个APP开发人员都必须要掌握其内容。下面来看这一层所提供的主要的组件。
- Activity Manager(活动管理器):管理各个应用程序生命周期以及通常的导航回退功能
- Location Manager(位置管理器):提供地理位置以及定位功能服务
- Package Manager(包管理器):管理所有安装在Android系统中的应用程序
- Notification Manager(通知管理器):使得应用程序可以在状态栏中显示自定义的提示信息
- Resource Manager(资源管理器):提供应用程序使用的各种非代码资源,如本地化字符串、图片、布局文件、颜色文件等
- Telephony Manager(电话管理器):管理所有的移动设备功能
- Package Manager(包管理器):管理所有安装在Android系统中的应用程序
- Window Manager(窗口管理器):管理所有开启的窗口程序
- Content Providers(内容提供器):使得不同应用程序之间可以共享数据
- View System(视图系统):构建应用程序的基本组件
三、系统运行库层(Native层)
系统运行库层分为两部分,分别是C/C++程序库和Android运行时库。
1、C/C++程序库
这些库被Android系统中不同的组件使用,并且通过 Android 应用程序框架为开发者提供服务。以下是一些核心库:
- Libc:从BSD继承来的标准C系统函数库,专门为基于嵌入式Linux的设备定制
- Media Framework:多媒体库,该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4,H.264,MP3,AAC,AMR,JPG,PNG。
- Surface Manager:对显示子系统的管理,并且为多个应用程序提供了2D和3D图层的无缝融合
- LibWebCore:一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图
- SGL:底层的2D图形引擎
- 3D libraries:基于OpenGLES1.0APIs实现;该库可以使用硬件3D加速(如果可用)或者使用高度优化的3D软加速
- FreeType:可移植的字体引擎,它提供统一的接口来访问多种字体格式文件
- SQLite:轻型的关系型数据库引擎
2、Android Runtime
运行时库又分为核心库和ART(5.0系统之后,Dalvik虚拟机被ART取代)。核心库提供了Java语言核心库的大多数功能,这样开发者可以使用Java语言来编写Android应用。相较于JVM,Dalvik虚拟机是专门为移动设备定制的,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik 应用作为一个独立的Linux 进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。而替代Dalvik虚拟机的ART 的机制与Dalvik 不同。在Dalvik下,应用每次运行的时候,字节码都需要通过即时编译器转换为机器码,这会拖慢应用的运行效率,而在ART 环境中,应用在第一次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应用。
四、Linux内核层
Android 的核心系统服务基于Linux 内核,在此基础上添加了部分Android专用的驱动。系统的安全性、内存管理、进程管理、网络协议栈和驱动模型等都依赖于该内核。
最新评论