2. CTS测试环境搭建

CTS(Compatibility Test Suite)兼容性测试套件的运行依赖于一套严格且标准化的主机环境。环境配置的准确性直接决定了测试能否顺利启动、测试结果是否可信。本章节将按照“操作系统 → 基础运行时 → 工具链 → 测试套件”的递进顺序,详细拆解 CTS 测试环境的搭建全流程。

核心原则:CTS 测试环境必须保持 洁净、隔离、版本锁定。建议使用独立的 Linux 物理机或虚拟机,避免与日常开发环境混合,防止 JDK/SDK 版本冲突导致测试异常。

2.1 Linux 环境配置

Google 官方推荐使用 Ubuntu 18.04 LTS (64-bit) 或 Ubuntu 20.04 LTS (64-bit) 作为 CTS 测试的主机操作系统。其他 Linux 发行版(如 Debian、CentOS)亦可使用,但需自行解决依赖库兼容性问题。

2.1.1 基础依赖包安装

在全新安装的 Ubuntu 系统中,首先需要安装 CTS 运行所必需的系统库和工具。打开终端,执行以下命令:

sudo apt-get update
sudo apt-get install -y \
    git-core \
    gnupg \
    flex \
    bison \
    build-essential \
    zip \
    curl \
    zlib1g-dev \
    libc6-dev-i386 \
    libncurses5 \
    libncurses5-dev \
    x11proto-core-dev \
    libx11-dev \
    lib32z1-dev \
    libgl1-mesa-dev \
    libxml2-utils \
    xsltproc \
    unzip \
    fontconfig
提示:如果使用 Ubuntu 20.04 或更高版本,libncurses5 可能已被 libncurses6 替代。若安装失败,请尝试 sudo apt-get install libncurses6。

2.1.2 用户权限与 USB 配置

CTS 测试需要主机通过 USB 连接 Android 设备。必须将当前用户加入 plugdev 组,并配置 udev 规则,否则 adb devices 将无法识别设备。

# 将当前用户加入 plugdev 组
sudo usermod -aG plugdev $USER

# 创建并编辑 udev 规则文件
sudo vi /etc/udev/rules.d/51-android.rules

在文件中添加以下内容(以 Google 设备为例,其他厂商 VID 请查阅官方文档):

# Google Nexus / Pixel 设备
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"
# 通用规则(允许所有 USB 设备被 plugdev 组访问)
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0666", GROUP="plugdev"
# 重新加载 udev 规则并重启服务
sudo udevadm control --reload-rules
sudo service udev restart

# 重新登录使组权限生效
exit
Linux 环境配置流程 安装依赖包 配置用户组 编写 udev 规则 重载规则 关键检查点:执行 adb devices 应能列出已连接的设备,且状态为 device。 若显示 unauthorized,需在设备屏幕上确认 USB 调试授权。

2.2 JDK 与 SDK 安装

CTS 测试工具基于 Java 开发,且依赖 Android SDK 提供的 adb、fastboot 等工具。JDK 和 SDK 的版本选择必须严格遵循 CTS 版本要求。

2.2.1 JDK 版本选择与安装

CTS 版本 推荐 JDK 版本 说明
Android 9 (Pie) 及以下 OpenJDK 8 官方强制要求,使用 OpenJDK 8u
Android 10 (Q) 及以上 OpenJDK 11 推荐使用 OpenJDK 11 LTS
Android 13 (T) 及以上 OpenJDK 17 部分新测试模块需要 JDK 17 支持

以 Ubuntu 20.04 + Android 12 CTS 为例,安装 OpenJDK 11:

# 安装 OpenJDK 11
sudo apt-get install -y openjdk-11-jdk

# 验证安装
java -version
# 预期输出:openjdk version "11.0.xx" 202x-xx-xx LTS

# 设置 JAVA_HOME 环境变量(写入 ~/.bashrc)
echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
警告:不要在同一台主机上同时安装多个 JDK 版本并随意切换 PATH。CTS 运行期间,JAVA_HOME 必须指向正确的 JDK 路径。错误的 JDK 版本会导致 java.lang.UnsupportedClassVersionError 等运行时异常。

2.2.2 Android SDK 安装与配置

