本页包含有关设置和运行 CTS 验证程序 (CTS-V) 主机端 Android 16 QPR2 和 Android 17 测试的说明。主机端测试分为两种:多设备测试(在 Android 17 之前推出)和交互式测试(Android 17 中新增):
- 多设备测试是完全自动化的测试。
- 交互式测试是半自动化测试,需要您在被测设备 (DUT) 上执行一些手动步骤。
除了新的交互式测试之外,我们还转换了手动测距精度和电信测试,使其成为主机端多设备测试,并且现在需要进行 Wi-Fi 连接测试。
设置主机端测试
请按照以下步骤设置主机端测试(多设备测试需要进行额外设置):
- 验证您的桌面设备是否满足 CTS 的操作系统要求。
- 按照安装桌面软件中的第 2 步和第 5 步操作,以安装并验证 adb、AAPT2 和 Python 是否已正确安装在您的桌面上。
- 您的 Python 版本应为 3.11 或更高版本。如需确定您的 Python 版本,请运行
python3 --version。如果版本低于 3.11,请安装最新的正式版 Python。 如需了解详情,请参阅python.org的下载部分。 - 某些测试要求主机具有 Python
venv模块。在 Debian 和 Ubuntu 系统上,此模块可能未默认安装。如需确定您的 Python 版本是否具有venv模块,请运行python3 -m venv venv。如果此命令失败,系统会显示一条错误消息。 按照提示安装python3.x-venv软件包。
- 您的 Python 版本应为 3.11 或更高版本。如需确定您的 Python 版本,请运行
如果您仅运行主机端互动测试,请继续执行运行主机端测试。不过,如果您想运行多设备测试,请继续执行设置主机端多设备测试。
设置主机端多设备测试
请按照以下步骤设置主机端多设备测试:
- 验证您的桌面设备是否满足 CTS 的操作系统要求。
按照安装桌面软件中的第 2 步和第 5 步操作,以安装并验证 adb、AAPT2 和 Python 是否已正确安装在您的桌面上。
- 您的 Python 版本应为 3.11 或更高版本。如需确定您的 Python 版本,请运行
python3 --version。如果版本低于 3.11,请安装最新的正式版 Python。 如需了解详情,请参阅python.org的下载部分。 - 某些测试要求主机具有 Python
venv模块。在 Debian 和 Ubuntu 系统上,此模块可能未默认安装。如需确定您的 Python 版本是否具有venv模块,请运行python3 -m venv venv。如果此命令失败,系统会显示一条错误消息。 按照提示安装python3.x-venv软件包。
- 您的 Python 版本应为 3.11 或更高版本。如需确定您的 Python 版本,请运行
准备两部匹配的 DUT,且每部都已设置 CTS-V。
前往相应测试类型的设置部分:
- 对于 NFC 测试,请参阅设置 NFC 测试。
- 如需进行 Wi-Fi AP 连接测试,请参阅设置 Wi-Fi AP 连接测试。
- 如需进行测距精度测试,请参阅设置测距精度测试。
- 如需测试 CDM 模块,请先参阅设置标准的两设备测试,然后参阅设置 CDM 测试。
如果您的测试未在此列表中,请继续执行设置标准的两设备测试。
设置 NFC 测试
NFC 测试使用一部 DUT 和一个 PN532 NFC 芯片。
如需设置 NFC 测试,请执行以下操作:
- 购买 PN532 NFC 芯片。我们建议使用 All-In-One PN532。
- 在 DUT 上,前往设置应用。
- 启用 NFC。
放置 NFC 芯片:
对于手机,请将 DUT 的 NFC 读取器放置在图 1 所示位置:

