1. CTS测试环境搭建
本章涵盖搭建CTS兼容性测试环境所需的核心步骤:AOSP编译环境、CTS套件获取、adb/fastboot配置及测试设备初始化。环境正确性是CTS测试通过的基础,任何环节的疏漏都可能导致测试失败或误判。
环境概览:本章搭建的环境将用于后续章节的CTS测试执行、结果分析及稳定性优化。建议使用专用物理机或高性能虚拟机,避免在开发笔记本上直接运行CTS全量测试。
1.1 搭建AOSP编译环境
AOSP编译环境是CTS套件正确运行的前提,因为部分测试用例依赖系统镜像的签名与编译配置。以下为Ubuntu 22.04 LTS上的标准搭建流程。
1.1.1 系统依赖安装
sudo apt-get update
sudo apt-get install -y git-core gnupg flex bison build-essential \
zip curl zlib1g-dev libc6-dev-i386 libncurses5-dev x11proto-core-dev \
libx11-dev libgl1-mesa-dev libxml2-utils xsltproc unzip libssl-dev \
python3 python3-pip openjdk-11-jdk
| 依赖项 | 用途 | 最低版本 |
|---|---|---|
| git-core | 源码版本管理 | 2.25+ |
| openjdk-11-jdk | AOSP编译Java环境 | 11.0 |
| python3 | repo工具及构建脚本 | 3.8+ |
| libncurses5-dev | 终端UI库 | 5.9+ |
1.1.2 Repo工具初始化与源码同步
mkdir ~/aosp && cd ~/aosp
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
export PATH=~/bin:$PATH
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
repo init -u https://android.googlesource.com/platform/manifest -b android-14.0.0_r30
repo sync -j$(nproc) -c
带宽与磁盘警告:首次repo sync下载量约80-120GB,耗时30分钟至数小时不等。确保至少有300GB空闲磁盘空间,并使用稳定的有线网络。
1.1.3 编译环境验证
source build/envsetup.sh
lunch aosp_arm64-userdebug
make -j$(nproc) 2>&1 | tee build.log
编译成功后在 out/target/product/ 下生成系统镜像文件。验证关键文件是否存在:
ls -lh out/target/product/generic_arm64/*.img
1.2 下载CTS套件
CTS套件可从AOSP官方网站或本地编译产物中获取。推荐使用官方预编译版本以确保测试一致性。
1.2.1 下载地址与版本选择
- 官方下载页面:
https://source.android.com/docs/compatibility/cts/downloads - 推荐版本:与目标AOSP分支对应的CTS版本(如android-14.0_r30对应CTS 14.0 R2)
- 文件格式:
android-cts-14.0_r2-linux_x86-arm.zip
1.2.2 解压与目录结构
wget https://dl.google.com/dl/android/cts/android-cts-14.0_r2-linux_x86-arm.zip
unzip android-cts-14.0_r2-linux_x86-arm.zip -d ~/cts
cd ~/cts/android-cts/
ls -l
解压后的目录结构应包含:
android-cts/
├── tools/ # CTS运行脚本
├── testcases/ # 测试用例APK与数据
├── repository/ # 测试结果存放
├── plans/ # 测试计划XML
└── android-cts.zip # 测试套件包
1.3 配置adb与fastboot
adb和fastboot是CTS与设备交互的核心工具。错误的版本或配置会导致设备无法识别或测试异常中断。
1.3.1 驱动与权限配置(Linux)
# 创建udev规则文件
sudo vi /etc/udev/rules.d/51-android.rules
# 写入以下内容
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"
# 添加更多设备厂商ID(如Google:18d1, HTC:0bb4, Samsung:04e8等)
# 重新加载udev规则
sudo udevadm control --reload-rules
sudo udevadm trigger
1.4.2 版本验证与更新
adb --version
# 输出应为:Android Debug Bridge version 1.0.41 或更高
fastboot --version
# 输出应为:fastboot version 35.0.0 或更高
# 若版本过低,从SDK Manager更新:
sdkmanager "platform-tools"
1.4.3 连接测试
adb devices
# 应列出设备序列号及状态 device
fastboot devices
# 应在bootloader模式下显示设备序列号
1.4 初始化测试设备
测试设备必须处于出厂重置后的干净状态,并刷写与CTS版本匹配的userdebug镜像。
1.4.1 设备刷写流程
# 进入bootloader
adb reboot bootloader
# 刷写系统镜像(使用AOSP编译产物或官方出厂镜像)
fastboot flashall -w
# 重启设备
fastboot reboot
1.4.2 开发者选项与调试设置
# 启用开发者选项:设置 > 关于手机 > 连续点击版本号7次
# 打开USB调试
# 开启“保持唤醒”和“禁用ADB授权超时”
# 命令行设置部分选项:
adb shell settings put global development_settings_enabled 1
adb shell settings put global adb_enabled 1
adb shell settings put global stay_on_while_plugged_in 3
1.4.3 设备状态检查清单
| 检查项 | 要求 | 验证命令 |
|---|---|---|
| 安全补丁级别 | 与CTS版本匹配 | adb shell getprop ro.build.version.security_patch |
| 编译类型 | userdebug | adb shell getprop ro.build.type |
| 已启用USB调试 | 是 | adb shell settings get global adb_enabled |
| 屏幕超时 | 30分钟或永不 | adb shell settings get system screen_off_timeout |
| 无锁屏密码 | 无/滑动解锁 | adb shell locksettings 确认无密码 |
常见错误:
- 设备未授权:尝试
adb kill-server后重新插拔USB,并确认设备上出现了RSA授权弹窗。 - fastboot闪退:检查USB 2.0端口,部分主板USB 3.0兼容性问题会导致fastboot通信中断。
- repo sync中断:使用
repo sync --force-sync --no-clone-bundle -j4继续同步。
1.5 环境验证流程图
以下SVG展示了从环境搭建到设备初始化的完整流程与关键决策点。
1.6 常见错误与调试
- adb devices 显示 offline:重新插拔USB,或在设备上撤销USB调试授权后重新连接。
- fastboot 无法识别设备:检查
lsusb输出中设备VID/PID是否已加入udev规则。 - CTS测试无法启动:确认
adb shell getprop ro.build.fingerprint版本与CTS计划匹配。 - 编译错误:No rule to make target:执行
make clean后重新source build/envsetup.sh && lunch。
性能与优化建议:
- 使用
ccache加速AOSP重复编译:export USE_CCACHE=1 && ccache -M 50G - 将
out/目录放在SSD上,可减少30%以上编译时间。 - CTS套件解压后约15-25GB,建议存放在
~/.cts/并创建符号链接。
课程实践建议:建议搭建一台Ubuntu 22.04 LTS虚拟机,配置8核CPU、32GB内存、200GB SSD磁盘,作为CTS测试专用环境。全流程操作一遍后,记录各步骤耗时,便于后续环境复现时做时间估算。