推荐使用 Android Studio 内置的 SDK Manager 进行安装,或直接下载 Command Line Tools 进行无 GUI 安装。以下为命令行安装方式:

# 1. 创建 SDK 目录
mkdir -p ~/Android/Sdk
cd ~/Android/Sdk

# 2. 下载 Command Line Tools(以 Linux 平台为例)
wget https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip
unzip commandlinetools-linux-*.zip
rm commandlinetools-linux-*.zip

# 3. 安装必要的 SDK 组件
cd cmdline-tools/bin
./sdkmanager --sdk_root=~/Android/Sdk "platform-tools" "platforms;android-33" "build-tools;33.0.0"

# 4. 设置环境变量
echo 'export ANDROID_HOME=~/Android/Sdk' >> ~/.bashrc
echo 'export PATH=$ANDROID_HOME/platform-tools:$ANDROID_HOME/cmdline-tools/latest/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

# 5. 验证 adb 是否可用
adb version
JDK 与 SDK 安装架构 Ubuntu 20.04 LTS 主机 OpenJDK 11 (JAVA_HOME) Android SDK (ANDROID_HOME) platform-tools platforms build-tools

2.3 CTS 工具包下载与解压

CTS 工具包由 Google 官方发布,与 Android 版本一一对应。下载时必须选择与待测设备 Android 版本 完全匹配 的 CTS 包。

2.3.1 下载 CTS 包

CTS 包可以从 AOSP 官方站点 或 Google 开发者网站 获取。以 Android 12 (API 31) 为例:

# 创建 CTS 工作目录
mkdir -p ~/cts-testing
cd ~/cts-testing

# 下载 CTS 包(示例链接,实际使用时请替换为最新版本)
wget https://dl.google.com/dl/android/cts/android-cts-12_r10-linux_x86-arm.zip

# 下载对应的媒体文件(可选,用于测试音视频解码)
wget https://dl.google.com/dl/android/cts/android-cts-media-12_r10.zip
提示:CTS 包命名规则为 android-cts-{版本号}_r{修订号}-linux_x86-arm.zip。其中 arm 表示包含 ARM 架构的测试用例,x86 版本仅包含 x86 架构用例。对于绝大多数 Android 设备,请下载 arm 版本。

2.3.2 解压与目录结构

# 解压 CTS 主包
unzip android-cts-12_r10-linux_x86-arm.zip

# 解压媒体文件(解压后放入 cts 目录下的 media 文件夹)
unzip android-cts-media-12_r10.zip -d android-cts/media/

# 查看解压后的目录结构
ls -la android-cts/

解压后的 android-cts 目录应包含以下核心子目录:

目录/文件 说明
tools/ CTS 测试执行器(cts-tradefed)、测试计划、结果解析工具
testcases/ 所有测试用例的二进制文件、APK 和配置文件
android-cts/ CTS 测试框架的 Java 库和依赖
media/ 媒体测试所需的音视频素材(需手动下载并解压)
repository/ 测试结果仓库,用于存储历史测试记录
README.html CTS 版本说明和快速入门指南

2.3.3 验证环境完整性

在首次运行 CTS 之前,执行以下快速验证脚本,确保所有依赖就绪:

# 进入 CTS 工具目录
cd ~/cts-testing/android-cts

# 检查 Java 环境
java -version

# 检查 adb 连接
adb devices

# 运行 CTS 内置的环境检查命令
./tools/cts-tradefed help

# 如果上述命令均正常输出,说明环境搭建成功
CTS 工具包目录结构 android-cts/ tools/ testcases/ android-cts/ media/ repository/ 关键文件路径: • 测试执行器:android-cts/tools/cts-tradefed • 测试计划目录:android-cts/tools/(.xml 格式)
环境搭建检查清单:
  • ✅ Linux 系统已安装所有基础依赖包
  • ✅ 当前用户已加入 plugdev 组,udev 规则已生效
  • ✅ java -version 输出正确的 JDK 版本
  • ✅ JAVA_HOME 环境变量已设置且指向正确路径
  • ✅ ANDROID_HOME 环境变量已设置,adb 命令可用
  • ✅ CTS 包已下载并解压到指定工作目录
  • ✅ 媒体文件已解压到 android-cts/media/ 目录
  • ✅ adb devices 能识别待测设备且状态为 device