Android 设备要过认证、能预装 Google 服务,绕不开两类兼容性测试:CTS 守的是 AOSP 公开 API 与 CDD 规范,GTS 守的是 GMS 应用与服务的运行时行为。厂商改了 framework、权限模型或预装应用,可能让 CTS 失败;合入了 GMS 后,权限改动、通知通道、定位策略或预装冲突又会让 GTS 失败。两者互补,和 VTS 一起构成认证矩阵——缺哪一块,设备都拿不到合规身份。


一、CTS:验证 AOSP API 与 CDD 合规

Android CTS 是兼容性测试套件,用来验证设备是否遵守 CDD 和公开 API 行为。厂商改 framework、权限模型或预装应用,都可能让 CTS 失败。测试在主机上跑 tradefed,设备要解锁、网络和账号按文档准备。失败项要对照模块:图形、媒体、权限、WebView。CTS 通过是上架 GMS 的前提之一,和 GTS、VTS 一起构成认证矩阵。本地改 AOSP 后应把 CTS 纳入日常回归,而不是发版前突击。

三个容易踩的坑

  • 版本没对齐:Android 版本、CTS 包、补丁级别不一致的失败没有意义,必须先对齐。
  • 环境不干净:错误的系统时间、代理、动画缩放都会制造噪声失败,要按文档准备干净环境。
  • 失败不按模块归档:改框架前先确认是不是预装应用抢了 Intent,否则会在错误的地方改代码。

什么时候用:做手机、平板或要过认证的行业设备必须跑 CTS;纯应用开发不用跑整套,也不要用「我们手动点过了」代替 CTS 报告。


二、GTS:验证 GMS 应用与服务行为

GTS(Google Test Suite)是 Android 兼容性测试的一部分,用来验证设备上的 Google 移动服务是否按规范工作。产线或系统定制团队要在合入 GMS 后跑 GTS,失败项通常来自权限改动、通知通道、定位策略或预装应用冲突。测试需要对应版本的 GMS 包和测试环境,结果要能复现到具体模块。

三个容易踩的坑

  • 版本没对齐:先对齐 Android 版本、GMS 版本和测试套件版本,错版本的失败没有参考价值。
  • 失败不按模块归类:账号、位置、通知、WebView 分类排查;改 framework 前先看是不是预装应用抢了意图。
  • 只在发版前跑一次:每次系统改动后回归,不要只在发版前跑一次;记录设备指纹与日志,方便与 Google 审核对照。

什么时候用:要预装 Google 服务、做海外认证的设备必须跑 GTS;纯 AOSP 或不带 GMS 的行业平板不必强求,它也不能替代 CTS 和厂商稳定性测试。


附:CTS / GTS 定位对比表

维度 CTS GTS
验证对象 AOSP 公开 API 与 CDD 规范 GMS 应用与服务的运行时行为
偏重 设备对标准 API 的合规 Google 移动服务是否按规范工作
运行方式 主机跑 tradefed,设备解锁并按文档准备 需对应版本 GMS 包与测试环境
典型失败来源 framework / 权限 / 预装改动;图形、媒体、权限、WebView 权限改动、通知通道、定位策略、预装冲突;账号、位置、通知、WebView
认证角色 上架 GMS 的前提之一 预装 Google 服务的必要项
不替代 厂商自身稳定性测试 CTS 与厂商稳定性测试