android的系统构架基于Linux内核
安卓系统的组成包括应用程序层、应用程序框架层、函数库与运行时、Linux内核。
-应用程序层
应用程序层包括一系列系统核心程序,如Phone(电话)、Browser(浏览器)应用、联系人、短信。
-应用程序框架层
提供大量API,开发人员可以使用这些API框架来开发自己的应用程序,这样可以简化程序开发的架构设计。
Activity Manager活动管理器,用来管理程序生命周期,并提供常用的导航退回功能
Window Manager窗口管理器,管理所有的窗口程序
Content Providers内容提供器,它可以让一个应用访问另一个应用的数据,或共享它们自己的数据
View System视图管理器,用来构建应用程序,比如列表,表格,文本框,及按钮等
Notification Manager通知管理器,用来设置在状态栏中显示的提示信息
Package Manager包管理器,用来对Android系统内的程序进行管理
Telephoney Manager电话管理器,用来对联系人及通信记录等信息进行管理
Resource Manager资源管理器,用来提供非代码资源的访问,例如本地字符串,图形及布局文件等
Location Manager位置管理器,用来提供使用者的当前位置等信息
XMPP Service,Service服务
-函数库与运行时
函数库主要提供Android程序运行时需要的一些类库。这些类库一般是使用C/C++语言编写的。
libc: C语言标准库,系统最底层的库,C语言标准库通过Linux系统调用
Surface Manager: 对显示子系统的管理,并且为多个应用程序提 供了2D和3D图层的无缝融合。
SQLite: 关系数据库
OpenGL|ES: 3D效果的支持
Media Framework: 基于 PacketVideo OpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG
WebKit: Web浏览器引擎
SGL: 2D图形引擎库
SSL: 位于TCP/IP协议与各种应用层协议之间,为数据通信提供支持
Free Type: 位图及矢量图
Android Runtime 安卓运行时,5.0之前包括运行库和Dalvik虚拟机两部分(图片没有更新),5.0之后增加了ART,。核心库中提供了JAVA语言核心库中包含的大部分功能,虚拟机负责运行程序,Dalvik虚拟机(Just-In-Time模式,动态编译执行--程序运行时编译)专门针对移动设备进行编写,不仅效率更高,并且占用更少的内存。ART(Ahead-Of-Time模式,预编译执行,安装时预编译),将原本在程序运行时的编译提前到安装时编译,加快了程序运行速率,但使用这种方式的程序比较占用空间,因为带有一部分编译文件。
- Linux内核
Android的核心系统服务(比如安全性,内存管理,进程管理,网络协议栈和驱动模型等)基于Linux2.6内核
Linux内核同时也作为硬件和软件栈之间的抽象层,作为移动设备系统,Android更多的是需要一些与移动设备相关的驱动程序。
Display Driver:显示驱动,基于Linux的帧缓冲驱动
Camera Driver:照相机驱动,基于Linux的V412驱动
Bluetooth Driver:蓝牙驱动,基于IEEE 802.15.1标准的无线传输技术
Flash Memory Driver:Flash闪存驱动,基于MTD的Flash驱动程序
Binder(IPC) Driver:具有单独的设备节点,提供进程间通信的功能
USB Driver:USB接口驱动
Keypad Driver:键盘驱动,作为输入设备的键盘驱动
WiFi Driver:基于IEEE 802.11标准的驱动程序
Audio Drivers:音频驱动,基于ALSA的高级Linux声音体系驱动
Power Management:电源管理,比如电池电量等