设置 CTS

要运行 CTS,首先准备您的物理环境、台式机以及用于测试的 Android 设备。

物理环境

蓝牙 LE 信标

如果被测设备 (DUT) 支持蓝牙 LE,请在 DUT 5 米范围内至少放置三个蓝牙 LE 信标,以进行蓝牙 LE 扫描测试。这些信标不需要配置或发出任何特定的信息,可以是任何类型,包括 iBeacon、Eddystone,甚至是模拟 BLE 信标的设备。

超宽带

如果 DUT 支持超宽带 (UWB),则另一个支持 UWB 的设备必须放置得足够近且定向,以免出现天线和无线电盲区。对于距离精度测试,有特定的定位和定向需求。有关设置详细信息,请参阅UWB 要求。 UWB 测试必须手动运行,在命令行上指定相距一米的两个设备。本次测试所需的分片详情请参见本地分片

相机

运行相机 CTS 时,请使用正常照明条件和测试图案图(例如棋盘图案)。根据 DUT 的最小焦距放置测试图,确保其不会离镜头太近。

将相机传感器指向具有充足照明的场景,以允许被测传感器达到并保持在CONTROL_AE_TARGET_FPS_RANGE中指定的最大配置每秒目标帧数 (FPS)。这适用于getCameraIdList报告的所有相机传感器,因为测试会迭代列出的设备并单独测量性能。

如果 DUT 支持外部摄像头(例如 USB 网络摄像头),请在运行 CTS 时插入外部摄像头。否则,CTS 测试将失败。

全球定位系统/全球导航卫星系统

如果 DUT 支持全球定位系统/全球导航卫星系统 (GPS/GNSS) 功能,请以合适的信号电平向 DUT 提供 GPS/GNSS 信号,以进行接收和 GPS 位置计算。 GPS 部分必须符合 ICD-GPS-200C。否则,GPS/GNSS 信号可以是任何类型,包括卫星模拟器或室外信号的 GPS/GNSS 中继器,或者您可以将 DUT 放置在足够靠近窗户的位置,以便它可以直接接收足够的 GPS/GNSS 信号。

Wi-Fi 和 IPv6

CTS 测试需要支持 IPv4 和 IPv6 的 Wi-Fi 网络,具有与适用于 IPv4 和 IPv6 的工作 DNS 的互联网连接,支持 IP 多播,并且可以将 DUT 视为独立的客户端。隔离客户端是一种配置,其中 DUT 无法看到该子网上的广播/多网络消息。通过 Wi-Fi 接入点 (AP) 配置或在没有连接其他设备的隔离子网上运行 DUT 会发生这种情况。

如果您无法访问本机 IPv6 网络、IPv6 运营商网络或 VPN 来通过某些依赖于 IPv6 的测试,则可以使用 Wi-Fi 接入点和 IPv6 隧道。

要通过 CTS,DUT 需要在 Wi-Fi 接口上设置UPBROADCASTMULTICAST标志。 Wi-Fi 接口需要分配 IPv4 和 IPv6 地址。使用adb shell ifconfig检查 Wi-Fi 接口属性。

对于支持Wi-Fi STA/STA 并发的设备,需要多个 Wi-Fi 网络(至少 2 个)。为了通过 CTS,Wi-Fi 网络必须运行在不同频段、不同 SSID 或同一 SSID、不同 BSSID 上。

无线网络RTT

Android 包含用于 Wi- Fi 往返时间 (RTT) 功能的 Wi- Fi RTT API 。这使得设备能够以 1 到 2 米的精度测量到接入点的距离,从而显着提高室内定位精度。支持 Wi-Fi RTT 的两种推荐设备是Google WifiCompulab 的 fitlet2 接入点(在 5 GHz 时设置为 40 MHz 带宽)。

接入点应已通电,但不需要网络连接。接入点不需要位于测试设备旁边,但建议位于 DUT 的 40 英尺范围内。一个接入点通常就足够了。

台式机设置

注意:CTS 支持 64 位 Linux 计算机。 Windows 操作系统或 MacOS 不支持 CTS。

