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 安装与配置步骤
- 更新软件源并安装OpenJDK:
sudo apt update sudo apt install openjdk-11-jdk -y - 验证安装版本:
java -version javac -version - 设置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 - 验证环境变量:
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测试环境的整体架构与各组件之间的协作关系:
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冲突。