设置 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 并发,请设置至少两个 Wi-Fi 网络。这些 Wi-Fi 网络必须在不同频段上运行,并具有不同的 SSID,或者在同一 SSID 上运行,但具有不同的 BSSID。

  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

满足操作系统要求

您的开发机器必须运行 64 位 Linux 发行版,并配备 GNU C Library (glibc) 2.17 或更高版本。

安装桌面软件

要安装适用于 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 媒体文件。媒体文件包含来自 《大雄兔》 的视频剪辑,这些剪辑由 Blender Foundation 根据 Creative Commons Attribution 3.0 许可 获得版权。

  8. (可选)当您首次运行 CTS 时,它会动态下载一些与 Mainline 相关的 CTS 文件。根据您的网络速度,此下载会使 CTS 运行时间增加 10 分钟或更长时间。

    为了避免增加 CTS 运行时间,您可以在运行 CTS 之前下载与 Mainline 相关的 CTS 文件。有关下载与 Mainline 相关的 CTS 文件的信息,请参阅 下载与 Mainline 相关的 CTS 文件

准备 DUT

设置好桌面工作站后,您必须设置和配置 DUT。

设置 DUT

要设置 DUT

  1. 确保 DUT 正在运行基于 代号、标记和版本号 中已知的兼容用户版本(Android 4.0 或更高版本)的系统映像,并使用 user 构建变体。有关构建变体的更多信息,请参阅 选择目标

  2. 如果 DUT 运行的是 Android 13 或更高版本,请确保构建的 ro.product.first_api_level 设置为设备商业发布时使用的 API 级别。要设置此值,请对 device.mk 文件进行以下更改

    PRODUCT_SHIPPING_API_LEVEL := 21
    

    某些 CTS 要求取决于设备最初随附的构建版本。例如,最初随附早期构建版本的设备可能不包含在适用于随附后期构建版本的设备的系统要求中。有关有效的 API 级别值,请参阅 代号、标记和版本号。有关 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 卡,或速度等级为 10 或更高的卡,以确保其可以通过 CTS。

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

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

配置 DUT

使用以下步骤配置您的 DUT 以用于 CTS。

在 DUT 上

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

  2. 将设备语言设置为英语(美国)

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

  4. 如果设备上有 GPS 或 Wi-Fi 或移动网络功能,请启用位置设置。

  5. 连接到支持 IPv6、可以将 DUT 视为隔离客户端且具有互联网连接的 Wi-Fi 网络。有关隔离客户端的说明,请参阅 设置物理环境

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

  7. 启用 USB 调试

    1. 导航至设置 > 关于手机,然后点按版本号七次。开发者选项将显示在系统设置类别中。

    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 测试