FFMPEG

在主机上安装 ffmpeg 版本 5.1.3(或更高版本)包。

主机升级

强烈建议将CTS主机RAM升级至128GB,硬盘升级至256GB。需要适应 TradeFed 中 CTS 测试用例数量的增加以及 Java 堆空间预留的增加。

亚行和 AAPT2

在运行 CTS 之前,请确保您已安装最新版本的Android 调试桥 (adb)Android 资产打包工具 (AAPT2) ,并将这些工具的位置添加到计算机的系统路径中。

要安装 ADB 和 AAPT2,请从 Android Studio 的SDK Managersdkmanager命令行工具下载最新的Android SDK Platform ToolsAndroid SDK Build Tools

确保adbaapt2位于您的系统路径中。以下命令假设您已将包存档下载到主目录中名为android-sdk的子目录中:

export PATH=$PATH:$HOME/android-sdk/platform-tools:$HOME/android-sdk/build-tools/<tools version number>

适用于 Ubuntu 的 Java 开发工具包

安装正确版本的Java 开发工具包 (JDK)

  • 对于 Android 11,安装 OpenJDK11。
  • 对于 Android 9 和 Android 10,请安装 OpenJDK9。
  • 对于 Android 7.0、7.1、8.0 和 8.1,请安装 OpenJDK8。

有关详细信息,请参阅JDK 要求

Python 支持的设置

按照安装说明为您的平台安装virtualenv

您可以通过调用virtualenv -h来验证安装是否成功。

CTS 文件

兼容性测试套件下载中下载并打开与您的设备的 Android 版本以及您的设备支持的所有应用程序二进制接口 (ABI) 相匹配的 CTS 包。

下载并打开最新版本的CTS 媒体文件

设备检测

按照以下步骤设置系统以检测您的设备

内存限制

您可能希望增加cts-tradefed脚本测试运行期间的最大可用内存。有关详细信息,请参阅示例 CL

Android 设备设置

用户构建

兼容设备定义为具有用户/发布密钥签名版本的设备。您的设备应该运行基于Codenames、Tags 和 Build Numbers中已知的兼容用户版本(Android 4.0 或更高版本)的系统映像。

第一个 API 级别构建属性

某些 CTS 要求取决于设备最初附带的版本。例如,最初随早期版本一起提供的设备可能会被排除在适用于随较晚版本提供的设备的系统要求之外。

为了使 CTS 可以使用此信息,设备制造商可以定义构建时属性ro.product.first_api_level 。此属性的值是设备商业发布时使用的第一个 API 级别。

设备制造商可以重用通用的底层实现来推出新产品,作为同一设备组中现有产品的升级。设备制造商可以选择将现有产品的 API 级别设置为ro.product.first_api_level ,以便满足 CTS 和 Treble/VTS 的升级要求。

设备制造商可以在其device.mk文件中定义PRODUCT_SHIPPING_API_LEVEL来设置此属性,如下例所示:

# PRODUCT_SHIPPING_API_LEVEL sets ro.product.first_api_level to indicate
# the first api level that the device has been commercially launched on.
PRODUCT_SHIPPING_API_LEVEL := 21

Android 9 或更高版本的第一个 API 级别

对于使用 Android 9 或更高版本启动的设备,请将ro.product.first_api_level属性设置为Codenames、Tags 和 Build Numbers中的有效值。

Android 8.x 或更低版本的第一个 API 级别

对于在 Android 8.x 或更低版本上启动的设备,请取消设置(删除)产品第一个版本的ro.product.first_api_level属性。对于所有后续构建,将ro.product.first_api_level设置为正确的 API 级别值。这使得该属性能够正确识别新产品并保留有关该产品的第一个 API 级别的信息。如果未设置该标志,Android 会将Build.VERSION.SDK_INT分配给ro.product.first_api_level

CTS 垫片包

Android 10 或更高版本包含称为APEX 的包格式。要对 APEX 管理 API 运行 CTS 测试(例如更新到新版本或报告活动 APEX),您必须在/system分区上预安装CtsShimApex软件包。

