news 2026/8/18 13:35:05

Android出海系列-GTS测试介绍

作者头像

张小明

前端开发工程师

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

1. 概述:什么是 GTS/为什么要测

GTS(GMS Test Suite,GMS 测试套件)是自动化测试工具,用于验证:

  • GMS 应用集成是否正确
  • 与 Google 签订合同条款相关的系统配置是否一致
  • 典型测试项包括:GMS 集成验证、部分系统 API 校验、Widevine 集成、用户体验要求(例如 launcher 必需放置 Google Search)、分销协议要求(如 MADA/EMADA 条款)等

注意:GTS 测试在 Linux 环境执行(无 Windows 版本)。

2. 测试环境搭建(PC 端:Linux)

2.1 PC 基本要求

  • 支持 64bit Linux 系统
  • Android 11 及以上需要在 Ubuntu 14.04 及更高版本上测试

2.1.1 ADB 和 AAPT

开始 GTS 测试前确认:

  • 已安装最新版本的adb(Android Debug Bridge)与aapt(Android Asset Packaging Tool)
  • 工具路径已加入环境变量PATH

步骤概览:

  1. 从 Android SDK 下载工具包
  2. 解压后运行 tools 目录下的 Android 工具
  3. 在 SDK Manager 更新:Android SDK Tools、Platform-tools、Build-tools
  4. ToolsPlatform-toolsBuild-tools三个目录加入PATH
  5. 重新加载环境变量(如source

另外:Android 14 及以上 GTS 需要配置 AAPT2,否则可能出现部分 APK 解析/安装失败。

  • AAPT2 下载:https://developer.android.google.cn/studio/command-line/aapt2?hl=en#download_aapt2
  • 配置要点(文档描述):将 AAPT2 复制到/usr/bin,并赋予可执行权限(如sudo chmod 777 aapt2

2.1.2 JDK 版本

  • Android 11 及以上:OpenJDK 11

2.1.3 GTS 文件(测试包)

下载需匹配待测设备的内容:

  • 与待测设备 Android 版本匹配的 GTS
  • 与待测设备支持的 ABI(Application Binary Interface)匹配的 GTS 测试包

目录结构要点:

  • logs/results/在测试执行后才会出现

2.1.4 Device detection(USB 设备识别:udev)

Ubuntu 下如无法识别通过 USB 连接的终端,需要创建 udev 规则:

sudogedit /etc/udev/rules.d/51-android.rulesSUBSYSTEM=="usb", ATTR{idVendor}=="1782",MODE="0666",GROUP="plugdev"# 参数按实际配置sudochmod777/etc/udev/rules.d/51-android.rulessudoserviceudev restart

idVendor/GROUP等参数需按你实际厂商/用户组环境调整。

2.1.5 定制化 GTS 能力测试(可选)

Google 增加了定制化 GTS 能力:可为特定合作伙伴增加额外测试集(限制在授权范围内)。

关键步骤:

  1. 从 Google Account Manager 或第三方实验室获取authentication key文件
  2. 将 key 文件放到 PC 可访问目录
  3. 将 key 文件绝对路径配置到环境变量APE_API_KEY

示例(文档形式):

exportAPE_API_KEY='path_to_key.json'

进入 GTS 测试包执行一次探测测试:

run gts-mGtsPlacementTestCases--conditional-business-logic-tcom.google.android.placement.gts.DefaultIntentTest#testDefaultIntentHandlers

若通过该测试项,表示定制环境配置成功;否则需要检查 key、上传状态等。

3. 待测设备配置(Device 端)

3.1 User builds

GTS 需要在User版本构建上进行测试(不要用 engineering/userdebug)。

3.2 Attestation Keybox 部署(Android 16 适配要点)

文档要求:GTS 测试前需要对测试设备进行Attestation Keybox 部署,否则部分测试项会失败。

但同时给出关键更新:Android 16 开始不需要部署 Attestation Keybox。

结论:面向 Android 16 的目标机型,可跳过 Attestation Keybox 部署步骤;但如果你仍在做低版本回归/兼容测试,仍需按文档要求部署。

3.3 Widevine Keybox 部署

GTS 测试前需要进行Widevine Keybox部署,否则部分测试项会失败。

若支持 Provisioning 4.0,则无需单独部署 Widevine Keybox。

3.4 Device ID 部署(Android 13+)

对于 Android 13 及以上版本,GTS 测试前需要对测试设备进行 Device ID 部署,否则部分测试项会失败。

3.5 CSR 部署(Android 13+)

对于 Android 13 及以上版本,需要提取测试设备 CSR 信息并上传到 Google 服务器,否则部分测试项会失败。

3.6 屏幕

若待测设备无嵌入式屏幕,需要外接一个屏幕。

3.7 SD 卡

若设备存在存储卡槽:

  • 插入一张SD 卡
  • SD 卡建议支持 UHS,或写入速度至少 Class 10(10MB/s),用于确保能通过 GTS 测试

3.8 SIM 卡

若设备存在 SIM 卡槽:

  • 每个卡槽插入激活的 SIM 卡
  • 如设备支持 SMS,需要在Setting中显示每张 SIM 卡对应的电话号码

Android 12 及以上:

  • 所有 SIM 卡必须支持存储 ADN(Abbreviated Dialling Numbers)
  • telecom dedicated file (DTelcom)的 GSM/USIM 卡满足该要求

文档提醒:部分模块可能因 Google 测试要求变化,使用普通 SIM 卡无法通过;此时需要更换可国际漫游的流量卡再次测试。

当且仅当待测设备不支持 Modem 功能时,该项配置可忽略。

3.9 Developer UICC(Carrier API 测试)

为运行 GTS 中的 carrier API 测试用例,待测设备需要一张支持carrier privilege规则的 SIM 卡。

4. 待测设备预置条件(运行前准备)

文档列出的关键预置条件如下:

  • 烧写待测版本或恢复出厂设置
    • 恢复出厂:Settings > System > Reset options > Erase all data (factory reset)
  • 连接 Wi‑Fi 并确保能访问 Internet
    • 入口:Settings > Network & internet > internet
  • 系统语言设置为英语(United States)
    • Settings > System > Language & region
  • 如支持 GPS 或网络定位能力,打开 Location
    • Settings > Location > On
  • 取消屏幕锁/密码
    • Settings > Security & privacy > Device unlock > Screen lock > None
  • 开启 USB debugging
    • Settings > Developer options > USB debugging
    • 若 Developer options 被隐藏:Settings > About phone,点击Build number7 次
  • 开启 USB 调试后,需进行额外设置
    • Stay Awake:On
    • Verify apps over USB:Off(文档提醒 Android 4.2+ 需要此项)
  • 取消浏览器 startup/setup:Google 浏览器打开后选择No thanks
  • 设置系统时间为 12 小时制
    • Settings > System > Date & time > Use 24-hour format > Off
  • 使用 USB 线连接 PC 与设备:当弹出“是否接受一个 RSA Key”对话框,选择允许 USB debugging

5. 网络环境要求

GTS 测试需要一个“可访问 Google 服务器”的代理 Wi‑Fi,并保证:

  • 能访问 Google 服务器
  • 没有任何限制(文档表述为没有限制)

6. 测试方法

6.1 单机测试(Single Device)

单机流程可参考下图(PC/Linux 端准备 → 解压测试包 → tradefed 执行 → 输出 results/logs 用于定位)。

命令步骤:

  1. PC 端命令行窗口
  2. 查看设备:adb devices
  3. 进入解压后的 GTS 测试包并执行:
cdandroid-gts/tools ./gts-tradefed run gts# 整体测试run gts-m<ModuleName># 测试某个 module 的所有 Caserun gts-m<ModuleName>-t<TestCaseName># 测试某个 module 中指定 Case

6.2 分布式测试(Distributed / Sharding)

分布式测试把测试任务分发到多个待测设备并行执行,从而缩短整体测试时间。

示例(3 台设备):

cdandroid-gts/tools ./gts-tradefed run gts --shard-count3

--shard-count对应待测设备数。

6.3 Token sharding 指令测试(Android 10+)

Token sharding 目标:

  • 自动把“需要特殊设置的测试”匹配到“支持的设备”,避免为所有设备配备 SIM
  • 支持 Android 10 及以上版本
  • 支持第一次测试与 retry

Token sharding 原理图:

执行前文档要求先启用命令能力:

run gts --enable-token-sharding<...other flags...>

若待测设备不支持 Modem 功能,则无需使用 Token sharding 指令测试。

7. 测试问题分析(以testValidSysConfigPresent为例)

当某些测试项失败时,文档建议按“results → host log → device logcat → 进一步分析/修复 → 重测”的顺序定位。

7.1 分析resultstest_result.html

结果文件示例:

  • results/<date_time>/test_result.html

在页面中重点关注:

  • Summary:查看Suite/Build(判断 GTS 版本号是否正确)与Tests Failed(失败项数量)
  • Details:查看失败原因(常见如缺少 YouTube Music 等应用)

7.2 分析 host log

若结果文件没有足够信息,需要进一步查看 host 日志:

  • logs/<date_time>/inv_<...>/host_log_<...>.txt

host log 往往包含:执行了哪些 apk、失败原因、以及测试项执行流程。

7.3 分析 device log(按 PID + 关键字)

若 host log 仍无法准确定位:

  • 查看 device logcat 文件:
    logs/<date_time>/inv_<...>/device_logcat_test_<serial>_<pid>.txt

做法:

  • 用 PID(测试 apk 进程编号)与TestRunner关键字搜索
  • 观察失败发生前后的输出,确认是缺配置、缺应用、还是业务逻辑错误

7.4 反汇编/进一步分析(非开源场景)

GTS 非开源,文档建议可对相关 apk/jar 做反汇编:

  • 使用jadx反汇编 apk
  • 使用jd反汇编 jar

并结合失败用例(如com.google.android.os.gts.SysConfigTest.assertSystemConfigEquals/testValidSysConfigPresent)推断具体比对逻辑。

7.5 修改配置文件并重测

修复路径:

  • 打开partner_gms/etc/sysconfig/google.xml
  • 按失败信息补齐缺失应用(示例:添加 YouTube Music)
  • 重测直至通过

7.6 查找 Google 规范(Partner 站点)

你可以在 Google partner 网站查阅对应规范/要求,理解为什么某类测试对缺失应用敏感(例如特定配置要求包含 YouTube Music)。

8. 其他常见失败补充

8.1GTS Business Logic失败(业务逻辑/远程配置类)

推荐定位顺序:

  1. 先检查APE_API_KEY是否设置正确
  2. 确认项目是否存在APAportal
  3. 若 portal 正确仍失败,错误通常会出现在 error log 中,常见包括:
  • Unable to execute because authorization failed, please ensure the service account key is properly installed.
    • 通常是APE_API_KEY未正确配置,或 key 文件本身问题
  • Unable to execute because service account is not authorized to access information for this device...
    • 检查 APA portal 中的权限与设备属性配置
  • Cannot connect to business logic service for suite GTS...
    • 通常为 Google 服务器连接问题:可稍后重试
    • 若持续,可联系 Google 支持或第三方实验室认证中心

文档还提到:如反复失败,可考虑使用--ignore-business-logic-failure使测试继续执行,但依赖远程配置的测试仍可能失败。

8.2waiver requests(豁免请求)

若 GTS 测试不通过:

  • 可尝试使用 preview 包测试
    • preview 测试通过:无需提交 waiver requests
    • preview 测试不通过:需要咨询 FAE、第三方实验室认证中心或 Google 是否要提交 waiver requests

waiver 指引参考(文档链接):

  • Reducing waiver requests / verify-dev-builds:
    https://docs.partner.android.com/gms/testing/cts/test-improvement-request-guide?hl=en#verify-dev-builds
  • create-gts:
    https://docs.partner.android.com/gms/testing/cts/test-improvement-request-guide?hl=en#create-gts
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/18 13:32:30

高效数据传输:Protobuf实战指南

想象你经营一家跨国快递公司。 每天有数百万个包裹在全球流转。每个包裹里装着不同的东西——有人寄衣服,有人寄文件,有人寄电子产品。你需要一套通用的打包标准:不管里面装什么,所有分拣中心都能看懂包裹单,所有传送带都能运输,所有仓库都能存放。 JSON就像用纸箱打包…

作者头像 李华
网站建设 2026/8/18 13:31:50

099、STM32项目分享开源:自习室智能监控系统

目录 一、项目成品图片 二、项目功能简介 1.主要器件组成 2.功能详解介绍 三、项目原理图设计 四、项目PCB硬件设计 项目PCB图 五、项目程序设计 六、项目实验效果 ​编辑 七、项目包含内容 一、项目成品图片 本课题设计一款基于单片机的自习室智能监控系统&#x…

作者头像 李华
网站建设 2026/8/18 13:31:37

Swift 技术 OSS上存图片

一直觉得自己写的不是技术&#xff0c;而是情怀&#xff0c;一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的&#xff0c;希望我的这条路能让你们少走弯路&#xff0c;希望我能帮你们抹去知识的蒙尘&#xff0c;希望我能帮你们理清知识的脉络&#xff0…

作者头像 李华
网站建设 2026/8/18 13:29:17

感知元素工程:人工认知系统的入口层构建

感知元素工程&#xff1a;人工认知系统的入口层构建摘要作者&#xff1a;东塬一老翁技术支持&#xff1a;WSaiOS多模态智能技术研发工作室人工认知系统的根本挑战在于如何使人工个体不仅“接收”外部信息&#xff0c;而且能够“感知”世界。本文基于ICAI&#xff08;Individual…

作者头像 李华