设置 CTS 自动化测试

在执行自动化 CTS 测试之前,请准备物理环境、设置工作站并配置您要测试的设备。

设置物理环境

某些 CTS 测试要求在 DUT 附近使用外部设备进行设置。如需设置物理环境,请执行以下操作:

  1. (可选)如果您的 DUT 支持蓝牙 LE,请在 DUT 周围 5 米内放置至少三个蓝牙 LE 信标,以便进行蓝牙 LE 扫描测试。此外:

    • 这些信标不需要进行配置或者发射特定信号。
    • 信标的种类不限,可以是 iBeacon、Eddystone,甚至可以是模拟 BLE 信标的设备。
  2. 将手机放置在场景(例如墙壁或天花板)前,距离相当于 DUT 的最小对焦距离。此外:

    • 场景必须有足够的光线,以使被测传感器达到并维持在 CONTROL_AE_TARGET_FPS_RANGE 中指定的最高配置目标每秒帧数 (FPS)。
    • 这种设置适用于 getCameraIdList 报告的所有相机传感器,因为测试会循环访问列出的所有设备并逐个测评其性能。
    • 如果 DUT 支持外部相机(如 USB 摄像头),请在运行 CTS 时插上外部相机。否则,CTS 测试将失败。
  3. (可选)如果您的 DUT 支持全球定位系统 (GPS) 或其他全球导航卫星系统 (GNSS),请以合适的信号电平向 DUT 提供 GNSS 信号,以便其接收到相应信号并计算位置。此外:

    • GPS 必须符合 ICD-GPS-200C 标准。
    • GNSS 信号种类不限(可以是卫星模拟器或者室外信号中继器)。
    • 您可将 DUT 放在靠近窗户的位置,以便它能直接收到足够强的 GNSS 卫星信号。
  4. 确保您的 Wi-Fi 网络支持 IPv4 和 IPv6,可连接到互联网,具有适用于 IPv4 和 IPv6 的 DNS,支持 IP 多播,且可将 DUT 视为独立客户端

    如果您无法访问原生 IPv6 网络、IPv6 运营商网络或 VPN,导致无法通过 IPv6 测试,请使用 Wi-Fi AP 和 IPv6 隧道。

  5. 确保 DUT 的 Wi-Fi 接口设有 UPBROADCASTMULTICAST 标志。

  6. 确保 Wi-Fi 接口已获配 IPv4 和 IPv6 地址。如需检查 Wi-Fi 接口属性,请运行 adb shell ifconfig

  7. (可选)如果您的 DUT 支持 Wi-Fi STA 或 STA 并发,请至少设置 2 个 Wi-Fi 网络。这些 Wi-Fi 网络必须在具有不同 SSID 的不同频段上运行,或在具有不同 BSSID 的同一 SSID 上运行。

  8. (可选)如果您的 DUT 支持 Wi-Fi 往返时间 (RTT),请设置支持 Wi-Fi RTT 的设备:

    1. 将 Wi-Fi RTT 设备放置在距离 DUT 不超过 40 英尺的位置。
    2. 为 Wi-Fi RTT 设备充电。

    我们推荐两款支持 Wi-Fi RTT 的设备: - Google Wifi - Compulab 的 Fitlet2 接入点(使用 5 GHz 频段,带宽设为 40 MHz)。

设置您的桌面设备

在运行 CTS 自动化测试之前,请确保您的桌面设备满足硬件和操作系统要求,并安装了适当的软件,如以下部分所述。

满足硬件要求

您的 CTS 桌面机器应满足或超过以下硬件要求:

  • 一个 64 位 x86 系统

  • 至少 256 GB 的可用磁盘空间,以适应 CTS 测试用例数量的增加以及 Tradefed 中 Java 堆空间预留的增加

  • 至少 32 GB RAM

满足操作系统要求

开发机器必须运行采用 GNU C 库 (glibc) 2.17 或更高版本的 64 位 Linux 发行版。

安装桌面软件

