|
|
Android采用了软件堆层的架构,一共分为四层,自下向上分别是Linux内核层、系统运行库层、应用框架层和应用层,如下图所示。
|
|
|
|
|
|
Android基于Linux 2.6内核提供系统的核心服务,如安全性、内存管理、进程管理、网络协议栈和驱动模型。内核层的驱动包括显示驱动、键盘驱动、Flash内存驱动、照相机驱动、音频驱动、蓝牙驱动、Wi-Fi驱动、Binder IPC驱动、Power Manager驱动。其中,Binder IPC驱动用来提供进程之间通信的功能。
|
|
|
系统运行库层主要包括两个部分,一是程序库(Libraries),二是Android运行库(RunTime)。程序库通过Android应用程序框架为开发者提供服务,主要包括以下几种。
|
|
|
. 系统C库。从BSD继承而来的标准C系统函数库,是专门为基于嵌入式的Linux设备制定的。
|
|
|
. 媒体库。该库支持多种常用的音频、视频格式的回放和录制,同时支持静态图像文件。编码格式包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG。
|
|
|
. Surface Manager。用于管理、显示子系统,并为多个应用程序提供2D和3D图形层的无缝融合。
|
|
|
. LibWebCore。Web浏览器引擎,支持Android浏览器和可嵌入的Web视图。
|
|
|
|
. 3D libraries。基于OpenGL ES 1.0 APIs实现,该库可以使用硬件3D加速或者高度优化的3D软加速。
|
|
|
|
|
所有Android应用程序都运行在它自己的进程中,该进程是一个Dalvik虚拟机的实例。Dalvik虚拟机是由Google公司自主研发的,它被设计成一个设备,可以同时高效地运行多个虚拟系统。Dalvik在保证API兼容的同时,针对移动手机进行了优化,以占用更小的资源,提高了运行效率。Dalvik虚拟机依赖于底层Linux内核提供的功能,如线程机制和内存管理机制。
|
|
|