图 1. NFC 芯片位置。
对于其他设备类型,请将该芯片放置在设备的 NFC 天线旁边。
使用 USB 线将 PN532 NFC 芯片连接到测试工作站。
设置 Wi-Fi AP 连接测试
Wi-Fi 接入点 (AP) 连接测试 (CtsWifiConnectionTests) 用于测试 DUT 与 AP 之间的连接。您可以通过以下两种方式设置这些测试:
- 方法 1:使用您为 CTS-V 设置的现有 Wi-Fi 网络。
- 方法 2:设置可编程接入点 (AP)。
对于 Android 17,我们强烈建议使用选项 2,但这不是必需的。以下两部分将分别介绍每个选项。
方法 1:使用您为 CTS-V 设置的现有 Wi-Fi 网络
方案 1 需要在 Wi-Fi 网络覆盖范围内放置一个 Android DUT。如果 DUT 位于屏蔽盒中,且无法连接到 Wi-Fi 网络,请将其从屏蔽盒中取出。
方法 2:设置可编程 AP
如需为 Wi-Fi 连接测试设置可编程 AP,请执行以下操作:
购买 Banana Pi R3 AP 并进行设置。如需了解如何购买和设置 Banana Pi R3 AP,请参阅设置 Banana Pi BPI-R3 AP。
可选:如果您没有屏蔽箱,我们建议使用 JTP-SR101 屏蔽箱。请使用以下信息购买此盒子:
东莞市正声电子科技有限公司有限公司
中国广东省东莞市寮步镇潘龙路博汇工业园
联系人:Forest Pan
电子邮件地址:forest.pan@jtpmak.cn
电话(中国):+86 18676993556将 DUT 和 AP 连接到主机,并放置在 RF 屏蔽箱中。DUT 和 AP 之间的距离应至少为 10 厘米。图 2 显示了此配置:

图 2. 屏蔽箱中的 DUT 和 AP。
使用 SSH 验证 AP 是否可从主机访问。
设置测距精度测试
如需设置测距准确度测试,请执行以下操作:
将两台匹配的 Android DUT 放置在相距 1 米的位置,高度相同,彼此之间没有障碍物,且每台设备的背面朝向另一台设备。图 3 显示了此方向:

