2、搭建CTS测试环境:硬件要求、软件要求、下载CTS套件、配置adb与fastboot、环境验证

好,咱们正式开始动手了。

搭建CTS测试环境,听起来好像就是装个软件、连个设备。但说实话,我见过太多人在这第一步就栽跟头。有的是硬件不达标,跑着跑着设备重启;有的是adb版本不对,测试用例死活跑不起来。所以这一章,咱们把每个细节都掰开揉碎了讲清楚。

2.1 硬件要求:别让设备拖后腿

先说说硬件。CTS测试对硬件的要求,其实比你想的要高。

测试设备

  • 必须是正式出货的商用设备,或者与商用设备完全相同的硬件版本。工程样机?我劝你别用,测出来的结果谷歌不认。
  • 系统必须是user版本,不能是userdebug或eng版本。这一点很多人忽略,结果提交结果时被驳回。
  • 设备要解锁bootloader。嗯,这个后面会细说。
  • 存储空间要充足,至少预留8GB以上。我遇到过测试到一半报“空间不足”,整个session废掉的情况。

主机电脑

  • 操作系统:Ubuntu 18.04/20.04 LTS 64位。我个人习惯用20.04,兼容性最好。
  • 内存:至少16GB。如果你同时跑多个设备,建议32GB。
  • 硬盘:至少100GB空闲空间。CTS套件本身不大,但测试日志和结果文件会越积越多。
  • CPU:4核以上,这个倒不是瓶颈。
注意: 千万别在Windows或macOS上直接跑CTS。虽然理论上可以,但路径分隔符、脚本兼容性问题会让你怀疑人生。老老实实用Linux。

2.2 软件要求:版本匹配是王道

软件环境这块,说白了就是版本要匹配。我见过最惨的一次,是有人用JDK 11去跑Android 9的CTS,结果一堆测试报错,排查了两天才发现是JDK版本问题。

必须安装的软件:

软件 版本要求 备注
JDK JDK 8(1.8.0_201以上) Android 10及以下必须用JDK 8
Android SDK 最新稳定版 包含adb、fastboot等工具
Python Python 3.6+ CTS 11.0以后依赖Python 3
OpenGL 支持OpenGL ES 3.0+ 用于图形相关测试
小技巧: 我习惯在 ~/.bashrc 里设置 JAVA_HOME 和 ANDROID_HOME 环境变量。这样每次打开终端就不用重新设了。

2.3 下载CTS套件:选对版本很重要

CTS套件去哪下?官方渠道就一个:Android兼容性测试套件下载页面(需要谷歌账号登录)。

下载时要注意几点:

  • 选择与你的Android版本完全匹配的CTS版本。比如Android 12就用CTS 12.x,别混用。
  • 下载完整的CTS套件,包含所有测试用例和工具。别只下载部分模块。
  • 下载后校验SHA-256值。我吃过这个亏——下载过程中文件损坏,跑了一天才发现是套件本身有问题。

下载完成后,解压到你的工作目录:

unzip android-cts-12.0_r1-linux_x86-arm.zip -d ~/cts/
cd ~/cts/android-cts-12.0_r1/

解压后的目录结构大概是这样的:

android-cts-12.0_r1/
├── tools/          # 核心工具
├── testcases/      # 测试用例
├── repository/     # 测试计划
├── results/        # 测试结果
└── android-cts/    # 主程序

2.4 配置adb与fastboot:连接设备的桥梁

adb和fastboot是CTS测试的“手脚”。配置不好,后面寸步难行。

第一步:安装adb和fastboot

如果你已经安装了Android SDK,那这两个工具就在 $ANDROID_HOME/platform-tools/ 目录下。如果没有,可以单独安装:

sudo apt update
sudo apt install android-tools-adb android-tools-fastboot

第二步:配置udev规则

这一步很多人会忘。不配置的话,adb可能识别不到设备。

# 创建udev规则文件
sudo vim /etc/udev/rules.d/51-android.rules

# 添加你的设备厂商ID,比如Google设备:
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"

# 重新加载udev规则
sudo udevadm control --reload-rules
sudo udevadm trigger

第三步:验证adb连接

adb devices

如果看到设备列表里有你的设备,状态是“device”,那就对了。如果显示“unauthorized”,记得在设备上点“允许USB调试”。

重点: fastboot模式也要验证。重启设备到bootloader:adb reboot bootloader,然后执行 fastboot devices。如果能看到设备序列号,说明fastboot也配置好了。

2.5 环境验证:跑一个简单的测试试试水

环境搭好了,别急着跑全量测试。先验证一下环境是否正常。

验证步骤:

  1. 确认设备已解锁bootloader:fastboot oem device-info(不同厂商命令略有不同)
  2. 确认设备已连接Wi-Fi或移动网络。CTS很多测试需要网络。
  3. 确认设备屏幕常亮,且没有锁屏密码。
  4. 运行一个简单的测试模块试试:
cd ~/cts/android-cts-12.0_r1/
./tools/cts-tradefed run cts -m CtsOsTestCases -t android.os.cts.BuildVersionTest

这个测试只会检查系统版本号,跑得很快。如果它能通过,说明你的环境基本没问题。

我的经验: 第一次跑CTS,我建议先跑一个小的测试模块,比如CtsOsTestCases或CtsNetTestCases。全量测试动辄几十个小时,万一环境有问题,白白浪费时间。

如果测试失败,别慌。先看日志:

# 查看测试结果
ls results/latest/

# 查看详细日志
cat results/latest/test_result.xml | grep -A 10 "failed"

常见的失败原因无非就几种:adb版本不匹配、设备权限没给、网络不通。挨个排查就好。

警告: 千万别在测试过程中拔掉USB线。我有个同事就是这么干的,结果设备变砖了——虽然概率很小,但真发生过。

好了,环境搭好了,验证也通过了。下一章咱们就开始真正跑测试了。记住,环境搭建这一步稳了,后面就顺了。