Android系统基础介绍

Android系统基础介绍

Android系统发展史

Android系统从1.5版本迭代到现在10.0

需要注意的几个版本:

在这里插入图片描述

5.0

界面设计技术发生变革,采用全新的MaterialDesign界面,做测试时考虑5.0之前的版本和5.0(含)之后的版本

Dalvik虚拟机速度比ART慢,但占用空间小

ART虚拟机速度更快,但占用更多资源(空间)(但由于现在磁盘等越来越便宜,所以使用ART)

6.0

采用全新权限机制,做测试时考虑6.0以前的版本和6.0(含)之后的版本

在6.0之前权限机制就是安装时权限:user-permission

6.0(含)之后加入了运行时权限:user:feature,所以说6.0之后两种权限共存

10.0
1、支持可折叠设备,做测试的手机或平板是可折叠设备,则必须安装V10.0或以上版本
2、支持5G,做测试时需要5G,则必须安装V10.0或以上版本(如:车联网、线上教育、远程会诊等)

Android系统基本架构

在这里插入图片描述

内核层

内核其实就是一个软件

Android系统是Linux内核,支持常用Linux命令,如:ls,cd,top,cat…

运行库层

  • 运行库是程序在运行时所需要的库文件。通常运行库是以DLL形式提供的

  • 运行库是一个经过封装的程序模块,对外提供接口,只要知道接口参数就可以自由使用

  • 它是运行所有Android的APP所需要的环境(所有APP全部依托它启动、运行和关闭),每一个APP也可被理解为Java程序

Android APP分为:
  • 原生APP:如设置、相机、相册、电话簿…

  • Web APP:使用了网页开发技术,如HTML,CSS,JS…

  • 混合APP:在原生APP的基础上结合了Web技术

    如:飞猪是一个旅游网站,有海量酒店,飞猪同时具有Web版和移动版,酒店数据是共用的,没必要做两份

知识扩展
  • Android系统的APP使用Java或Kotlin语言(科特林,轻量级Java)开发

  • IOS系统的APP使用OC或Swift语言开发

安卓虚拟机
  • Dalvik(安卓5.0版本以下)

  • ART(安卓5.0版本及以上):Android Run Time 安卓运行时

  • ART虚拟机运行速度更快,但是比Dalvik虚拟机占用更大的空间,典型的以“空间换时间”

WebKit渲染引擎

可以让安卓系统的浏览器APP完美访问网页内容

在APP打开一个网页链接并不需要使用浏览器,原理就是也同样使用了WebKit进行渲染

SQLite数据库

SQLite是谷歌常用数据库,谷歌浏览器里也嵌入该数据库

  • APP有一个独有的特性,支持所谓的离线访问,其实利用的就是“缓存”技术,存储一些数据保存至手机本地的数据库里
缓存(cache)

原始意义是指访问速度比一般随机存取存储器(RAM)快的一种高速存储器,通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快的SRAM技术。缓存的设置是所有现代计算机系统发挥高性能的重要因素之一。缓存分L1缓存和L2缓存。

例子:

  • 爱奇艺看电影,你永远会发现进度条比你现在正在看的位置多那么一点点

  • 电梯里和男朋友或女朋友微信聊天到一半,完全没有网络了,消息发不出去,但你发现你依然可以上翻看到历史聊天记录

应用框架层

为应用开发者提供各种API,提高了开发效率

现如今,基本上开发写代码都是在现有框架上拼拼凑凑,绝对不会从0开始,

主要因为2个原因:
1、统一了标准并提升开发的工作效率
2、实力不允许开发高调

应用层

APP层,如:

系统自带的APP

自己下载的APP

Android应用四大组件

Android应用四大组件包括:

activity活动组件,service后台服务组件,broadcast receiver广播接收组件,content provider 内容提供组件。

activity活动组件

  • 是用户操作的可视化界面;

  • 一个activity通常就是一个单独的屏幕(窗口),或者界面上的按钮以及一些隐藏功能(如:微信支付接口);

  • 每一个activity活动都必须在AndroidManifest.xml配置文件中声明,否则Android系统不会识别;

  • 一个activity也可以是安装时的权限。