如需为 CTS 安装适当的桌面软件,请执行以下操作:

  1. 安装 FFmpeg 软件包 5.1.3 版或更高版本。

  2. 安装最新版本的 Android 调试桥 (adb)Android 资源打包工具 (AAPT2),并将这两个工具的位置信息添加到计算机的系统路径中:

    1. 按照 SDK 管理器文档开头的说明安装 sdkmanager 命令行工具。命令行工具下载链接位于 Android Studio 下载页面底部的仅限命令行工具部分中。
    2. 更新系统路径,以包含新安装的 sdkmanager 的位置。
    3. 使用 sdkmanager 安装最新的 platform-toolsbuild-tools 软件包。这些软件包包含 adb 和 AAPT2。如需了解如何安装软件包,请参阅安装软件包
    4. 更新路径,以包含新安装的 adb 和 AAPT2 工具的位置。
    5. 验证 adb 和 AAPT2 是否位于您的路径中。
  3. 安装正确版本的 Java 开发套件 (JDK)

  4. (可选)对于 Android 13 或更高版本,请安装 virtualenv。多设备测试需要使用 virtualenv 工具。

  5. 如需确保已安装 Python,请输入 python3。系统应该会显示 Python 版本和日期,以指明 Python 已正确安装。

  6. 兼容性测试套件下载页面下载与您设备的 Android 版本以及您设备支持的所有应用二进制接口 (ABI) 相匹配的 CTS 软件包,并将其打开。

  7. 下载并打开最新版本的 CTS 媒体文件。 媒体文件包括来自 Big Buck Bunny 的视频剪辑,这些剪辑版权归 Blender Foundation 所有并采用知识共享署名 3.0 许可

  8. (可选)首次运行 CTS 时,CTS 会动态下载一些与 Mainline 相关的 CTS 文件。此下载会使 CTS 运行时间至少增加 10 分钟,具体取决于您的网络速度。

    如要避免上述增加的 CTS 运行时间,您可按照以下说明,在运行 CTS 之前下载 Mainline 相关 CTS 文件。如需了解如何下载 Mainline 相关 CTS 文件,请参阅下载 Mainline 相关 CTS 文件

准备 DUT

设置桌面设备后,您必须设置和配置 DUT。

设置 DUT

如需设置 DUT,请执行以下操作:

  1. 确保 DUT 运行基于代号、标记和 build 号中已知兼容用户 build(Android 4.0 或更高版本)的系统映像,并使用 user build 变体。如需详细了解 build 变体,请参阅选择目标

  2. 如果 DUT 搭载的是 Android 13 或更高版本,请确保 build 已将 ro.product.first_api_level 设置为设备在商业化发布时采用的 API 级别。如需设置此值,请对 device.mk 文件进行以下更改:

    PRODUCT_SHIPPING_API_LEVEL := 21
    

    某些 CTS 要求取决于设备最初搭载的 build。例如,如果设备最初搭载的是较低的 build,可能就不需要遵循适用于搭载较高 build 的设备的系统要求。如需了解有效的 API 级别值,请参阅代号、标记和 build 号。如需详细了解 ro.product.first_api_level,请参阅供应商 API 级别

    对于 Android 10 或更低版本,请参阅设置 CTS(AOSP 10 或更低版本)

  3. 如果您的设备支持 APEX 软件包管理:

    1. 下载适用于特定 Android 版本和硬件架构的 APEX shim 软件包。shim 软件包表格中的左侧两列提供了指向要下载的软件包的链接。
    2. 将下载的软件包复制到 /system/apex
    3. 将文件重命名为 com.android.apex.cts.shim.apex
  4. 如果您的设备不支持 APEX 软件包管理:

    1. 下载适用于特定 Android 版本和硬件架构的 APEX shim 软件包。shim 软件包表格中的右侧两个列提供了要下载的软件包的链接。
    2. CtsShim.apk 复制到 /system/app/
    3. CtsShim.apk 重命名为 CtsShimPrebuilt.apk
    4. CtsShimPriv.apk 复制到 /system/priv-app/
    5. CtsShimPriv.apk 重命名为 CtsShimPrivPrebuilt.apk
  5. 如果您的设备报告了多个安全元件:

    1. 下载 google-cardlet.cap
    2. 将下载的文件复制到 /data/uicc/cardlets/
  6. 如果您的设备报告多个安全元件,请将示例小程序安装到 DUT 的嵌入式安全元件 (eSE) 或 DUT 所使用的 SIM 卡中。如需了解详情,请参阅针对安全元件的 CTS 测试

  7. 如果您的设备没有嵌入式屏幕,请将一个屏幕连接到设备。

  8. 如果设备具有存储卡插槽,请插入空的 SD 卡。 请使用支持超高速 (UHS) 总线且具有 SDHC 或 SDXC 容量的 SD 卡,或速度不低于 Class 10 的 SD 卡,以确保设备能通过 CTS 测试。

  9. 如果设备有 SIM 卡插槽,请在每个插槽中插入一张已激活的 SIM 卡。如果设备支持短信,必须填充每个 SIM 卡的号码字段。对于搭载 Android 12 或更高版本的设备,所有 SIM 卡都必须支持存储缩位拨号 (ADN) 号码。具有电信专用文件 (DFTelecom) 的 GSM 和 USIM 卡满足此要求。

  10. 确保您的设备有具备 CTS 运营商权限的 SIM 卡,且该 SIM 卡满足准备 UICC 中规定的要求。