APEX shim 验证测试验证CtsShimApex的实现。

ro.apex.可更新要求

  • 如果ro.apex.updatable属性设置为true ,则所有支持 APEX 包管理的设备都需要CtsShimApex

  • 如果ro.apex.updatable属性丢失或未设置,则不需要在设备上预安装CtsShimApex

APEX shim 验证测试验证CtsShimApex的实现。

CtsShim 预安装和预加载

从 Android 11 开始, CtsShimApex包含两个预构建的应用程序(从构建源构建),除了清单之外不包含任何代码。 CTS 使用这些应用程序来测试特权和权限。

如果设备不支持 APEX 包管理(即缺少或未​​设置ro.apex.updatable属性),或者设备运行版本 10 或更低版本,则必须在系统分开。

如果支持 APEX,则相应版本的预安装必须放置为/system/apex/com.android.apex.cts.shim.apex

如果使用常规预构建应用程序,则相应版本的CtsShimCtsShimPriv必须分别放置为/system/app/CtsShimPrebuilt.apk/system/priv-app/CtsShimPrivPrebuilt.apk

下表列出了每个设备版本和架构可用的预安装和预加载。

设备版本预安装
(如果支持 APEX)
预载
手臂x86手臂x86
安卓14 android14-arm-release android14-x86-发布android14-arm-CtsShim.apk

android14-arm-CtsShimPriv.apk

android14-x86-CtsShim.apk

android14-x86-CtsShimPriv.apk

安卓13 android13-arm-release android13-x86-发布android13-arm-CtsShim.apk

android13-arm-CtsShimPriv.apk

android13-x86-CtsShim.apk

android13-x86-CtsShimPriv.apk

安卓12 android12-arm-release android12-x86-发布android12-arm-CtsShim.apk

android12-arm-CtsShimPriv.apk

android12-x86-CtsShim.apk

android12-x86-CtsShimPriv.apk

安卓11 android11-arm-release android11-x86-发布android11-arm-CtsShim.apk

android11-arm-CtsShimPriv.apk

android11-x86-CtsShim.apk

android11-x86-CtsShimPriv.apk

安卓10 android10 发布android10-arm-CtsShim.apk

android10-arm-CtsShimPriv.apk

android10-x86-CtsShim.apk

android10-x86-CtsShimPriv.apk

Android 9、O 和 O-MR1不适用不适用ARM-CtsShim.apk

手臂-CtsShimPriv.apk

x86-CtsShim.apk

x86-CtsShimPriv.apk

要通过测试,请将应用程序预加载到系统映像上的相应目录中,而无需重新签名应用程序。

示例小程序

Android 9 引入了开放移动 API。对于报告多个安全元素的设备,CTS 添加测试用例来验证 Open Mobile API 的行为。这些测试用例需要将示例小程序一次性安装到 DUT 的嵌入式安全元件 (eSE) 或 DUT 使用的 SIM 卡中。 eSE 示例小程序SIM 示例小程序可以在 AOSP 中找到。

有关开放移动 API 测试用例和访问控制测试用例的更多详细信息,请参阅安全元素的 CTS 测试

存储要求

CTS 媒体压力测试要求视频剪辑位于外部存储 ( /sdcard ) 上。大部分剪辑来自Big Buck Bunny ,其版权归 Blender Foundation 根据Creative Commons Attribution 3.0 许可证所有。

所需空间取决于设备支持的最大视频播放分辨率。有关所需分辨率的平台版本,请参阅Android 兼容性定义文档中的第 5 节。

以下是最大视频播放分辨率的存储要求:

  • 480x360:98 MB
  • 720x480:193 MB
  • 1280x720:606 MB
  • 1920x1080:1863 MB

屏幕和存储

  • 任何没有嵌入式屏幕的设备都需要连接到屏幕。
  • 如果设备有存储卡插槽,请插入空 SD 卡。使用支持超高速 (UHS) 总线且具有 SDHC 或 SDXC 容量的 SD 卡,或者速度等级至少为 10 或更高的 SD 卡,以确保其能够通过 CTS。

  • 如果设备有 SIM 卡插槽,请将已激活的 SIM 卡插入每个插槽。如果设备支持 SMS,则每个 SIM 卡都必须填充自己的号码字段。对于运行 Android 12 或更高版本的设备,所有 SIM 卡都必须支持存储缩位拨号 (ADN)。具有电信专用文件(DF Telecom )的 GSM 和 USIM 卡满足此要求。

