1.3 Android系统框架
Android系统是以Linux系统为基础的,Google将其按照功能特性划分为4层,自下而上分别是Linux内核、中间件、应用程序框架和应用程序,如图1-3所示。
图1-3 Android系统框架图
1.应用程序
Android系统内置了一些常用的应用程序,包括Home视图、联系人、电话、浏览器等。这些应用程序和用户自己编写的应用程序是完全并列的,都是采用Java语言编写的。而且,用户可以根据需要增加自己的应用程序,或者替换系统自带的应用程序。
2.应用程序框架
应用程序框架提供了程序开发人员的接口,这是与Android程序员直接相关的部分。开发者可以用它开发应用,其中包括:
● 丰富而又可扩展的视图(Views):可以用来构建应用程序,它包括列表(Lists),网格(Grids),文本框(Text Boxes),按钮(Buttons),甚至可嵌入的Web浏览器。
● 内容提供器(Content Providers):使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。
● 资源管理器(Resource Manager):提供非代码资源的访问,如本地字符串、图形、布局文件(Layoutfiles)。
● 通知管理器(Notification Manager):使得应用程序可以在状态栏中显示自定义的提示信息。
● 活动管理器(Activity Manager):用来管理应用程序生命周期并提供常用的导航回退功能。
3.中间件
中间件包括两部分:核心库(Libraries)和Android运行时环境(Android Runtime)。
1)核心库
核心库中主要包括一些C/C++核心库,方便开发者进行应用的开发。
① 界面管理器:对显示子系统的管理,并且为多个应用程序提供了2D和3D图层的无缝融合。
② 媒体框架:支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG。
③ SQLite:轻型关系型数据库引擎。
④ OpenGLES:是OpenGL三维图形API的子集,针对手机,PDA和游戏主机等嵌入式设备而设计。
⑤ FreeType:位图(Bitmap)和矢量(Vector)字体显示。
⑥ WebKit(LibWebCore):Web浏览引擎,支持Android浏览器和一个可嵌入的Web视图。
⑦ SGL:底层的2D图形引擎。
⑧ SSL:网络通信提供安全及数据完整性的一种安全协议。
⑨ libc(系统C库):专门为基于Embedded Linux的设备定制的。
2)Android运行时环境
Android运行时环境主要包括:
● Android核心库:提供了Java库的大多数功能。
● Dalvik虚拟机:依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。同时虚拟机是基于寄存器的,Dalvik采用简练、高效的byte code格式运行,它能够在低资耗和没有应用相互干扰的情况下并行执行多个应用,每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik虚拟机中可执行文件为.dex文件,该格式文件针对小内存使用做了优化。所有的类都经由Java编译器编译,然后通过SDK中的“dx”工具转化成.dex格式并由虚拟机执行。
4.Linux内核
Android平台运行在Linux 2.6之上,其Linux内核部分相当于手机硬件层和软件层之间的一个抽象层。Android的内核提供了显示驱动、摄像头驱动、闪存驱动、Binder驱动、键盘驱动、Wi-Fi驱动、音频驱动和电源管理等多项功能。此外,Android为了让Android程序可以用于商业目的,将Linux系统中受GNU协议约束的部分进行了取代。