Android系统的VTS测试套件介绍

最近在学习编程和人工智能相关的技术,发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站教程

1、 HAL硬件抽象层

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

Android系统架构

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

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

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

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

应用调用设备

在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系统里的拍照软件使用

HAL层接口调用

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上

VTS和CTS测试

目前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

<think>嗯,用户让我介绍Android 15的VTS测试准备和流程。首先,我需要确认VTS是什么。VTS是Vendor Test Suite,用于确保设备兼容Android版本,对吧?用户可能是个开发者或者测试人员,需要为Android 15做准备。 然后,我应该先解释VTS的基本概念,再分准备和流程两部分。测试准备可能包括环境搭建、设备连接、镜像获取这些。用户可能需要具体的步骤,比如如何安装Python、ADB工具,下载VTS包和兼容性测试套件CTS-on-VTS。 测试流程部分要详细说明测试执行步骤,比如如何运行测试用例,处理失败的情况,生成报告。可能还要提到持续集成,比如Jenkins集成,因为自动化测试很重要。用户可能关心如何高效执行测试,以及如何处理常见问题,比如设备连接失败或者测试用例失败。 另外,需要注意Android 15的新特性可能带来的测试变化,比如新API或者架构调整。需要提醒用户关注Google的官方文档,因为VTS每个版本可能有更新。用户可能还希望知道如何获取测试镜像和工具链,特别是Android 15专用的版本。 最后,确保语言简洁明了,步骤清晰。可能用户需要快速上手,所以结构要分明,重点突出。还要检查有没有遗漏的关键点,比如环境依赖、报告分析、问题反馈渠道这些。可能还需要强调兼容性测试的重要性,确保设备通过Google认证。</think>Android 15 的 **VTS(Vendor Test Suite)测试** 是确保设备厂商的硬件和软件实现符合 Android 兼容性要求的关键环节,主要用于验证系统映像(如 `vendor.img`、`system.img`)与 Android 框架的兼容性。以下是测试准备和流程的概要: --- ### **一、测试准备** 1. **环境搭建** - **操作系统**:推荐 Linux(Ubuntu 18.04+)或 macOS。 - **工具链**: - 安装 Python 3.6+ 和必要的依赖库(如 `protobuf`、`adb`)。 - 安装 Android SDK Platform Tools(包含 `adb` 和 `fastboot`)。 - 下载 Android 15 的 VTS 测试套件(通过 [AOSP 源码](https://source.android.com/) 或 [Android CI 平台](https://ci.android.com/)获取)。 - **设备**:准备符合 Android 15 要求的待测设备(DUT, Device Under Test)。 2. **获取测试镜像** - 从 Google 官方渠道下载 Android 15 的 **VTS 测试镜像**(如 `aosp_arm64-vts.img`),用于刷入设备或模拟器。 - 同步最新的 VTS 测试用例(通过 `repo` 工具同步 AOSP 代码库)。 3. **配置设备** - 解锁设备的 Bootloader:`fastboot flashing unlock`。 - 刷入 Android 15 的系统镜像和 Vendor 镜像。 - 启用开发者选项和 USB 调试模式。 4. **兼容性测试套件(CTS-on-VTS)** - 确保已下载 Android 15 的 CTS/VTS 测试包(通常为 ZIP 文件),解压后包含测试脚本和用例。 --- ### **二、测试流程** 1. **启动测试环境** ```bash # 进入 VTS 测试工具目录 cd android-vts/tools # 启动 VTS 控制台 ./vts-tradefed ``` 2. **执行测试计划** - **基础测试**:运行完整的 VTS 测试集。 ```bash vts-m <模块名>(例如 VtsHalBluetoothV1_0Target) ``` 3. **监控测试过程** - 测试工具会通过 `adb` 向设备推送测试用例并执行。 - 实时查看日志输出,监控通过/失败的测试用例。 - 常见问题处理: - **设备断连**:检查 USB 连接或重新授权调试。 - **测试失败**:根据日志定位问题(如 HAL 实现不兼容)。 4. **生成测试报告** - 测试完成后,结果默认保存在 `android-vts/results` 目录。 - 报告格式为 XML 和 HTML,可通过浏览器查看详细结果。 - 使用 `vts-report-generator` 工具生成可读性更强的报告: ```bash ./vts-report-generator --result-path <测试结果路径> ``` 5. **问题修复与回归测试** - 根据失败用例修复代码(如 HAL 层、内核驱动或系统服务)。 - 重新运行失败用例以验证修复: ```bash vts-tf > run vts --retry <会话ID> ``` --- ### **三、注意事项** 1. **Android 15 新特性** - 关注新引入的 HAL 接口、权限模型变更或 Treble 架构调整(如动态分区优化),这些可能影响 VTS 测试覆盖范围。 2. **持续集成(CI)** - 建议将 VTS 集成到自动化流水线中(如 Jenkins/GitLab CI),实现每日构建测试。 3. **官方文档** - 定期查阅 [Android Compatibility Test Suite (CTS)](https://source.android.com/docs/compatibility/cts) 和 VTS 文档,获取最新测试要求。 --- ### **四、常见问题** - **Q1**: 测试时设备无法识别? **A**: 检查 `adb devices` 是否列出设备,确认 USB 驱动和调试权限。 - **Q2**: VTS 测试失败如何处理? **A**: 分析日志中的 `FAILED` 条目,定位到具体模块(如 `VtsKernelLinuxKernelTest`)和错误堆栈。 - **Q3**: 如何跳过某些测试用例? **A**: 使用 `--skip-preconditions` 或 `--exclude-filter` 参数过滤用例。 --- 通过以上流程,可以系统化地完成 Android 15 的 VTS 测试,确保设备符合 Google 的兼容性标准。如需更具体的操作细节,建议参考 Android 15 的官方 VTS 文档或对应版本的发布说明。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汽车通信技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值