news 2026/9/8 19:16:51

Android出海系列-VTS测试介绍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Android出海系列-VTS测试介绍

一、什么是 VTS,为什么它对出海至关重要

从 Android 8.0 开始,Google 引入Project Treble,将系统框架层与厂商实现层(Vendor)解耦。Treble 之前,每次系统升级都需要厂商同步修改底层实现;Treble 之后,Google 提供了稳定的 Vendor 接口,厂商只需更新框架层即可大幅缩短升级周期。

对应到认证体系中,Google 通过两套测试套件保障兼容性:

测试套件测试对象主要覆盖
CTSFramework 层应用兼容性、系统 API
VTSVendor 层Kernel、HAL、Lib 等底层接口

从 Android 8.0 起,所有新设备不仅需要通过 CTS,还必须通过 VTS,且VTS 测试必须在 CTS 之前完成。对于出海项目而言,VTS 是 GMS 认证流程中不可跳过的关键环节。


二、VTS 测试前的环境准备(决定首轮通过率)

VTS 的通过率,通常不是由“命令会不会跑”决定,而是由“测试环境是否严谨”决定。建议按以下三层准备:

1) PC 端环境

  • 操作系统:Ubuntu 14.04 及以上
  • JDK:1.8 及以上,Android 11+ 建议 JDK 9+
  • Python:Android 10 及之前使用 Python 2.7,Android 11+ 使用 Python 3
  • 工具链:安装并配置adbfastbootaapt/aapt2
  • 环境变量:将上述工具路径加入PATH
  • 本地化 vtspython 源:避免从 PyPI 在线拉取依赖导致网络不稳定而测试失败

Python 环境变量配置示例:

# 编辑 /etc/profile,添加本地 vtspython 源路径exportVTS_PYPI_PATH=/usr/local/bin/vtspythonsource/etc/profileecho$VTS_PYPI_PATH# 验证配置生效

注意:Android 14 及以上版本 VTS 测试需要配置 AAPT2 环境,否则部分 APK 解析安装会失败。

2) 设备端环境

设备端配置是 VTS 通过率的“隐形门槛”,需要按步骤逐一完成:

  1. 设备校准:建议通过 GNSS OTA 校准
  2. 硬件模组:安装指纹模组、NFC 模组和 Camera 模组
  3. Unlock 操作:下载 Userdebug 版本,开启 OEM unlocking 和 USB debugging,执行fastboot flashing unlock
  4. 产线部署:Android 12+ 必需,写入 RPMB Key,一台设备只需部署一次
  5. Device Attestation ID 部署:Android 13+ 必需
  6. keybox 部署:Android 15 及之前需要(Android 16 首发设备改用 RKP)
  7. 刷 GSI 版本:使用带 GSI 的 User 工程 pac 包
  8. CSR 提取上传:Android 13+ 必需,用于 RKP 远程密钥配置

3) 网络与外场条件

  • Wi-Fi 必须稳定,且能正常访问 Google 服务器
  • Android 9+ 需要稳定 GPS 信号(室外空旷环境,或室内使用 GPS 信号转发器)
  • 双卡机型需插入双实网 SIM 卡并设置主卡
  • 支持 SecureElement HAL 的项目需准备 Android Test Card(支持 SE 的白卡)

三、VTS 实测流程:从启动到结果判定

1) 基本执行流程

# 1. 解压 VTS 测试包到本地# 2. 进入 tools 目录cd<installation-path>/android-vts/tools# 3. 启动 VTS 控制台./vts-tradefed# 4. 执行整包测试>run vts

常用命令速查:

命令含义
> l r列出所有跑测结果
> l d列出所有检测到的设备
> run vts -m <模块名>单跑某个模块
> run vts -m <模块名> -t <测试项名>单跑指定测试项
> run vts -s <device_id> --logcat-on-failure失败时捕获 logcat
> run retry --retry <session_id>重跑失败项(Android 10+)

更多命令可通过控制台执行help all查看。

2) 结果怎么看

测试结束后,控制台会显示执行完成提示,同时在测试包路径下生成logsresults文件夹。打开results/<日期>/test_result.xml即可查看详细测试结果。

判定要点:

  • 控制台出现执行结束提示 → 当前轮次完成
  • test_result.xmlfail项需逐一分析
  • 建议结合logcat-on-failure日志做首轮归因
  • 环境类 Fail 建议复测一次后再提交研发

四、高频失败点与出海项目实战建议

1) 先区分“环境失败”与“代码失败”

很多首轮 Fail 来自环境波动(Wi-Fi、GPS、SIM、部署前置步骤缺失),并非代码缺陷。建议先复测一次,再决定是否进入研发改码流程。