图 3. 设备屏幕方向。
通过 USB 数据线将两部设备都连接到桌面设备。
设置标准的两设备测试
对于默认的两设备设置:
- 将两台匹配的 Android DUT 放置在相距约 20 厘米的位置。
强烈建议:将两台设备都放入屏蔽盒中。屏蔽箱可提高测试稳定性,并使测试失败更易于调试。
对于电信测试,每个 DUT 都必须有 SIM 卡和移动网络信号。如果 DUT 位于屏蔽箱中,则必须将移动网络信号耦合到该箱中。否则,请将设备移出屏蔽箱。
可选:设置 OTA 嗅探器以进行 Wi-Fi 调试。
设置 CDM 测试
test_permissions_sync() 测试用例的行为因执行测试的设备的 build 类型而异。原始设备制造商 (OEM) 必须测试可调试(userdebug 或 eng)和不可调试 (user) build,并且测试必须通过。
豁免
权限同步 API 实现的 CDD 条款仅要求它能够通过安全渠道在设备之间成功传输数据。由于安全信道实现不是 CDD 合规性要求,因此可以在不可调试(用户) build 上跳过此测试,但前提是您选择退出不支持 CDM 权限同步功能。
测试必须在可调试 build 上通过,不得出现任何异常。
在不可调试的 build 上进行测试的前提条件
如果您不属于豁免对象,请确认您满足以下前提条件。
安全信道使用 AVF (AttestationVerificationFramework) 来验证硬件的可信度。双方生成的证明包含有关自身的多条信息,用于验证其系统中是否未发生任何未经授权的更改。在验证过程中,AVF 会检查以下状态:
- 设备可以访问互联网
- 设备使用验证启动,并且 build 必须使用发布密钥(而非开发密钥)签名
- 设备已锁定引导加载程序。如需查看详细说明,请参阅锁定引导加载程序
- 操作系统、关键启动和关键供应商补丁程序级别在 12 个月内。请勿使用超过一年的 build
- 设备认证由供应商批准的根证书之一提供支持。在
vendor_required_attestation_certificates.xml资源叠加层中指定您的受信任的根证书。
运行主机端测试
某些多设备测试(例如 NFC 测试)需要进行额外的设置。对于需要额外设置的测试,每项测试都会单独运行。对于不需要额外设置的测试,您可以分组运行测试。
在测试工作站上,从解压缩 CTS-V ZIP 软件包的目录中启动
cts-v-host控制台:./android-cts-verifier/android-cts-v-host/tools/cts-v-host-tradefed在 DUT 上的 CTS-V 应用中,点击主机端测试。 图 4 显示了 CTS-V 应用中的主机端测试:
图 4. CTS-V 应用中的主机端测试。
系统会显示主机端多设备测试模块列表。
在 CTS-V 主机控制台中,使用以下命令运行采用标准双设备设置的多设备测试:
run cts-v-host-multidevice-default结果会显示在 DUT 上 CTS-V 应用的每个测试模块下方。标记为绿色的测试已通过,标记为红色的测试已失败。
图 5 显示了 CtsCompanionDeviceManager 测试的示例结果:
图 5. CTS-V 应用中的主机端多设备测试结果。
在 CTS-V 宿主控制台中,使用以下命令运行交互式测试:
run cts-v-host-interactive结果会显示在 DUT 上 CTS-V 应用的每个测试模块下方。标记为绿色的测试已通过,标记为红色的测试已失败。
对于需要额外设置的每项测试,请使用以下命令单独运行测试:
run cts-v-host -m test_module_name例如,如需运行 NFC 测试,请使用以下命令:
run cts-v-host -m CtsNfcHceMultiDeviceTestCases结果会显示在 DUT 上 CTS-V 应用的每个测试模块下方。标记为绿色的测试已通过,标记为红色的测试已失败。
运行 Wi-Fi AP 连接测试
您可以通过以下两种方式运行 Wi-Fi AP 连接测试:
- 方法 1:使用您为 CTS-V 设置的现有 Wi-Fi 网络。
- 方法 2:设置可编程 AP。
方法 1:使用您为 CTS-V 设置的现有 Wi-Fi 网络
如需在现有 Wi-Fi 网络上运行 Wi-Fi AP 连接测试,请执行以下操作:
修改测试平台配置文件 (
WifiConnectionTestbed.yaml)。此文件位于解压缩 CTS-Verifier 的目录中。例如:./android-cts-verifier/android-cts-v-host/testcases/CtsWifiConnectionTests/x86_64/connection/WifiConnectionTestbed.yaml将
wifi_ssid和wifi_password字段的值更改为 Wi-Fi 网络的 SSID 和密码。以下示例展示了这些设置的位置:TestBeds: - Name: WifiConnectionTestbed Controllers: AndroidDevice: '*' TestParams: use_programmable_ap: False wifi_ssid: WIFI-SSID wifi_password: WIFI-PASSWORD在 CTS-V 主机控制台中,运行以下命令:
run cts-v-host -m CtsWifiConnectionTests
选项 2:使用可编程 AP 运行
如需在可编程 AP 上运行 Wi-Fi AP 连接测试,请执行以下操作:
修改测试平台配置文件 (
WifiConnectionTestbed.yaml)。此文件位于解压缩 CTS-Verifier 的目录中。例如:./android-cts-verifier/android-cts-v-host/testcases/CtsWifiConnectionTests/x86_64/connection/WifiConnectionTestbed.yaml根据本地 SSH 设置,将
hostname的值更改为 AP 的 IP 地址。如需确定 IP 地址,请参阅查找 AP 的 IP 地址。以下示例展示了hostname设置的位置:TestBeds: - Name: WifiConnectionTestbed Controllers: AndroidDevice: '*' # Specify settings for the AP. OpenWrtDevice: - hostname: AP-IP skip_init_reboot: True TestParams: use_programmable_ap: True在 CTS-V 主机控制台中,运行以下命令:
run cts-v-host -m CtsWifiConnectionTests
运行 USB 主机端测试
Android 17 包含需要通过 Wi-Fi 运行 adb 的 USB CTS-V 主机端测试。
某些 USB 测试需要使用 CTS-V 宿主来访问具有常规 CTS-V 应用无法访问的权限的 SystemAPI。这些测试是无连接的,需要通过 Wi-Fi 使用 adb。
如果 DUT 支持在 UsbPort.java 中报告端口合作伙伴 BC 1.2 类型或 USB 电源配置,则需要以下 Type-C 配件:
- USB C 型电力输送 (PD) 充电器
- USB 电池充电 1.2 (BC 1.2) 标准下游端口 (SDP)。 这些端口只能向 DUT 提供 500 mA 或 900 mA 的电流,通常位于外部集线器的 USB 端口上。
- USB BC 1.2 充电下游端口 (CDP)。这些端口可为 DUT 提供 1.5 A 的电流和数据。笔记本电脑或计算机上的 C 型端口很可能是 CDP。
- 一个 USB BC 1.2 专用充电端口 (DCP)。这些端口可为 DUT 提供 1.5 A 的电流,但不会传输数据。此列表中的 USB C 型 PD 充电器很可能是 DCP。
使用
adb通过 Wi-Fi 连接 DUT。如需详细了解设置,请参阅通过 Wi-Fi 连接到设备。以物理方式将设备与所有 USB 连接断开。如果设备在运行测试命令时连接到任何 USB 主机或配件,则测试会失败。
运行以下测试命令:
run cts-v-host -m CtsUsbTypecTestCases
测试完成后,结果会显示在 CTS-V 应用的主机端测试下,如下图所示:
图 6. CTS-V 应用中的主机端 USB 测试。
图 7. 主机端 USB CTS-V 应用中的 CtsUsbTypecTestCases 套件。
排查多设备测试问题
本部分将帮助您排查常见问题。
在 CtsTelecomTest 期间未能获取电话号码
如果您收到错误消息 Failed to get phone number for <serial>,请按以下步骤操作:
验证每台 DUT 是否都已安装 SIM 卡。
如果错误仍然存在,则可能是 SIM 卡不支持自动检索号码,在这种情况下,您必须在命令中明确提供电话号码。
例如,对于 DUT 1(序列号
17011FDEE0002N,电话号码555-0000)和 DUT 2(序列号R3CN90YNAR,电话号码555-1111),请将以下实参附加到run cts-v-host命令:--module-arg CtsTelecomTest:dut_serial:17011FDEE0002N \ --module-arg CtsTelecomTest:dut_phone_number:555-0000 \ --module-arg CtsTelecomTest:ref_phone_number:555-1111
在 CtsMultiDeviceGenericRangingAccuracyTests 期间,服务器没有响应
如果您收到以下错误消息,则表示在某些设备上,测试应用可能会被 OEM 专属的后台进程管理功能冻结或终止:
mobly.snippet.errors.ProtocolError: <AndroidDevice|Initiator> No response from server. Check the device logcat for crashes.
如需解决此问题,请停用后台限制或将以下软件包列入许可名单:
| 软件包 | 显示名称 |
|---|---|
com.google.snippet.uwb |
CtsUwbSnippetApp |
com.google.snippet.ranging |
CtsRangingSnippetApp |
com.google.snippet.bluetooth |
CtsBluetoothMultiDeviceSnippetApp |
com.google.android.mobly.snippet.bundled |
androidx.multidex.MultDexApplication |
修复了 NFC 测试期间 GetFirmwareVersion 无响应的问题
如果您在运行多设备测试时收到消息 verify_firmware_version RuntimeError: No response
for GetFirmwareVersion,则表示测试无法访问 PN532 NFC 板。
如需解决此问题,请确定主机上 PN532 NFC 板使用的串行路径(例如 dev/ttyUSB1),然后使用控制台中的 --module-arg 参数手动指定该路径:
run cts-v-host -m CtsNfcHceMultiDeviceTestCases --module-arg CtsNfcHceMultiDeviceTestCases:pn532_serial_path:/dev/ttyUSB1
修复了 NFC 测试期间出现的“Transaction failed”错误消息
如果您的所有 NFC 测试用例都收到消息 Transaction failed, check device logs for more
information.,可能是因为 DUT 的 NFC 芯片无法检测到 PN532。
如果您有多部设备连接到主机,并且其中一些设备没有任何放置在顶部的 PN532,则可能选择了错误的 DUT。如需了解详情,请参阅设置 NFC 测试。
如要解决此问题,请执行以下任一操作:
使用
-s标志在主机端测试命令中设置正确的 DUT 序列号。断开所有非 DUT 设备与主机的连接。