配置 DUT

按照以下步骤配置 DUT,以便与 CTS 搭配使用。

在 DUT 上:

  1. 将设备恢复出厂设置。

  2. 将设备的语言设置为 English (United States)

  3. 如果设备支持自定义默认字体,请确保默认 sans-serif 字体系列设置为 Roboto

  4. 如果设备具有 GPS 或 WLAN 或移动网络功能,请开启位置信息设置。

  5. 连接到满足以下要求的 Wi-Fi 网络:支持 IPv6、可将 DUT 视为独立客户端,且可连接到互联网。如需了解隔离客户端,请参阅设置物理环境

  6. 确保未设置锁屏图案或密码。

  7. 启用 USB 调试:

    1. 依次前往设置 > 关于手机,然后点按 build 号 7 次。开发者选项会显示在系统设置类别中。

    2. 点按 USB 调试

    如需在 Android 10 或更低版本上启用 USB 调试,请参阅设置 CTS(AOSP 10 或更低版本)

  8. 将时间设置为 12 小时制。

  9. 启用开发者选项 > 不锁定屏幕

  10. 停用 USB 应用验证:

    1. 前往开发者选项

    2. 点按通过 USB 验证应用

  11. 在 Android 13 或更高版本中,启用模拟调制解调器:

    1. 前往开发者选项

    2. 点按允许模拟调制解调器

    特定的电话测试需要此设置。

在桌面设备上:

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

  2. 使用 USB 线将 DUT 连接到台式机。

  3. 如果系统提示您接受允许通过此计算机进行调试的 RSA 密钥,请点击允许 USB 调试

  4. 使用可供用户访问(非隐藏)的设置将 Roboto2 设置为 Sans Serif 字体。

  5. 将 CTS 媒体文件复制到 DUT:

    1. 导航 (cd) 到下载并解压缩媒体文件的目标路径。
    2. 更改文件权限:

      chmod u+x copy_media.sh
      
    3. 复制以下文件:

      • 如需复制分辨率最高为 720x480 的剪辑,请运行以下命令:

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

        ./copy_media.sh all
      • 如果有多部 DUT,请在末尾添加特定设备的序列号选项 (-s)。例如,如需将分辨率最高为 720x480 的文件复制到序列号为 1234567 的设备,请运行以下命令:

        ./copy_media.sh 720x480 -s 1234567

下载 Mainline 相关 CTS 文件

如需下载 Mainline 相关 CTS 文件,请执行以下操作:

  1. 通过运行以下命令,获取设备上的 Android API 级别:

    adb shell getprop ro.build.version.sdk
    
  2. 按照 download_mcts.sh 脚本中的说明下载 Mainline CTS 文件。

    下载过程至少需要 10 分钟,具体取决于您的网络速度。

shim 软件包

下表列出了适用于每个设备版本和架构的软件包:

设备版本 软件包(如果支持 APEX) 软件包(如果不支持 APEX)
ARM x86 ARM x86
Android 15 15-arm-release android15-x86-release android15-arm-CtsShim.apk

android15-arm-CtsShimPriv.apk

android15-x86-CtsShim.apk

android15-x86-CtsShimPriv.apk

Android 14 android14-arm-release android14-x86-release android14-arm-CtsShim.apk

android14-arm-CtsShimPriv.apk

android14-x86-CtsShim.apk

android14-x86-CtsShimPriv.apk

Android 13 android13-arm-release android13-x86-release android13-arm-CtsShim.apk

android13-arm-CtsShimPriv.apk

android13-x86-CtsShim.apk

android13-x86-CtsShimPriv.apk

Android 12 android12-arm-release android12-x86-release android12-arm-CtsShim.apk

android12-arm-CtsShimPriv.apk

android12-x86-CtsShim.apk

android12-x86-CtsShimPriv.apk

Android 11 android11-arm-release android11-x86-release android11-arm-CtsShim.apk

android11-arm-CtsShimPriv.apk

android11-x86-CtsShim.apk

android11-x86-CtsShimPriv.apk

Android 10 android10-release android10-arm-CtsShim.apk

android10-arm-CtsShimPriv.apk

android10-x86-CtsShim.apk

android10-x86-CtsShimPriv.apk

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

arm-CtsShimPriv.apk

x86-CtsShim.apk

x86-CtsShimPriv.apk

后续操作

阅读本文档后,请继续阅读运行自动化 CTS 测试