|
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内核提供的功能,如线程机制和内存管理机制。
|
|
|
Android应用程序的开发基于应用程序框架(Application Framework)和组件,开发人员拥有同核心应用程序一样的APIs访问权限。应用程序后面是一系列的服务和系统,其中包括以下几种。
|
|
|
. 视图(Views)。构造应用程序的视图部分,包括列表(Lists)、文本框(Textboxes)、按钮(Buttons)等。
|
|
|
. 内容提供器(Content Providers)。提供一种实现数据互访和共享的机制。
|
|
|
. 资源管理器(Resources Marager)。负责管理非代码的访问,如本地字符串、图片资源及涉及布局的XML文件。
|
|
|
. 通知管理器(Notification Manager)。用于将提示信息显示在状态栏上。例如,当收到短信的时候在状态栏上显示新信息。
|
|
|
. 活动管理器(Activity Manager)。用于管理应用程序的生命周期,并提供应用页面的退出机制。
|
|
|
|
Android的应用程序通常涉及用户界面和用户交互。Android本身提供了桌面(Home)、联系人(Contact)、电话(Phone)和浏览器(Browsers)等众多的核心应用。所有核心应用都使用Java编写,开发者可以使用应用程序框架层的API实现自己的程序,这也是Android开源优势的体现。
|
|
|
从总体架构上看,Android平台显示出了自身的特点,如集成了WebKit浏览器、Dalvik虚拟机等模块。这些模块的应用也成为Android开发的焦点,开发者可以利用Android提供的模块接口开发出具有特色的应用程序。
|
|
|