service后台服务组件

是Android中实现程序后台运行的解决方案,没有ui,它非常适合去执行那些不需要和用户交互而且还要求长期运行的任务。服务的运行不依赖于任何用户界面,即使程序被切换到后台,或者用户打开了另外一个应用程序,服务仍然能够保持正常运行。

broadcast receiver广播接收组件

是对发送出来的广播进行过滤接受并响应的一类组件,

比如:玩单机手游时,遇手机电量不足,游戏会提醒玩家及时保存进度;或者玩联网手游时,如遇信号问题,游戏会提醒玩家网络异常,甚至会尝试重连。

电量不足和信号问题都是系统发出的广播,被游戏接收,接着游戏做出一些响应,

APP可以"利用"Android系统的“广播”技术,通过代码去接收“想要”的广播,

Android在以下情况下(远远不止这3种)会发送广播消息,比如:

1.电量不足;2.网络异常;3.屏幕关闭\点亮等等。

content provider 内容提供组件

Android系统为了提升安全性,给每个APP自动创建了用户(即:每个APP都是不同的、独立的用户),通过用户权限设置来将不同APP的数据或访问硬件设备进行隔离。但有时候,APP之间难免还是需要相互访问数据的,这就需要使用“内容提供”技术。同样的,用户感知不到,属于纯开发技术层面,测试人员不用深究。

说白了就是使不同app之间可以进行数据交互的一个组件

Android系统资源文件的适配

定义

所谓资源文件就是APP(项目)所需要的各种音频、视频、图片…

适配就是对这些资源文件的一个管理

安卓系统规定每个apk包文件内需要存在一个res(resource)资源目录

在这里插入图片描述

相对较重要资源文件:

drawable系列->APP里的菜单图标

mipmap系列->桌面上的APP图标

layout系列->界面布局

想要适配更多的手机/平板机型,就需要准备不同的资源文件用于选择。但资源文件越多,apk文件大小就越大(性能问题)。有些人把资源图标放到网络上管理,但弊端是需要消耗流量

在这里插入图片描述

不同机型的屏幕密度不同,所以开发需要提供不同的资源:

  • DPI(dots per inch) 每英寸点数

  • 如果对手机/平板和APP之间的适配过程和原则感兴趣的同学可以看这个帖子:

    https://blog.csdn.net/delmoremiao/article/details/66550290

    (land 横屏、port 竖屏)

  • 屏幕的好坏和屏幕尺寸、屏幕密度、屏幕分辨率都有关系,不可以只考量一项

没有适配导致的后果

如果资源一个都没有被筛选到,那就使用默认的资源文件(如:drawable)

如果连默认的资源文件都不存在,那就可能导致APP闪退,属于资源不适配导致的闪退;其他情况,如内存溢出同样也会造成闪退等问题

Android系统权限的控制

从V6.0开始,权限控制分为:

  • 安装时权限控制

  • 运行时权限控制(动态检测)

权限在apk安装包中的AndroidManifest.xml文件中设置,Manifest:货物清单

uses-permission(安装时权限 )

包括但不限于:

  • INTERNET 联网
  • ACCESS_NETWORK_STATE 访问网络状态
  • ACCESS_WIFI_STATE 访问无线网络状态
  • READ_EXTERNAL_STORAGE 读取外部存储
  • WRITE_EXTERNAL_STORAGE 写入外部存储
  • BLUETOOTH 蓝牙

uses-feature(运行时权限控制)

在这里插入图片描述

required(要求)属性如果没有指定,代表true,即默认为true

这里required属性为false,也就是说不需要camero(相机)程序也能运行

  • 测试人员对于所测APP的权限控制(V6.0后分为两部分)是需要进行测试的(你可以说它是配置测试,但个人认为它是需求级别的测试)

  • 苹果手机/平板其实对于测试工程师来说更轻松,因为系统不是开源的(没有那么多个性化的内容)。我们从软件功能角度去测试即可,虽然也需要测试安装/卸载/更新,但没必要去关注权限问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值