开发商 UICC

要运行 CTS 运营商 API 测试,设备需要使用具有 CTS 运营商权限的 SIM 卡,且满足准备 UICC中指定的要求。

安卓设备配置

  1. 将设备恢复出厂设置:设置 > 备份和重置 > 恢复出厂数据

  2. 将设备的语言设置为英语(美国):设置 > 语言和输入法 > 语言

  3. 如果设备支持自定义默认字体,请将默认sans-serif字体系列设置为Roboto (AOSP 版本中使用的默认sans-serif字体系列)。

  4. 如果设备上有 GPS 或 Wi-Fi/蜂窝网络功能,请打开位置设置:设置 > 位置 > 开

  5. 连接到支持 IPv6 的 Wi-Fi 网络,可以将 DUT 视为独立客户端(请参阅上面的物理环境),并且具有 Internet 连接:设置 > Wi-Fi

  6. 确保设备上未设置锁定图案或密码:设置 > 安全 > 屏幕锁定 > 无

  7. 在设备上启用USB 调试设置 > 开发者选项 > USB 调试

  8. 将时间设置为 12 小时格式:设置 > 日期和时间 > 使用 24 小时格式 > 关闭

  9. 将设备设置为保持唤醒:设置 > 开发者选项 > 保持唤醒 > 开启

  10. 仅在 Android 5.x 和 4.4.x中,将设备设置为允许模拟位置:设置 > 开发人员选项 > 允许模拟位置 > 开

  11. Android 4.2 或更高版本中,关闭 USB 应用程序验证:设置 > 开发者选项 > 通过 USB 验证应用程序 > 关闭

  12. Android 13 或更高版本中,将设备设置为允许模拟调制解调器:设置 > 开发者选项 > 允许模拟调制解调器 > 开

  13. 启动浏览器并关闭任何启动/设置屏幕。

  14. 使用 USB 电缆连接将用于测试设备的台式机。

  15. 在运行 CTS 之前,使用用户可访问的可供性(非隐藏)设置将 Roboto2 设置为无衬线字体。

文件安装

在设备上安装和配置帮助应用程序。

  1. 根据您的 CTS 版本设置您的设备:

    • CTS 版本 2.1 R2 到 4.2 R4:设置您的设备(或模拟器)以运行辅助功能测试: adb install -r android-cts/repository/testcases/CtsDelegatingAccessibilityService.apk

      在设备上,启用委派:设置 > 辅助功能 > 辅助功能 > 委派辅助功能服务

    • CTS 版本 6.x 或更低版本:在声明android.software.device_admin的设备上,使用以下命令设置设备以运行设备管理测试: adb install -r android-cts/repository/testcases/CtsDeviceAdmin.apk`

      设置 > 安全 > 选择设备管理员中,启用两个android.deviceadmin.cts.CtsDeviceAdminReceiver*设备管理员。确保android.deviceadmin.cts.CtsDeviceAdminDeactivatedReceiver和任何其他预加载的设备管理员保持禁用状态。

  2. 将 CTS 媒体文件复制到设备,如下所示:

    1. 导航 ( cd ) 到下载并解压缩媒体文件的路径。
    2. 更改文件权限: chmod u+x copy_media.sh

    3. 复制必要的文件:

      • 要将剪辑复制到分辨率为 720x480,请运行:

        ./copy_media.sh 720x480
        
      • 如果您不确定最大分辨率,请复制所有文件:

        ./copy_media.sh all
        
      • 如果 adb 下有多个设备,请将特定设备的串行选项( -s )添加到末尾。例如,要将高达 720x480 的分辨率复制到序列号为 1234567 的设备,请运行:

        ./copy_media.sh 720x480 -s 1234567