为了降低 Android 的碎片化,保证不同厂商生产的 Android 设备彼此之间可以相互兼容。谷歌推出了一系列针对 Android 设备(不仅限于手机形态,还包括车载、TV等)的各种测试,且要求 SOCs、ODMs 和 OEMs 等厂商必须通过这些测试,才可以获取到 Android 的商标授权,避免手机厂商出现不必要的商务纠纷。
这些测试主要包括:CTS、CTS Verifier、GTS、VTS、STS 等。我们把它们统称为 XTS 或者 *TS。
国内厂商喜欢叫 XTS,读音「叉踢爱思」或「星踢爱思」。国外厂商喜欢叫 *TS,读音「叉踢爱思」或「爱思踢爱思」。
CTS
兼容性测试套件(Compatibility Test Suite,简称 CTS)是一个免费开源的商业级测试套件,用于测试 Android 设备的兼容性。
CTS 的测试可以使用 user 版本,而无需 user debug 或者 user root 版本。
CTS 测试的内容主要有:
- 签名测试:每一个 Android 版本的释放,都会有一些 XML 配置文件用于描述公有 API 的签名。CTS 会检查设备这些公有的 API 签名情况;
- 平台 API 测试:测试 SDK 中的核心库和 Android 应用框架的 API 正确性,保证类、方法、参数等正确性;
- Dalvik 测试:重点测试 Dalvik 的可执行格式;
- 平台数据模型:
- 平台 Intent 测试:测试 Intent 相关是否符合要求;
- 平台权限测试:测试平台 Permission 相关是否符合要求;
- 平台资源测试:测试设备是否可以正确地处理核心平台资源类型,如 SDK 中提到的动画资源、布局资源、等等。
从 CTS 的测试内容不难看出,CTS 重点测试的是 App 和 Framework 之间的兼容性。这样做的目的,至少可以确保 App 开发者编写的同一应用可以运行在不同的 Android 版本(向前兼容)、不同的硬件平台、不同的厂商制造的设备上。
CTS 官方介绍:source.android.google.cn/docs/compat…
CTS 的源码:android.googlesource.com/platform/ct…
CTS 官方文档:source.android.google.cn/docs/compat…
CTS Verifier
兼容性测试检验器(Compatibility Test Suite Verifier) 是对 CTS 的补充,是一种手动测试,主要为没有手动输入(比如音频质量、加速度计等)无法在固定设备上测试的 API 和功能提供测试。
GTS
谷歌移动服务测试套件(Google Mobile Services Test Suite,简称 GTS)是用于测试谷歌移动服务组件(Google Mobile Services,简称 GMS)的测试工具。谷歌移动服务组件包括了一系列谷歌为 Android 设备开发的闭源服务和应用,主要包括:Gmail、Google Maps、YouTube、Play Store 等等。在海外市场,这些应用对于用户生活早已不可或缺。国外没有 GMS 服务的手机就好比国内没有微信、支付宝、地图的手机,寸步难行。甚至有些国家和地区,当地运营商要求移动设备必须通过 GMS 认证才可以接入当地网络。在国内要是厂商不集成 GMS 服务的话,原则上可以不进行 GTS 测试,但是大厂为了避免不必要的纠纷,一般会进行 GTS 测试。
谷歌对 Android 移动设备给予了不同程度的授权,可以归纳为如下三个等级:
- 免费使用 Android 系统,但是不集成 GMS 服务;
- 选择性地集成 GMS 服务,但是手机无法获取到谷歌的授权;
- 集成所有的 GMS 服务且通过 GMS 认证,获得谷歌的授权和得到官方认证。
谷歌每年的营收有很大一部分来源于 GMS 应用的广告和推广等服务。
VTS
供应商测试套件(Vendor Test Suite,简称 VTS)是谷歌用于测试 Android 设备的核心硬件抽象层 HAL、库 Libraries 和底层软件系统(比如 Kernel、Fireware 等)的健壮性、兼容性和依赖性的测试工具。
过往,Android 系统的升级(比如从 Android 6.0 升级到 7.0)需要上下游厂商投入非常多的人力(尤其是 SoC 厂商),导致整个升级的周期非常长。只有当所有的厂商升级完毕后,用户才会收到 OTA 推送,从而升级手中的移动设备。考虑到成本的问题,有的低端点的移动设备,出厂后就不会再升级。这就导致用户无法体验新版本的系统带来的功能,有的应用兼容做的不好,还会出现闪退等情况,影响用户体验。
因此,为了解决这个问题,谷歌在 Android 8.0 的时候引入了 Project Treble 项目。在该项目中,提及了 Vendor Interface 和 VTS 的概念。Vendor Interface 是将 Framework 和 HAL 进行分离,确保同一个 Framework 可以运行在不同的 HAL 上(或者不同的 Framework 运行在相同的 HAL 上)。这样做的好处就是上下游厂商进行 Android 升级的时候,可以直接对 Framework 进行升级而无需考虑 HAL 层的变化,从而缩短 OTA 推送的时间,让用户尽早可以实现 Android 版本的升级。
STS
安全测试组件(Security Test Suite)是谷歌用于测试 Android 设备安全漏洞、安全补丁的测试工具,主要包含每个月、季度和年份的安全补丁等。