设置 CTS

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

物理环境

低功耗蓝牙信标

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

相机

运行相机 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 的 Internet 连接,支持 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 接口属性。

无线网络 RTT

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

接入点应该通电,但不需要网络连接。接入点不需要靠近测试设备,但建议在 DUT 40 英尺范围内。一个接入点通常就足够了。

台式机设置

亚行和AAPT

在运行 CTS 之前,请确保您已安装最新版本的Android Debug Bridge (adb)Android Asset Packaging Tool (AAPT) ,并将这些工具的位置添加到您机器的系统路径中。

要安装 ADB,请为您的操作系统下载Android SDK 工具包,打开它,然后按照包含的 README 文件中的说明进行操作。有关故障排除信息,请参阅安装独立 SDK 工具

确保adbaapt在您的系统路径中。以下命令假定您已在主目录中打开包存档:

export PATH=$PATH:$HOME/android-sdk-linux/build-tools/version

用于 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-tradfed脚本中增加测试运行期间可用的最大内存。有关详细信息,请参阅示例 CL

安卓设备设置

用户构建

兼容设备被定义为具有用户/发布密钥签名构建的设备。您的设备应运行基于来自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.updatable要求

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

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

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

CtsShim预安装和预加载

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

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

设备版本预安装
(如果支持 APEX)
预载
手臂x86手臂x86
安卓 12 android12-arm-release
/system/apex/com.android.apex.cts.shim.apex
android12-x86-release
/system/apex/com.android.apex.cts.shim.apex
android12-arm-CtsShim.apk
/system/app/CtsShimPrebuilt.apk

android12-arm-CtsShimPriv.apk
/system/priv-app/CtsShimPrivPrebuilt.apk

android12-x86-CtsShim.apk
/system/app/CtsShimPrebuilt.apk

android12-x86-CtsShimPriv.apk
/system/priv-app/CtsShimPrivPrebuilt.apk

安卓 11 android11-arm-release
/system/apex/com.android.apex.cts.shim.apex
android11-x86-release
/system/apex/com.android.apex.cts.shim.apex
android11-arm-CtsShim.apk
/system/app/CtsShimPrebuilt.apk

android11-arm-CtsShimPriv.apk
/system/priv-app/CtsShimPrivPrebuilt.apk

android11-x86-CtsShim.apk
/system/app/CtsShimPrebuilt.apk

android11-x86-CtsShimPriv.apk
/system/priv-app/CtsShimPrivPrebuilt.apk

安卓 10 android10-发布
/system/apex/com.android.apex.cts.shim.apex
android10-arm-CtsShim.apk
/system/app/CtsShimPrebuilt.apk

android10-arm-CtsShimPriv.apk
/system/priv-app/CtsShimPrivPrebuilt.apk

android10-x86-CtsShim.apk
/system/app/CtsShimPrebuilt.apk

android10-x86-CtsShimPriv.apk
/system/priv-app/CtsShimPrivPrebuilt.apk

Android 9、O 和 O-MR1不适用不适用arm-CtsShim.apk
/system/app/CtsShimPrebuilt.apk

arm-CtsShimPriv.apk
/system/priv-app/CtsShimPrivPrebuilt.apk

x86-CtsShim.apk
/system/app/CtsShimPrebuilt.apk

x86-CtsShimPriv.apk
/system/priv-app/CtsShimPrivPrebuilt.apk

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

示例小程序

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

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

存储要求

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

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

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

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

屏幕和存储

  • 任何没有嵌入式屏幕的设备都需要连接到屏幕。
  • 如果设备有存储卡插槽,请插入一张空的 SD 卡。使用支持 SDHC 或 SDXC 容量的超高速 (UHS) 总线的 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`

      Settings > Security > Select device administrators中,启用两个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