天天看点

《精通移动App测试实战:技术、工具和案例》一1.2 Android系统架构

本节书摘来自异步社区《精通移动app测试实战:技术、工具和案例》一书中的第1章,第1.2节,作者 于涌 , 王磊 , 曹向志,更多章节内容可以访问云栖社区“异步社区”公众号查看

从图1-1中我们不难发现android的系统架构采用了分层的架构,分为4个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux内核层。那么它们每层都是用来做什么的呢?

1.应用程序层

应用层是用java语言编写的运行在android平台上的程序,比如一些手机游戏和基于手机端的应用等,如图1-1所示,最上面的applications层。

《精通移动App测试实战:技术、工具和案例》一1.2 Android系统架构

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所示,最下面即为该层。