从上图中可以看出,Android系统架构为四层结构,从上层到下层分别是应用程序层、应用程序框架层、系统运行库层以及Linux内核层,分别介绍如下:
Android平台不仅仅是操作系统,也包含了许多应用程序,诸如SMS短信客户端程序、电话拨号程序、图片浏览器、Web浏览器等应用程序。这些应用程序都是用Java语言编写的,并且这些应用程序都是可以被开发人员开发的其他应用程序所替换,这点不同于其他手机操作系统固化在系统内部的系统软件,更加灵活和个性化。
应用程序框架层是我们从事Android开发的基础,对于开发人员来说,接触最多的就是应用程序框架层很多核心应用程序也是通过这一层来实现其核心功能的,该层简化了组件的重用,开发人员可以直接使用其提 供的组件来进行快速的应用程序开发,也可以通过继承而实现个性化的拓展。
a) Activity Manager(活动管理器)
用来管理程序的生命周期,以及提供最常用的导航回退功能。
b) Window Manager(窗口管理器)
用来管理多有的应用程序窗口。
c) Content Provider(内容提供器)
通过内容管理,可以使一个应用程序访问另外一个应用程序的数据,或者共享数据。
d) View System(视图系统)
用来构建应用程序的基本组件,包括列表、网格、按钮、文本框,甚至是可嵌入的web浏览器。
e) Notification Manager(通告管理器)
主要对手机顶部状态栏的管理,开发人员在开发Android程序时会经常使用,如来短信提示、电量低提示,还有后台运行程序的提示等。
f) Package Manager(包管理器)
用来管理Android系统内的程序。
g)Telephony Manager(电话管理器)
所有的移动设备的功能统一归电话管理器管理。
h)Resource Manager(资源管理器)
提供应用程序使用的各种非代码资源,如本地化字符串、图片、布局文件、颜色文件等。
i)Location Manager(位置管理器)
该管理器是用来提供位置服务的,如GPRS定位等。
j)XMPP Service(XMPP服务)
提供Google Talk服务
从图中可以看出,系统运行库层可以分成两部分,分别是程序库和Android运行时,分别介绍如下:
程序库为一些C/C++库,这些库能被Android系统中不同的应用程序调用,并通过应用程序框架为开发者提供服务。其主要分为如下几个:
Ø Surface Manager:
主要管理多个应用程序同时执行时,各个程序之间的显示与存取,并且为多个应用程序提供了2D和3D图层无缝的融合。
Ø Media Framework:
多媒体库,基于PacketVideo OpenCore;支持多种常用的音频、视频格式录制和回放,编码格式包括MPEG4、MP3、H.264、AAC、ARM。
Ø SQLite:
所有应用程序都可以使用的轻量级关系型数据库引擎。
Ø OpenGL|ES:
根据OpenGL ES 1.0API标准实现的3D绘图函数库 。该函数库支持软件和硬件两种加速方式执行。
Ø FreeType:
提供位图(bitmap)和矢量图(vector)两种字体显示。
Ø WebKit:
是一套最新的网页浏览器引擎。同时支持Android浏览器和一个可嵌入的web视图。
Ø SGL:
提供了2D图形绘制的引擎。
Ø SSL:
在Andorid上通信过程中实现握手
Ø Libc:
是一个从BSD继承来的标准C系统函数库,专门针对移动设备优化。
Android应用程序时采用Java语言编写,程序在Android运行时中执行,提供了程序运行时所需要调用的功能函数,其运行时分为核心库和Dalvik虚拟机两部分。
Ø 核心库
核心库提供了Java语言API中的大多数功能,同时也包含了Android的一些核心API,如android.os、android.net、android.media等等。该核心库包括java语言所需要的基本函数以及Android的核心库。与标准java不一样的是,系统为每一个Android的应用程序提供了单独的Dalvik虚拟机来执行,即每个应用程序拥有自己单独的线程。
Ø Dalvik虚拟机
大多数的虚拟机(包括jVM)都是基于栈的,而Dalvik虚拟机则是基于寄存器的,它可以支持已转换为.dex格式的java应用程序的运行。.dex格式是专门为Dalvik虚拟机设计的,更适合内存和处理器速度有限的系统。
Android是基于Linux2.6内核,其核心系统服务如安全性、内存管理、进程管理、网路协议以及驱动模型都依赖于Linux内核。对程序开发人员,该层为软件与硬件之间增加了一层抽象层,使开发过程中不必时时考虑底层硬件的细节。而对手机开发商而言,对此层进行相应的修改即可将Android平台运行到自己的硬件平台之上。