Android系统的VTS测试套件介绍

1、 HAL硬件抽象层

下图是最新的Android系统架构:

Android系统的VTS测试套件介绍_第1张图片

Android系统基于Linux系统内核,应用层使用Jave或Kotlin语言编写,底层控制设备的是Linux内核,Linux系统采用C语言和汇编语言编写,所以控制设备的代码是C/C++语言。

那么应用层软件如何控制设备呢?Linux会提供控制设备的C/C++接口,也就是so动态库(一种ELF文件)。然后应用软件的Java通过JNI(它允许Java代码和其他语言写的代码进行交互)调用so库,那么so库就会继续往下调用设备,这些设备包括Audio,Camera,BlueTooth等等

什么是动态库?只有当程序运行时,才会把需要的代码拷贝到内存中,供别的程序使用

比如小米手机上的拍照软件调用摄像头硬件的过程:

Android系统的VTS测试套件介绍_第2张图片

在Android 7.x及更早版本中没有单独的硬件接口层,硬件接口的底层代码在Android Framework框架中实现,与Android操作系统框架没有分开。这样造成的问题是设备制造商必须更新大量代码才能将设备更新到新版Android系统

Android O版本新增了Project Treble,最重要的改变就是:Android将HAL层和framework层分开了,增加一个单独的硬件抽象层(Hardware Abstraction Layer),独立负责向Android系统提供硬件接口

这样的好处是:

  1. 统一管理,避免硬件差异化带来的影响(硬件设备不管如何变化,都可以不影响HAL层接口代码)
  2. 让设备更容易、更快速地升级Android系统(Android系统与底层分开)

HAL还有一个好处是:可以让设备商对一些敏感的代码或专利技术进行保护。Android系统的内核是Linux,Linux是一个开源系统,但是设备商可以把不愿意公开的代码以二进制方式放在HAL层,它相当于是一个黑箱,只需对外提供接口即可。这样既不会泄露自己的代码,又可以让别人使用自己的产品

比如小米公司对自己的手机摄像头有一套自己的算法优化,这些内容不能公开,但是又必须让手机上其他公司的软件,比如美图秀秀使用摄像头。就可以把算法代码放在HAL层,对外提供接口给Android系统里的拍照软件使用

Android系统的VTS测试套件介绍_第3张图片

2、VTS测试套件

Android系统架构在经过上面的改动后,提供了一套供应商测试套件(VTS)对新的供应商接口(HAL层接口)进行验证。VTS可以自动执行HAL和操作系统内核测试,即便是没有HAL层的环境也适用(由此看出HAL层接口只是从android framework中分开,而不是以前没有)

VTS( Android Vendor Test Suite) 由一套测试框架和测试用例组成,目的是提高安卓系统(如,核心硬件抽象层HALs和库libraries)和底层系统软件(如,内核kernel,模块moduls,固件firmware等)的健壮性,可依赖性和依从性

CTS测试,确保APP开发者编写的同一款程序可以运行在不同系统版本(向前兼容)、不同硬件平台、不同厂商制造的不同设备上。VTS类似CTS,通过对Vendor Interface进行测试,确保同一个版本的Android Framework可以运行在不同HAL上,或不同Android Framework可以运行在同一个HAL上

Android系统的VTS测试套件介绍_第4张图片

目前GMS认证包括CTS测试和GTS测试。后续GMS认证必须依赖VTS、CTS、GTS测试

GMS认证

GTS测试:手机出口到国外,并且通过运营商出售,就i必须通过GTS测试

GMS认证:手机没有GMS认证,那么对于手机出口商而言,生产的产品走不了运营商通道,所以在欧美等由运营商主导的手机市场,GMS认证是十分必要的。但是没有GMS认证,Google也不会做限制,只是进不了运营商市场,第三世界市场,出于成本考虑(GMS认证需要收费),也就没装GMS认证


参考:
https://zhuanlan.zhihu.com/p/468704485
https://cloud.tencent.com/developer/article/1043337
https://blog.csdn.net/qq_40748967/article/details/125931021

你可能感兴趣的:(自动化测试,android,vts)