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后分为两部分)是需要进行测试的(你可以说它是配置测试,但个人认为它是需求级别的测试)

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

Android系统基础介绍相关推荐

  1. Android 系统简单介绍

    Android 系统简单介绍 2011年11月20日 写这篇文章的目的是为了给那些刚刚入手安 卓手机的新手们一些参考,希望他们能快速的上手 [第一期]ANDROID基础知识1~20 [第二期]继续泡! ...

  2. 《Android Studio应用开发实战详解》——第1章,第1.2节Android系统基础

    本节书摘来自异步社区<Android Studio应用开发实战详解>一书中的第1章,第1.2节Android系统基础,作者 王翠萍,更多章节内容可以访问云栖社区"异步社区&quo ...

  3. android系统知识,Android系统基础知识百科

    Android系统基础知识百科 2015-12-16 17:58:31 954浏览 Android系统作为一款功能强大的移动计算平台,在保持开放性的同时,必须提供强健的安全保障.Android的系统安 ...

  4. Laravel核心代码学习--用户认证系统(基础介绍)

    用户认证系统(基础介绍) 使用过Laravel的开发者都知道,Laravel自带了一个认证系统来提供基本的用户注册.登录.认证.找回密码,如果Auth系统里提供的基础功能不满足需求还可以很方便的在这些 ...

  5. Laravel核心解读 -- 用户认证系统(基础介绍)

    用户认证系统(基础介绍) 使用过Laravel的开发者都知道,Laravel自带了一个认证系统来提供基本的用户注册.登录.认证.找回密码,如果Auth系统里提供的基础功能不满足需求还可以很方便的在这些 ...

  6. Android系统分区介绍

    Android系统分区介绍 hboot--系统开机引导类似电脑BIOS,这块刷错手机就会变成砖 radio--通讯模块.基带.WIFI.Bluetooth等衔接硬件的驱动软件 model分区 reco ...

  7. Android系统基础与常用布局

    Android学习笔记 一.Android系统简介 1.1 体系架构 采用了分层的架构,如下图 1.1.2 Linux内核 ​ Android 平台的基础是 Linux 内核.例如,Android R ...

  8. Android系统基础架构

    一.体系架构 虽然Android系统非常庞大且错综复杂,需要具备全面的技术栈,但整体架构设计清晰.Android底层内核空间以Linux Kernel作为基石,上层用户空间由Native系统库.虚拟机 ...

  9. android mdns开发实例,Android开发_mDNS移植Android系统方案介绍

    mDNS移植Android系统简介.最近有个客户,需要在他的机顶盒上支持Airplay, 其机顶盒系统是Android4.0.4, 此版本系统没有mDNS(需要Android4.1+)及MediaCo ...

最新文章

  1. 连载《一个程序猿的生命周期》- 32、两个企业急着上项目,紧急赶赴现场了解情况...
  2. 和为K的子数组—leetcode560
  3. 傅里叶变换matlab案例,基于matlab的傅里叶变换
  4. SQL报错:Column count doesn‘t match value count at row 1
  5. 有啥区别?谷歌Chrome浏览器图标8年来首次更新
  6. Java 原生 JAXB 解析 XML 深入剖析
  7. Macfee 迈克菲尔CPU占用高解决办法,Macfee配置,优化和暂时关闭保护方法
  8. stm32码盘传感器_STM32电机测速(正交或者霍尔编码器)
  9. 嵌入式 Linux 入门 环境篇(一、开发板初体验)
  10. java生成树形Excel_java poi导出树形结构到excel文件
  11. coji小机器人_WowWee COJI 可编程机器人玩具——也许是我想多了
  12. 抱歉,我又可以了。。。
  13. 图像基础—— 特征提取之颜色特征提取
  14. Oracle数据库操作:将有顿号的一条数据拆分为多行
  15. Dialog中显示倒计时,到时自己主动关闭
  16. 难上加难?女性在技术领域可以这样做……
  17. 基于Html5 的canvas容器实现定制印章(圆形、椭圆、方形)
  18. 超级计算机国产cpu,为何国产超级计算机已经领先全世界了,而国产cpu却依然落后?...
  19. 背包问题求解(数据结构课设)
  20. 网络标准之:永远是1.0版本的MIME

热门文章

  1. “夜拍王”荣耀10GT上线,不用三脚架也能出夜景大片!
  2. ANC主动降噪耳机有哪些?ANC主动降噪耳机推荐!
  3. 个人项目——基于STM32的太阳能供电智能花盆
  4. 虚拟机没关电脑直接关机了,重启后crt、xshell都连不上虚拟机
  5. 树莓派2使用TSL2561
  6. poi word表格系列操作
  7. php think queue work,thinkphp5.0无法使用think-queue包,php think queue:work命令不存在
  8. UE4.27 基于composure的虚拟制片
  9. 快手Y-tech:短视频智能创作的CV技术和发展趋势
  10. SAP BASIS ADM100 中文版 Unit 5(1)