Android应用程序开发与典型案例(微课版)
上QQ阅读APP看书,第一时间看更新

1.3 Android系统框架

Android操作系统结构可分为4层,由上到下依次是应用程序、应用程序框架、程序库及Android运行时、Linux内核,如图1-2所示。

Android四层架构简介

图1-2 Android系统框架

1.3.1 Linux内核(Linux Kernel)

Android的核心系统服务依赖于Linux 2.6,如安全性、内存管理、进程管理、网络堆栈、驱动模型。Linux内核也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。

除了标准的Linux内核以外,Android系统还增加了内核的驱动程序,如显示驱动、蓝牙驱动、相机驱动、闪存卡驱动、Binder IPC驱动、输入设备驱动、USB驱动、Wi-Fi驱动、音频系统驱动、电源管理等,为Android系统的运行提供基础性支持。

这样分层的好处就是使用下层提供的服务为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生变化时,不会影响上层。也就是说,各层各尽其职,各层提供固定的SAP(Service Access Point),即高内聚、低耦合。

1.3.2 程序库(Libraries)

Android包含一个C/C++库的集合,以供Android系统的各个组件使用。这些功能通过Android的应用程序框架展现给开发者。下面列出一些程序库。

■libc(系统C库):由BSD继承衍生的标准C系统函数库(libc),调整为基于嵌入式Linux设备的库。

■Media Framwork(媒体库):基于PacketVideo的OpenCORE。这些库支持播放和录制多种流行的音频及视频格式,以及多种媒体格式的编码/解码格式,包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG。

■Surface Manager(界面管理):显示子系统的管理器,管理、访问、显示子系统,无缝组合多个应用程序的二维和三维图形层。

■SGL:Skia图形库,基本的2D图形引擎。

■OpenGLIES:基于OpenGL ES APIs实现的3D库。该库使用硬件3D加速或使用高度优化的3D软加速。

■FreeType:位图(Bitmap)和矢量(Vector)字体渲染。

■SQLite:所有应用程序都可以使用的强大而轻量级的关系数据库引擎。

1.3.3 Android运行时(Android Runtime)

Android运行时包括以下两部分。

■Android核心库(Core Libraries):提供了Java库的大多数功能。

■Dalvik虚拟机(Dalvik Virtual Machine):依赖于Linux内核的一些功能,比如线程机制和底层内存管理机制。同时虚拟机是基于寄存器的,Dalvik采用简练、高效的byte code格式运行,它能够在低资耗和没有应用相互干扰的情况下并行执行多个应用,每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik虚拟机中的可执行文件为.dex文件,该格式文件针对小内存的使用做了优化。所有的类都经由Java编译器编译,然后通过SDK中的“dx”工具转换成.dex格式文件由虚拟机执行。

1.3.4 应用程序框架(Application Framework)

位于Android程序库和运行时上面的是应用程序框架层。通过提供开放的开发平台,Android使开发者能够访问核心应用程序所使用的API框架,这样使得组件的重用得以简化,任何应用程序都能发布它的功能且任何其他应用程序都可以使用这些功能(需要服从框架执行的安全限制),从而使开发者可以编制极其丰富和新颖的应用程序,自由地利用设备硬件优势访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等。

■丰富而又可扩展的视图系统(Views System):可以用来构建应用程序,包括列表(lists)、网格(grids)、文本框(text boxes)、按钮(buttons),甚至包括可嵌入的Web浏览器。

■内容提供器(Content Providers):使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。

■资源管理器(Resource Manager):提供非代码资源的访问,如本地字符串、图形、布局文件(layoutfiles)。

■通知管理器(Notification Manager):使得应用程序可以在状态栏中显示自定义的提示信息。

■活动管理器(Activity Manager):用来管理应用程序生命周期并提供常用的导航回退功能。

1.3.5 应用程序(Applications)

Android应用程序层就是客户可见的Android应用,Android装配一个核心应用程序集合,连同系统一起发布,这些应用程序包括电子邮件客户端、SMS程序、日历、地图、浏览器、联系人和其他设置等。而所有应用程序都是用Java语言编写的,由用户开发的Android应用程序和Android核心应用程序是同一层次的。