3. CTS 测试环境搭建:Linux 环境准备、Android SDK/NDK 安装、CTS 工具下载与配置、adb 与 fastboot 配置
搭建稳定、可复现的 CTS 测试环境是 Camera HAL 开发与兼容性验证的第一步。本章将系统讲解从 Linux 操作系统准备到 adb/fastboot 工具链配置的完整流程,确保环境与 Google 官方 CTS 测试规范严格对齐。
3.1 Linux 环境准备
CTS 测试工具链原生运行于 Linux 环境,推荐使用 Ubuntu 20.04 LTS (x86_64) 或 Ubuntu 22.04 LTS。以下为环境准备的核心步骤:
⚠ 关键约束:CTS 不支持在虚拟机嵌套环境(如 WSL1)中直接运行 USB 设备透传。建议使用原生 Linux 双系统或具备完整 USB 3.0 直通能力的虚拟机(如 VMware Workstation / KVM)。
3.1.1 系统依赖安装
# 更新软件源
sudo apt update && sudo apt upgrade -y
# 安装 CTS 运行所需基础依赖
sudo apt install -y \
openjdk-11-jdk \
python3 \
python3-pip \
git \
unzip \
wget \
curl \
libc6-i386 \
lib32z1 \
lib32ncurses5 \
lib32stdc++6 \
usbutils \
pciutils
3.1.2 用户权限与 udev 规则
为保障 adb/fastboot 能够识别测试设备,需配置 udev 规则:
# 将当前用户加入 plugdev 组
sudo usermod -aG plugdev $USER
# 创建 udev 规则文件
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"' | \
sudo tee /etc/udev/rules.d/51-android.rules
# 重新加载 udev 规则
sudo udevadm control --reload-rules
sudo udevadm trigger
💡 提示:不同 OEM 设备的 idVendor 不同(如 Google 为 18d1,三星为 04e8,华为为 12d1)。建议在 udev 规则中同时添加多个常见 Vendor ID,或使用
lsusb 命令确认实际 VID。
3.2 Android SDK / NDK 安装
CTS 测试工具依赖 Android SDK 平台工具(adb、fastboot)以及 NDK 中的部分调试符号解析库。推荐使用 Android Studio 命令行工具 (commandlinetools) 进行安装。
3.2.1 安装命令行工具
# 下载最新 commandlinetools(Linux 版本)
wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip
unzip commandlinetools-linux-*.zip -d ~/android-sdk
# 创建目录结构
mkdir -p ~/android-sdk/cmdline-tools/latest
mv ~/android-sdk/cmdline-tools/* ~/android-sdk/cmdline-tools/latest/ 2>/dev/null || true
# 配置环境变量(写入 ~/.bashrc)
export ANDROID_HOME=$HOME/android-sdk
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools
export PATH=$PATH:$ANDROID_HOME/ndk-bundle
3.2.2 安装 SDK 与 NDK
# 使用 sdkmanager 安装必要组件
sdkmanager --install \
"platform-tools" \
"platforms;android-34" \
"build-tools;34.0.0" \
"ndk;27.0.12077973" \
"cmake;3.22.1"
| 组件 | 版本要求 | 用途 |
|---|---|---|
| platform-tools | ≥ 34.0.0 | 提供 adb、fastboot、logcat 等调试工具 |
| platforms;android-34 | API 34 | CTS 测试用例编译与运行的目标 SDK |
| build-tools;34.0.0 | 34.0.0 | aapt、zipalign 等构建工具 |
| ndk;27.0.12077973 | r27 | Camera HAL 原生库符号解析与 VTS 测试 |
⚠ 版本对齐:NDK 版本必须与 CTS 测试套件所依赖的 libc++_shared.so 版本匹配。版本不匹配会导致 VTS 测试中 Camera HAL 原生接口调用失败。
3.3 CTS 工具下载与配置
CTS 测试套件由 Google 通过 Android 兼容性测试套件下载页面 发布。Camera HAL 开发人员需同时下载 CTS 主套件 和 CTS Verifier。
3.3.1 下载 CTS 套件
# 创建 CTS 工作目录
mkdir -p ~/cts-work
cd ~/cts-work
# 下载 CTS 主套件(以 Android 14 为例)
wget https://dl.google.com/android/cts/android-cts-14.0_r1-linux_x86-arm.zip
# 下载 CTS Verifier
wget https://dl.google.com/android/cts/android-cts-verifier-14.0_r1-linux_x86-arm.zip
# 解压
unzip android-cts-14.0_r1-linux_x86-arm.zip
unzip android-cts-verifier-14.0_r1-linux_x86-arm.zip
3.3.2 目录结构说明
android-cts/
├── android-cts/
│ ├── repository/ # 测试用例 APK 与配置文件
│ ├── testcases/ # 测试计划与测试模块定义
│ ├── tools/ # cts-tradefed 运行器
│ ├── logs/ # 测试日志输出目录
│ └── results/ # 测试结果 XML 与报告
├── android-cts-verifier/
│ ├── CtsVerifier.apk # 手动测试 APK
│ └── media/ # 测试媒体文件(Camera 测试必备)
3.3.3 配置 CTS 运行参数
# 编辑 cts-tradefed 配置文件
cd ~/cts-work/android-cts/tools
./cts-tradefed help # 验证工具可执行
# 设置测试设备序列号(可选,多设备时必设)
export ANDROID_SERIAL=0123456789ABCDEF
📌 Camera HAL 专项配置:在
android-cts/repository/testcases/CameraTestCases.xml 中,可以按需启用/禁用特定 Camera 测试模块。例如,仅运行 Camera 基础功能测试:--module CtsCameraTestCases。
3.4 adb 与 fastboot 配置
adb 和 fastboot 是 CTS 测试与设备交互的核心桥梁。Camera HAL 开发中,adb 用于推送测试 APK、抓取 logcat 日志、模拟 Camera 输入事件;fastboot 用于刷写系统镜像与恢复设备状态。
3.4.1 验证工具安装
# 检查 adb 版本(需 ≥ 34.0.0)
adb --version
# 检查 fastboot 版本
fastboot --version
# 启动 adb 服务
adb start-server
# 列出已连接设备
adb devices -l
3.4.2 设备连接与授权
首次连接测试设备时,需在设备屏幕上确认 USB 调试授权。Camera HAL 测试建议使用 userdebug 或 eng 版本 的系统镜像,以获得完整的 root 权限与 SELinux 宽容模式。
# 确认设备处于 adb 模式
adb get-state # 应输出 "device"
# 获取设备 root 权限(userdebug 版本)
adb root
adb remount
# 设置 SELinux 为宽容模式(Camera HAL 调试常用)
adb shell setenforce 0
3.4.3 fastboot 模式验证
# 重启到 bootloader
adb reboot bootloader
# 确认 fastboot 识别设备
fastboot devices
# 刷写 boot 镜像(示例,需替换为实际镜像路径)
fastboot flash boot boot.img
# 重启设备
fastboot reboot
💡 调试技巧:Camera HAL 开发中,建议在
~/.android/adb_usb.ini 中添加设备 Vendor ID,避免 adb 因 USB 枚举超时而丢失设备连接。格式:每行一个 0x 开头的 4 位十六进制 VID。
3.5 环境验证与常见问题
完成上述配置后,建议执行一次快速环境验证,确保所有组件协同工作。
3.5.1 环境验证清单
| 验证项 | 命令 | 预期结果 |
|---|---|---|
| Java 版本 | java -version |
OpenJDK 11.0.x |
| adb 连接 | adb devices |
设备状态为 "device" |
| fastboot 连接 | fastboot devices |
显示设备序列号 |
| CTS 工具可执行 | ./cts-tradefed version |
显示版本号与构建时间 |
| Camera 测试模块 | ./cts-tradefed list modules | grep Camera |
列出 Camera 相关测试模块 |
3.5.2 常见问题与解决
- adb 设备显示 "unauthorized":检查设备屏幕 USB 调试授权弹窗,重新插拔 USB 线,或执行
adb kill-server && adb start-server。 - fastboot 无法识别设备:确认 udev 规则已生效,尝试使用不同 USB 端口(优先 USB 2.0),或更新 fastboot 版本。
- CTS 运行报 "No tests found":检查 CTS 套件解压完整性,确认
repository/testcases目录下存在 CameraTestCases.apk。 - Camera HAL 测试闪退:检查 logcat 中 CameraService 的 crash 堆栈,确认 SELinux 策略是否阻止了 HAL 接口调用。
⚠ 重要提醒:CTS 测试环境搭建完成后,建议对整个工作目录进行快照或备份。Camera HAL 开发过程中频繁刷机与测试,一个干净的基线环境可以大幅缩短问题排查时间。