2) 已知特殊情况速查

特殊要求影响模块适用版本
设备 UnlockAllAll
产线部署PerInstance/GenerateKeyTests 等Android 12+
Device Attestation IDVtsHalRemotelyProvisionedComponentTargetTestAndroid 13+
keybox 部署VtsAidlKeyMintTargetTest 等Android 15 及之前
指纹模组VtsHalBiometricsFingerprint 系列All
双实网 SIM 卡VtsHalRadio、CtsVcnTestCasesAndroid 9+
稳定 Wi-FiVtsHalDrm 系列All
稳定 GPSVtsHalGnssV1_1TargetAndroid 9+
Android Test CardVtsHalSecureElementV1_0TargetAndroid 9+

3) Android 版本越新,安全与认证前置条件越重

  • Android 12+:产线部署对部分模块已是硬性前提
  • Android 13+VtsHalRemotelyProvisionedComponentTargetTest与 Device Attestation/CSR 强相关
  • Android 15 及之前:若未完成 keybox,KeyMint 相关用例容易集中失败
  • Android 16 首发first_api_level >= 36):不再部署 keybox,仅支持 RKP 方案

4) Ylog 策略要“按需开启”

VTS 问题定位通常先看 VTS 自身日志;仅在需要跨层排查时再补抓 AP/Modem/WCN/GNSS 日志,避免无效日志导致分析成本上升。各 Android 版本的 Ylog 命令差异较大,建议按目标平台查阅对应配置。

5) Google 原生问题与豁免策略

部分 Fail 属于 Google VTS 用例本身的 Bug,需提交 Google Issue 跟踪。Google 对豁免用例的处理策略是:必须在 dev 包(Google 提供的修改版 VTS 测试包)测试通过后才能申请豁免,否则不予同意。


五、推荐的团队落地打法(可直接复用)

  1. 建立版本化测试基线:按 Android 主版本维护独立 VTS 命令模板与环境清单
  2. 固化预检脚本:在正式跑测前自动检查 adb/fastboot/aapt2、网络连通、主卡状态、GPS 条件
  3. 失败分层归类:环境类、配置类、平台类、Google 原生问题分别入库追踪
  4. 豁免流程前置:对疑似 Google 原生问题尽早提交 issue,保留复现证据和对比版本记录

六、结语

VTS 不是“跑一遍命令”这么简单,而是一套覆盖环境、设备、安全认证与版本策略的系统工程。在 Android 出海项目中,越早把 VTS 流程标准化、自动化,越能降低认证周期与返工成本。

如果你正在推进 Android 13/14/15/16 的海外认证,建议优先把RKP/CSR产线部署网络/GPS 稳定性三件事做成可重复执行的检查清单,这会直接提升首轮通过率。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/8 19:16:01

OpenClaw 2.0开源数字员工实测:从聊天机器人到本地AI智能体的质变

OpenClaw这个项目&#xff0c;我从1.0开始就在关注。说实话&#xff0c;最开始它就是个能在我本地跑起来的聊天机器人&#xff0c;接上大模型之后能帮我写写代码、查查资料&#xff0c;新鲜感一过去就吃灰了。但这次2.0发布&#xff0c;社区里到处都在聊“数字员工”&#xff0…

作者头像 李华
网站建设 2026/9/8 19:15:48

基于YOLOv5的火焰烟雾检测:源码数据集与实战部署指南

简介&#xff1a;面向住宅、工业园区、森林、加油站等场景的火焰与烟雾检测需求&#xff0c;这份基于YOLOv5的深度学习资源提供了完整源码与配套数据集&#xff0c;适合具备一定PyTorch基础的目标检测学习者、安全监控开发人员以及相关课程设计团队使用。包内包含约2000个文件&…

作者头像 李华
网站建设 2026/9/8 19:15:40

HTML系列教程:11_HTML 图像 <img> 标签零基础详解

<img> 用来在网页插入图片&#xff0c;image 的缩写。 <img> 是单标签&#xff0c;没有结束标签 </img>。 注意&#xff1a;img 标签写在 <body> 里面&#xff0c;不要写到 head。基础语法&#xff1a;<img src"图片地址" alt"图片描…

作者头像 李华
网站建设 2026/9/8 19:15:07

从面板到多标签页:SkillHub 0.2.0 交互重构与状态管理实践

老读者应该知道&#xff0c;SkillHub 这个项目我从 0.1.0 就开始在社区同步进展&#xff0c;它是一个面向开发者与创意工作者的本地技能工作台&#xff0c;把高频的小工具、模板片段、常用命令统一收拢到一个应用里&#xff0c;省得在不同软件之间来回横跳。这次 0.2.0 更新&am…

作者头像 李华