Android系统是一个移动设备的开发平台,其软件层次结构包括操作系统(OS),中间件(middleware)和应用程序(application)。根据Android的软件框图,其软件层次结构自下而上分为以下4层。
(1) 操作系统层OS
(2)各种库(Libraries)和Android 运行环境(RunTime)。
(3)应用程序框架层(Application Framework)。
(4)应用程序(application)。
上述各个层的具体结构如图 1-1所示
在本节的内容中,将详细介绍Android操作系统的组件结构方面的知识。
xxx.APK
用户 root
硬件
一。顶层应用程序
主屏幕联系人电话浏览器。。。。。。应用程序
二。应用程序框架层
活动管理器窗口管理器内容提供者视图系统通知管理器
包管理器电话管理器资源管理器本地管理器XMPP服务应用程序框架
三。各种库(libraries)和Android运行环境
接口管理器界面管理器OpenGL ES持久层库Android运行环境
包管理器位图及矢量浏览器引擎各种库ART+Dalvik虚拟机器
2D图形引擎 中间协议libc函数库
四。底层操作系统(OS)
显示驱动相机驱动蓝牙驱动Flash内存驱动Binder IPC驱动Linux内核层
usb驱动键盘驱动WIFI驱动音频驱动能源驱动
一 。。底层操作系统层(os)
因为Android源于Linux,使用了Linux内核,所以,Android使用Linux2.6作为操作系统的基础。Android对操作系统的使用包括核心和驱动程序两部分。
Android内核对应于Linux内核,Android更多的是需要一些与移动设备相关的驱动程序。
主要驱动如下所示:
显示驱动:(display Driver):是常用的基于Linux的帧缓冲(Frame Buffer)驱动。
Flash内存驱动(flash memory Driver):是基于MTD的Flash驱动程序
照相机驱动(Camera Driver):用于基于Linux的V4L(video for linux)驱动
音频驱动(Audio Driver):常用基于ALSA(Advanced Linux sound Architecture,高级Linux声音体系)驱动
WIFI驱动(Camera Driver):基于IEEE802.11标准的驱动程序。
键盘驱动(KeyBoard Driver):作为输入设备的键盘驱动。
蓝牙驱动(Bluetooth Driver):基于IEEE802.15.1标准的无线传输技术。
Binder IPC 驱动:Android 一个特殊的驱动程序,具有单独的设备节点,提供进程间通信的功能。
Power Manager(能源管理):用于管理电池电量等信息。
二。各种库(libraries)和Android运行环境(Runtime)
本层次对应一般嵌入式系统,相当于中间件层次。Android的本层次分成两个部分,一个是各种库,另一个是Android运行环境。本层的内容大多是使用C实现的,其中包含了如下所示的各种库。
C库:C语言的标准库,也是系统中一个最为底层的库,C 库是通过Linux的系统调用来实现的。
多媒体框架(MediaFrameWord):这部分内容是Android多媒体的核心部分,基于PacketVideo(即PV)的openCORE,从功能上看本库一共分为两大部分。一部分是音频,视频的回放(playBack),另一部分是音,视频的记录(Recorder)。
OpenGL ES:提供了对3D的支持
界面管理工具(sufece manager):提供了管理显示子系统等功能。
sqlite: 一个通用的嵌入式数据库。
webkit:网络浏览器的核心。
FreeType:位图与矢量字体的功能。
在一般情况下,Android的各种库是以系统中间件的形式提供的,它们的显著特点是与移动设备平台的应用密切相关。另外,Android 的运行环境主要是指Dalvik
(虚拟机)技术。Dalvik和一般的Java虚拟机(Java vm)是有区别的 。
Java虚拟机:执行的是Java标准字节码(Bytecode).
ART+Dalvik:执行的是Dalvik可执行格式(.dex)中方的执行文件。在执行的过程中,每一个应用程序即一个进程(Linux的一个process)。二者最大的区别在于Java VM是以基于栈的虚拟机(stack-based),而Dalvik是基于寄存器的虚拟机(Register-based)。显然,后者最大的好处在于可以根据硬件实现更大的优化,
这更适合移动设备的特点。从Android 5.0版本开始,Android的默认运行环境为ART。ART的机制与Dalvik不同。在Dalvik下,应用每次运行的时候,字节码都需要通过即时编译器转换为机器码,这会拖慢应用的运行效率,而在ART环境中,应用在第一次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应用。这个过程叫做预编译(AOT, Ahead-Of-Time)。这样改进后,应用的启动(首次)和执行都会变得更加的快速。
三。。 Application Framework(应用程序框架)
在整个Android系统中,和应用开发最相关的是Application Framework,在这一层,Android为应用程序层的开发者提供了各种功能强大的APIs,这实际上是一个应用程序的框架。由于上层的应用程序是以Java构建的。在本层提供了程序中所需要的各种控件,例如,视图组件(Views),列表(List),栅格(Grid),文本框(Text Box),按钮(Button),甚至还有一个嵌入式的Web浏览器。一个基于的Android应用程序可以利用应用程序框架中的以下5个部分。
Activity:活动
Broadcast Intent Receiver:广播意图接受者。
Service:服务
Content Provider:内容提供者。
Intent and Intent Filter:意图和意图过滤器。
四。。 顶层应用程序(Application)
Android的应用程序主要是用户界面(User Interface)方面的,本层通常使用Java语言编写,其中还包括各种被放置在“res”目录中的资源文件构成。Java程序和相关资源在经过编译后,会生成一个APK包。Android本身提供了主屏幕(Home),联系人(Contact),电话(Phone),浏览器(Browers)等众多的核心应用。
同时应用程序的开发者还可以使用应用程序框架层的API实现自己的程序。这也是Android开源的巨大潜力的体现。