2. 测试环境搭建:Android CTS环境要求、高通平台专用配置、adb与fastboot工具链准备
搭建一个符合高通Camera项目兼容性验证要求的CTS测试环境,是后续故障排查的基础。本章从硬件资源、软件版本、高通专用配置以及工具链四个维度,梳理环境搭建的关键步骤与避坑要点。
2.1 Android CTS环境硬件与软件基线
CTS(Compatibility Test Suite)对测试主机与设备有明确的基线要求,偏离基线可能导致测试结果不可复现或误判。
| 资源类型 | 最低要求 | 推荐配置(高通Camera项目) |
|---|---|---|
| 主机操作系统 | Ubuntu 18.04 LTS 64-bit | Ubuntu 22.04 LTS 或 20.04 LTS |
| 主机内存 | 16 GB RAM | 32 GB RAM(并行跑多个子模块) |
| 主机磁盘 | 100 GB 空闲空间 | 500 GB SSD(存放多个版本的CTS与日志) |
| JDK版本 | OpenJDK 11 | OpenJDK 11(CTS 12+ 需 JDK 17) |
| Python版本 | Python 3.6+ | Python 3.8 ~ 3.10 |
| 设备Android版本 | Android 10+ | 与CTS版本匹配的Android 12/13/14 |
| 设备USB接口 | USB 2.0 | USB 3.0 Type-A 或 Type-C(直连,避免HUB) |
经验提示: 高通Camera项目通常需要同时运行
cts-tradefed 与 camera ITS 测试,建议主机内存不低于32 GB,否则在跑 --shard 并行分片时容易触发OOM。
2.2 高通平台专用配置
高通平台的CTS测试除了标准CTS流程外,还需要额外配置HAL层接口、权限白名单以及特定的系统属性。以下配置项直接影响Camera相关测试用例的通过率。
2.2.1 系统属性配置
在设备端通过 adb shell setprop 或写入 build.prop 的方式,确保以下属性生效:
# 启用Camera HAL3接口(必须)
persist.vendor.camera.HAL3.enabled=1
# 关闭Camera服务降级(避免CTS误判)
persist.vendor.camera.disable_zsl_mode=0
# 设置CTS测试专用权限白名单
persist.vendor.camera.cts_whitelist=1
# 高通平台专用:强制使用原生HAL实现
persist.vendor.camera.force_native_hal=1
常见陷阱: 部分高通平台在user版本中会默认关闭
persist.vendor.camera.HAL3.enabled,导致Camera CTS用例全部以 NotSupported 或 Fail 结束。务必在刷机后通过 adb shell getprop 确认该属性值为 1。
2.2.2 SELinux策略与权限
CTS测试中Camera相关用例需要访问 /dev/video*、/data/misc/camera 以及 /vendor/lib/hw/camera.*.so。高通平台建议在 sepolicy 中预置以下规则:
# 允许CTS测试进程访问Camera设备节点
allow cts_test camera_device:chr_file rw_file_perms;
allow cts_test camera_prop:property_service set;
# 允许读取Camera HAL库
allow cts_test hal_camera:file read;
# 高通专用:允许访问ISP统计节点
allow cts_test msm_isp:file rw_file_perms;
2.3 adb与fastboot工具链准备
adb和fastboot是CTS测试中最频繁使用的工具,版本不匹配或路径混乱会导致设备识别失败、刷机中断、日志抓取不全等问题。
2.3.1 工具版本要求
| 工具 | 最低版本 | 推荐版本 | 获取方式 |
|---|---|---|---|
| adb | 1.0.41 | 1.0.43+(Android SDK Platform-Tools 34+) | SDK Manager / 手动下载 |
| fastboot | 1.0.0 | 1.0.0-34+ | SDK Manager / 手动下载 |
| aapt2 | 8.0+ | 8.3+ | SDK Build-Tools |
2.3.2 环境变量配置
将adb和fastboot所在目录添加到 PATH,并确保优先级高于系统自带的旧版本:
# 编辑 ~/.bashrc 或 ~/.zshrc
export ANDROID_HOME=$HOME/Android/Sdk
export PATH=$ANDROID_HOME/platform-tools:$PATH
export PATH=$ANDROID_HOME/tools:$PATH
export PATH=$ANDROID_HOME/tools/bin:$PATH
# 立即生效
source ~/.bashrc
# 验证版本
adb --version
fastboot --version
2.3.3 设备连接与授权
高通Camera项目在CTS测试前,必须确保设备已正确授权并处于可识别状态:
- 使用USB直连主机,避免通过HUB或延长线。
- 在设备上开启 开发者选项 和 USB调试。
- 执行
adb devices,确认设备状态为device而非unauthorized。 - 若设备为user版本,需先执行
adb root确认是否支持root权限;若不支持,需刷入userdebug或eng版本。 - 执行
adb shell getprop ro.build.type确认构建类型为userdebug或eng。
高通平台特殊检查: 执行
adb shell ls -l /dev/video*,确认Camera设备节点存在且权限为 crw-rw----。若节点缺失或权限错误,Camera HAL无法初始化,CTS测试将直接失败。
2.4 环境验证流程图
以下SVG图展示了从主机准备到设备验证的完整流程,帮助快速定位环境搭建中的断点。
2.5 常见环境问题速查表
| 现象 | 可能原因 | 解决措施 |
|---|---|---|
adb devices 显示 unauthorized |
设备未授权USB调试 | 重新插拔USB,在设备上确认RSA指纹 |
adb root 返回 adbd cannot run as root in production builds |
设备为user版本 | 刷入userdebug或eng版本镜像 |
Camera CTS全部返回 NotSupported |
persist.vendor.camera.HAL3.enabled 未设置 |
通过 adb shell setprop 设置并重启 |
| CTS运行中设备频繁断开 | USB线缆质量差或供电不足 | 更换原装USB线缆,使用主机背板接口 |
fastboot devices 无输出 |
fastboot驱动未安装或版本过旧 | 更新platform-tools,检查USB驱动 |
最佳实践: 建议在开始CTS测试前,编写一个简单的环境自检脚本,依次检查JDK版本、adb版本、设备连接状态、关键系统属性以及Camera节点权限。将检查结果输出到日志文件,便于后续故障排查时回溯环境状态。