Android出海系列-GTS测试介绍
2026-07-11 / 龙之叶   

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

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

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

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

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

GTS Environment Checklist

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 解析/安装失败。

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 规则:

1
2
3
4
sudo gedit /etc/udev/rules.d/51-android.rules
SUBSYSTEM=="usb", ATTR{idVendor}=="1782", MODE="0666", GROUP="plugdev" # 参数按实际配置
sudo chmod 777 /etc/udev/rules.d/51-android.rules
sudo service udev restart

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

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

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

关键步骤:

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

示例(文档形式):

1
export APE_API_KEY = 'path_to_key.json'

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

1
run gts -m GtsPlacementTestCases --conditional -business -logic -t com.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 number 7 次
  • 开启 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 用于定位)。

GTS 测试执行流程(单机/分布式通用)

命令步骤:

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

6.2 分布式测试(Distributed / Sharding)

GTS Distributed Test Topology (Shard)

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

示例(3 台设备):

1
2
3
cd android-gts/tools
./gts-tradefed
run gts --shard-count 3

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

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

Token sharding 目标:

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

Token sharding 原理图:

Token sharding 测试原理

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

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

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

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

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

testValidSysConfigPresent 失败定位思路

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.1 GTS Business Logic 失败(业务逻辑/远程配置类)

推荐定位顺序:

  1. 先检查 APE_API_KEY 是否设置正确
  2. 确认项目是否存在 APA portal
  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.2 waiver requests(豁免请求)

若 GTS 测试不通过:

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

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

本文链接:
http://longzhiye.top/2026/07/11/2026-07-11/