本节书摘来自异步社区《精通移动App测试实战:技术、工具和案例》一书中的第1章,第1.2节,作者 于涌 , 王磊 , 曹向志,更多章节内容可以访问云栖社区“异步社区”公众号查看
1.2 Android系统架构
从图1-1中我们不难发现Android的系统架构采用了分层的架构,分为4个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。那么它们每层都是用来做什么的呢?
1.应用程序层
应用层是用Java语言编写的运行在Android平台上的程序,比如一些手机游戏和基于手机端的应用等,如图1-1所示,最上面的Applications层。
2.应用程序框架层
应用程序框架层是编写Google发布的核心应用时所使用的API框架,开发人员可以使用这些框架来开发自己的应用程序,这样可以简化程序开发的架构设计,如图1-1所示,第二层,即Application Framework层,其提供的主要API框架如下。
活动管理器:主要用来管理应用程序声明周期,并提供常用的导航退回功能。
窗口管理器:主要用来管理所有的窗口程序。
内容提供器:它可以让一个应用访问另一个应用的数据,或共享它们自己的数据。
视图管理器:主要用来构建应用程序,比如列表、表格、文本框及按钮等。
通知管理器:主要用来设置在状态栏中显示的提示信息。
包管理器:主要用来对Android系统内的程序进行管理。
电话管理器:主要用来对联系人及通话记录等信息进行管理。
资源管理器:主要用来提供非代码资源的访问,例如本地字符串、图形及布局文件等。
位置管理器:主要用来提供使用者的当前位置等信息,如GPRS定位。
XMPP Service:XMPP服务。
3.系统运行库层
系统运行库层主要提供Android程序运行时需要的一些类库,这些类库一般是使用C/C++语言编写的。另外,该层还包含了Android运行库。如图1-1所示,第三层,系统运行库层中包含的主要库如下。
libc:C语言标准库,系统最底层的库,C语言标准库通过Linux系统来调用。
Surface Manager:主要管理多个应用程序同时执行时各个程序之间的显示与存取,并且为多个应用程序提供2D和3D图层的无缝融合。
SQLite:关系数据库。
OpenGL|ES:3D效果的支持。
Media Framework:Android系统多媒体库,该库支持多种常见格式的音频、视频的回放和录制。
WebKit:Web浏览器引擎。
SGL:2D图形引擎库。
SSL:位于TCP/IP协议与各种应用层协议之间,为数据通信提供支持。
FreeType:位图及矢量库。
系统运行库层中还包含了一个Dalvik虚拟机,相对于桌面系统和服务器系统运行的虚拟机而言,它不需要很快的CPU计算速度和大量的内存空间。因此,它非常适合在移动终端上使用。
4.系统内核层
Android的核心系统服务基于Linux 2.6内核,该内核拥有安全性、内存管理、进程管理、网络协议栈和驱动模型等。同时它也作为硬件和软件栈之间的抽象层,而Android更多的是需要一些与移动设备相关的驱动程序,比如显示驱动、USB接口驱动、蓝牙驱动、电源驱动、Wi-Fi驱动等,如图1-1所示,最下面即为该层。