2. CTS环境准备:Linux服务器搭建、JDK/SDK/ADB/Fastboot环境配置

CTS(Compatibility Test Suite)测试环境是Android设备认证的基础设施。一个稳定、纯净的Linux服务器环境能够确保测试结果的可复现性,避免因环境差异导致的误判。本节将系统讲解从零搭建CTS测试服务器的完整流程,涵盖操作系统选型、JDK/SDK配置、ADB与Fastboot工具链部署等关键环节。

2.1 硬件与操作系统选型

CTS测试对计算资源有一定要求,尤其是大规模并发测试场景。推荐配置如下:

组件 最低配置 推荐配置 说明
CPU 4核 x86_64 8核及以上 多线程测试并行执行
内存 8 GB 16 GB 或更高 CTS套件加载与日志缓存
磁盘 100 GB HDD 500 GB SSD 存储CTS包、测试结果与日志
操作系统 Ubuntu 18.04 LTS Ubuntu 20.04 / 22.04 LTS 官方推荐Linux发行版
选型建议: 优先使用Ubuntu 20.04 LTS(64位),该版本对JDK 11/17、Android SDK工具链的兼容性最佳。避免使用Windows或macOS作为CTS主服务器,因为部分脚本依赖Linux shell环境。

2.2 JDK环境配置

Android CTS依赖Java运行环境。不同Android版本对JDK版本有明确要求,错误版本会导致测试框架启动失败。

2.2.1 版本对应关系

Android版本 API Level 所需JDK版本 备注
Android 10 (Q) 29 JDK 11 OpenJDK 11 或 Oracle JDK 11
Android 11 (R) 30 JDK 11 推荐使用OpenJDK
Android 12 (S) 31 JDK 11 或 JDK 17 CTS 12+ 支持JDK 17
Android 13 (T) 33 JDK 17 必须使用JDK 17

2.2.2 安装与配置步骤

  1. 更新软件源并安装OpenJDK:
    sudo apt update
    sudo apt install openjdk-11-jdk -y
  2. 验证安装版本:
    java -version
    javac -version
  3. 设置JAVA_HOME环境变量:
    # 查找JDK安装路径
    sudo update-alternatives --config java
    # 编辑 ~/.bashrc 或 /etc/profile
    export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
    export PATH=$JAVA_HOME/bin:$PATH
    # 使配置生效
    source ~/.bashrc
  4. 验证环境变量:
    echo $JAVA_HOME
    java -version
常见错误: 如果系统同时安装了多个JDK版本,务必通过 update-alternatives 设置默认版本。CTS启动时若报错 Unsupported class file major version,通常是因为JDK版本不匹配。

2.3 Android SDK与Platform Tools安装

SDK Manager负责管理Android SDK组件,而Platform Tools包含ADB、Fastboot等核心调试工具。

2.3.1 下载与解压

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

# 下载命令行工具(以Linux版本为例)
wget https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip
unzip commandlinetools-linux-*.zip
mv cmdline-tools latest
mkdir -p cmdline-tools
mv latest cmdline-tools/

# 设置环境变量
export ANDROID_HOME=~/Android/Sdk
export PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$PATH
export PATH=$ANDROID_HOME/platform-tools:$PATH

2.3.2 安装必要SDK组件

# 查看可用包列表
sdkmanager --list

# 安装核心组件
sdkmanager "platform-tools" "platforms;android-33" "build-tools;33.0.2"

# 接受许可协议
sdkmanager --licenses
组件名称 用途 是否必需
platform-tools ADB、Fastboot、dmtracedump等 是
platforms;android-33 Android 13系统映像与API库 按测试目标版本选择
build-tools;33.0.2 aapt、zipalign、apksigner等 是(用于签名与对齐)

2.4 ADB与Fastboot配置

ADB(Android Debug Bridge)和Fastboot是CTS测试中与设备交互的核心工具。正确配置USB权限和工具路径是测试成功的前提。

2.4.1 工具路径确认

# 验证ADB版本
adb version
# 输出示例:Android Debug Bridge version 1.0.41

# 验证Fastboot版本
fastboot --version
# 输出示例:fastboot version 33.0.3

2.4.2 USB设备权限配置

Linux系统默认不允许非root用户直接访问USB设备。需要配置udev规则:

# 创建udev规则文件
sudo vim /etc/udev/rules.d/51-android.rules

# 添加以下内容(以Google VID为例)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"

# 重新加载udev规则
sudo udevadm control --reload-rules
sudo udevadm trigger

# 将当前用户加入plugdev组
sudo usermod -a -G plugdev $USER
常用厂商VID列表:
  • Google: 18d1
  • Samsung: 04e8
  • Xiaomi: 2717
  • Qualcomm: 05c6
  • MediaTek: 0e8d
可通过 lsusb 命令查看实际VID。

2.4.3 ADB服务启动与设备连接验证

# 启动ADB服务
adb start-server

# 列出已连接设备
adb devices
# 输出示例:
# List of devices attached
# 0123456789ABCDEF    device

# 如果设备显示 "unauthorized",需要在设备上确认USB调试授权

2.5 环境验证与常见问题排查

完成上述配置后,建议执行一次完整的环境验证脚本,确保所有组件正常工作。

2.5.1 环境验证清单

检查项 验证命令 预期结果
JDK版本 java -version 显示OpenJDK 11或17
JAVA_HOME echo $JAVA_HOME 指向JDK安装路径
ADB可用性 adb version 显示版本号
Fastboot可用性 fastboot --version 显示版本号
设备连接 adb devices 显示设备序列号与状态
SDK路径 echo $ANDROID_HOME 指向SDK根目录

2.5.2 常见问题与解决方案

  • ADB设备显示 "offline": 重新插拔USB线,或执行 adb kill-server 后重新 adb start-server。
  • Fastboot无法识别设备: 确认设备已进入Fastboot模式(音量减+电源键),检查udev规则是否生效。
  • SDK Manager下载失败: 检查网络代理设置,或手动下载SDK包后解压到对应目录。
  • Java版本冲突: 使用 update-alternatives --config java 切换默认JDK版本。

2.6 环境架构总览

下图展示了CTS测试环境的整体架构与各组件之间的协作关系:

CTS测试环境架构图 CTS测试环境架构总览 Linux 主机环境 JDK 11/17 Android SDK ADB Fastboot CTS 测试套件 (TradeFed) Android 设备层 Android 设备 (DUT - 被测设备) HAL 实现层 Camera / Audio / Sensors Linux Kernel Driver / V4L2 / ION ADB 负责应用层通信与日志采集,Fastboot 负责刷机与分区操作

2.7 环境持久化配置

为避免每次登录都需要重新设置环境变量,建议将以下配置写入用户配置文件:

# 编辑 ~/.bashrc 或 ~/.profile
cat >> ~/.bashrc << 'EOF'

# Java环境
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH

# Android SDK环境
export ANDROID_HOME=$HOME/Android/Sdk
export PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$PATH
export PATH=$ANDROID_HOME/platform-tools:$PATH
export PATH=$ANDROID_HOME/build-tools/33.0.2:$PATH

# ADB别名(可选)
alias adb-start='adb start-server'
alias adb-kill='adb kill-server'
alias adb-devices='adb devices'
EOF

# 立即生效
source ~/.bashrc
进阶建议: 对于团队共享的CTS服务器,建议将环境配置写入 /etc/profile.d/android.sh,使所有用户自动继承环境变量。同时,使用 adb usb 命令将ADB切换为USB模式,避免与无线ADB冲突。