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-jdkAOSP编译Java环境11.0
python3repo工具及构建脚本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
编译类型userdebugadb 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展示了从环境搭建到设备初始化的完整流程与关键决策点。
CTS测试环境搭建流程 搭建AOSP编译环境 安装依赖 + repo sync 编译系统镜像 make -j$(nproc) lunch 下载CTS套件 官方预编译包 解压与目录验证 检查 testcases/tools 配置adb与fastboot 驱动 + 版本验证 刷写设备镜像 fastboot flashall -w 设备初始化设置 开发者选项 + 无锁屏 验证通过? 环境就绪 → 执行CTS AOSP编译环境为CTS提供 可信的系统镜像与签名 adb/fastboot版本需与 测试设备Android版本一致 虚线回流:环境检查失败时 返回AOSP编译或设备刷写

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测试专用环境。全流程操作一遍后,记录各步骤耗时,便于后续环境复现时做时间估算。