《精通移动App测试实战:技术、工具和案例》---Android介绍

1.1) Android系统介绍

Android一词的原意指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。

Android的Logo是由Ascender公司设计的,诞生于2010年,其设计灵感源于男女厕所门上的图形符号。布洛克绘制了一个简单的机器人,它的躯干就像锡罐的形状,头上还有两根天线,Android小机器人便诞生了。

1.2) Android系统架构

在这里插入图片描述
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所示,最下面即为该层。

1.3) Android权限系统

Android操作系统其实是一个多用户的Linux操作系统,每个Android应用都使用不同的用户,运行在自己的安全沙盘里。系统为应用的所有文件设置权限,这样一来只有同一个用户的应用可以访问它们。每个应用都有自己单独的虚拟机,这样应用的代码在运行时是隔离的,即一个应用的代码不能访问或意外修改其他应用的内部数据。

每个应用都运行在单独的Linux进程中,当应用被执行时,Android都会为其启动一个Java虚拟机,因此不同的应用运行在相互隔离的环境中。Android系统采用最小权限原则确保系统的安全性。也就是说,每个应用默认只能访问满足其工作所需的功能,而不能访问其无权使用的功能。那么我们要实现移动平台的自动化测试时,比如应用Robotium,就涉及到它和被测试应用的交互,如果是上面的机制是不是意味着我们没有办法实施自动化测试呢?当然能够解决该类问题,不同的应用可以运行在相同的进程中,要实现这个功能,就必须保证应用使用相同的密钥签名、在AndroidManifest.xml文件中为这些应用分配相同的Linux用户ID。同时,如果应用需要用到照相、Wi-Fi、蓝牙、SD卡的读写操作等都需要进行授权。

1.4) Android相关的一些属性简介

Activity(活动):就像我们在操作一些应用软件,比如Word,它出现的每一个功能界面,比如在编辑文件、改变字体大小后,我们单击工具条的“保存”按钮;或者是一个拼车的手机应用,我们约车的时候,其也会提供一个界面,需要我们指定出发的地点、目的地、出发时间等信息,单击“确认预约”按钮。它们都是软件系统和我们用户的一个交互,这个和我们交互的界面就叫一个“活动”。

Service(后台服务):后台服务通常没有交互的图形界面,是多用于处理长时间任务,而不影响前台用户体验的组件。如我们一边看着“微信”应用的朋友圈内容,一边欣赏着手机的音乐,怡然自得的时候是否知道其有一个后台播放音乐的服务呢?

Content Provider(内容供应组件):内容供应组件用来管理应用的可共享部分的数据。例如,应用将数据存储在文件系统或者SQLite数据库中,通过内容供应组件,其他的应用也可以对这些数据进行查询。例如,我们手机自带联系人信息,其他的应用只要有相应的权限就可以通过查询内容供应组件来查询该联系人的相关信息。

Broadcast Receivers(广播接收组件):在 Android 里面有各种各样的广播,电池的使用状态、电话的接收和短信的接收等都会产生一个广播,应用程序开发者也可以监听这些广播并做出程序逻辑的处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值