如需运行 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 测试将失败。
GPS/GNSS
如果 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 接口设有 UP
、BROADCAST
和 MULTICAST
标志。Wi-Fi 接口需要分配有 IPv4 和 IPv6 地址。请使用 adb shell ifconfig
检查 Wi-Fi 接口属性。
对于支持 Wi-Fi STA/STA 并发的设备,需要多个 Wi-Fi 网络(至少 2 个)。为了能够顺利通过 CTS 测试,Wi-Fi 网络必须在具有不同 SSID 的不同频段上运行,或在具有不同 BSSID 的同一 SSID 上运行。
Wi-Fi RTT
Android 包含 Wi-Fi RTT API,用于提供 Wi-Fi 往返时间 (RTT) 功能。此 API 允许设备测量自身与接入点之间的距离(误差在 1 到 2 米内),从而显著提高室内位置信息的准确性。我们推荐两款支持 Wi-Fi RTT 的设备:Google Wifi 和 Compulab 的 Fitlet2 接入点(使用 5 GHz 频段,带宽设为 40 MHz)。
接入点应接通电源,但不需要网络连接。接入点无需紧靠测试设备,但建议距离 DUT 不超过 40 英尺。通常,一个接入点就足够了。
台式机设置
注意:CTS 支持 64 位 Linux 计算机。Windows 操作系统或 MacOS 不支持 CTS。
FFMPEG
在主机上安装 ffmpeg 5.1.3 版(或更高版本)的软件包。
主机升级
强烈建议将 CTS 主机 RAM 升级到 128GB,将 HDD 升级到 256GB。这是为了适应 CTS 测试用例数量的增加以及 tradefed 中 Java 堆空间预留的增加。
adb 和 AAPT2
运行 CTS 之前,请确保已安装最新版本的 Android 调试桥 (adb) 和 Android 资源打包工具 (AAPT2),并已将这两个工具的位置信息添加到计算机的系统路径中。
如需安装 adb 和 AAPT2,请从 Android Studio 的 SDK 管理器或从 sdkmanager 命令行工具下载最新的 Android SDK 平台工具和 Android SDK 构建工具。
确保 adb
和 aapt2
位于您的系统路径下。以下命令假定您已将软件包归档下载到主目录中名为 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 媒体文件。
下载与 Mainline 相关的 CTS 文件(可选)
当您首次运行某个 CTS 版本时,CTS 会动态下载一些 与 Mainline 相关的 CTS 文件,这会使运行时间增加至少 10 分钟; 具体取决于网速
为避免增加这种 CTS 运行时,您可以下载与 Mainline 相关的 CTS 文件,请按照以下说明操作:
通过运行以下命令获取设备上的 Android API 级别:
adb shell getprop ro.build.version.sdk
按照
download_mcts.sh
脚本中的说明操作 下载 Mainline CTS 文件。下载过程至少需要 10 分钟,具体取决于您的网速。
设备检测
按照相应步骤设置系统以检测设备。
内存限制
您可能需要在 cts-tradefed 脚本中增加测试运行期间可用的最大内存。如需了解详情,请参阅示例 CL。
Android 设备设置
用户 build
兼容的设备是指具有 user/release-key 签名 build 的设备。您的设备应运行基于代号、标记和 build 号中已知兼容用户 build(Android 4.0 或更高版本)的系统映像。
初始 API 级别 build 属性
某些 CTS 要求取决于设备最初搭载的 build。例如,如果设备最初搭载的是较低的 build,可能就不需要遵循适用于搭载较高 build 的设备的系统要求。
为确保 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
设置为代号、标记和 build 号中的有效值。
Android 8.x 或更低版本的初始 API 级别
对于搭载 Android 8.x 或更低版本的设备,请为产品的第一个 build 取消设置(移除)ro.product.first_api_level
属性。对于所有后续 build,请将 ro.product.first_api_level
设置为正确的 API 级别值。这样一来,该属性便可以正确标识新产品,并保留关于产品初始 API 级别的信息。如果取消设置此标记,Android 会将 Build.VERSION.SDK_INT
分配给 ro.product.first_api_level
。
CTS shim 软件包
Android 10 或更高版本包含一种名为 APEX 的软件包格式。如需为 APEX 管理 API 运行 CTS 测试(例如,更新到新版本、报告启用的 APEX 等),您必须将一个 CtsShimApex
软件包预安装在一个 /system
分区内。
APEX Shim 验证测试可以验证 CtsShimApex
的实现。
ro.apex.updatable 要求
如果将
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
中。
如果使用常规预构建应用,则必须将相应版本的 CtsShim
和 CtsShimPriv
分别放置在 /system/app/CtsShimPrebuilt.apk
和 /system/priv-app/CtsShimPrivPrebuilt.apk
中。
下表列出了适用于每个设备版本和架构的预安装和预加载项。
设备版本 | 预安装 (如果支持 APEX) |
预加载 | ||
---|---|---|---|---|
ARM | x86 | ARM | x86 | |
Android 14 | android14-arm-release | android14-x86-release | android14-arm-CtsShim.apk | android14-x86-CtsShim.apk |
Android 13 | android13-arm-release | android13-x86-release | android13-arm-CtsShim.apk | android13-x86-CtsShim.apk |
Android 12 | android12-arm-release | android12-x86-release | android12-arm-CtsShim.apk | android12-x86-CtsShim.apk |
Android 11 | android11-arm-release | android11-x86-release | android11-arm-CtsShim.apk | android11-x86-CtsShim.apk |
Android 10 | android10-release | android10-arm-CtsShim.apk | android10-x86-CtsShim.apk | |
Android 9、O 和 O-MR1 | 不适用 | 不适用 | arm-CtsShim.apk | x86-CtsShim.apk |
必须将这些应用预加载到系统映像上的相应目录下,但不能对应用重新签名,这样才能通过测试。
示例小程序
Android 9 引入了 Open Mobile API。如果设备基于多个安全元件生成报告,为了验证 Open Mobile API 的行为,CTS 会添加相应的测试用例。使用这些测试用例时,需要在 DUT 的嵌入式安全元件 (eSE) 或 DUT 所使用的 SIM 卡中进行一次示例小程序安装。可以在 AOSP 中找到相关的 eSE 示例小程序和 SIM 示例小程序。
如需详细了解 Open Mobile API 测试用例和访问控制测试用例,请参阅安全元件的 CTS 测试。
存储空间要求
CTS 媒体压力测试要求将视频剪辑存放在外部存储空间 (/sdcard
) 中。大部分剪辑来自 Big Buck Bunny,剪辑版权归 Blender Foundation 所有并采用知识共享署名 3.0 许可。
所需空间取决于设备支持的最大视频播放分辨率。如需了解所需分辨率的平台版本,请参阅 Android 兼容性定义文档第 5 节。
以下是按最大视频播放分辨率列出的存储空间要求:
- 480x360:98 MB
- 720x480:193 MB
- 1280x720: 606 MB
- 1920x1080:1863 MB
屏幕和存储空间
- 没有嵌入式屏幕的设备一律需要连接到屏幕。
如果设备具有存储卡插槽,请插入空的 SD 卡。请使用支持超高速 (UHS) 总线且具有 SDHC 或 SDXC 容量的 SD 卡,或速度不低于 Class 10 的 SD 卡,以确保设备能通过 CTS 测试。
如果设备有 SIM 卡插槽,请在每个插槽中插入一张已激活的 SIM 卡。如果设备支持短信,必须填充每个 SIM 卡的号码字段。对于搭载 Android 12 或更高版本的设备,所有 SIM 卡都必须支持存储缩位拨号 (ADN) 号码。具有电信专用文件 (DFTelecom) 的 GSM 和 USIM 卡满足此要求。
开发者 UICC
如需运行 CTS 运营商 API 测试,设备需要使用具备 CTS 运营商权限的 SIM 卡,该 SIM 卡满足准备 UICC 中规定的要求。
Android 设备配置
将设备恢复出厂设置:依次点击设置 > 备份和重置 > 恢复出厂设置。
将设备的语言设置为英语(美国):依次点击设置 > 语言和输入法 > 语言。
如果设备支持自定义默认字体,请将默认
sans-serif
字体系列设置为Roboto
(AOSP build 中使用的默认sans-serif
字体系列)。如果设备有 GPS 或 Wi-Fi/移动网络功能,请开启位置信息设置:依次点击设置 > 位置 > 开启。
连接到满足以下要求的 Wi-Fi 网络:支持 IPv6、可以将 DUT 视为独立客户端(请参阅上文的物理环境部分),并可连接到互联网。连接网络的操作方式为:依次点击设置 > Wi-Fi。
确保设备未设置锁屏图案或密码:依次点击设置 > 安全 > 屏幕锁定 > 无。
在设备上启用 USB 调试:依次点击设置 > 开发者选项 > USB 调试。
将时间设置为 12 小时制:依次点击设置 > 日期和时间 > 使用 24 小时制 > 关闭。
将设备设置为不锁定屏幕:依次点击设置 > 开发者选项 > 不锁定屏幕 > 开启。
仅在 Android 5.x 和 4.4.x 上,可以将设备设置为允许模拟位置:依次点击设置 > 开发者选项 > 允许模拟位置 > 开启。
在 Android 4.2 或更高版本中,关闭通过 USB 验证应用功能:依次点击设置 > 开发者选项 > 通过 USB 验证应用 > 关闭。
在 Android 13 或更高版本中,将设备设置为允许运行 Mock Modem 服务:依次点击设置 > 开发者选项 > 允许运行 Mock Modem 服务 > 开启。
启动浏览器并关闭任何启动/设置屏幕。
使用 USB 数据线连接将要用于测试设备的台式机。
在运行 CTS 之前,使用用户可访问(非隐藏)的设置将 Roboto2 设置为 Sans Serif 字体。
文件安装
在设备上安装并配置帮助程序应用。
请根据您的 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
和任何其他预加载的设备管理器均保持停用状态。
按照以下步骤将 CTS 媒体文件复制到设备上:
- 导航 (
cd
) 到下载并解压缩媒体文件的目标路径。 更改文件权限:
chmod u+x copy_media.sh
复制必要的文件:
如需复制分辨率最高为 720x480 的剪辑,请运行以下命令:
./copy_media.sh 720x480
如果您不确定最大分辨率,请复制所有文件:
./copy_media.sh all
如果 adb 下有多个设备,请在末尾添加特定设备的序列号选项 (
-s
)。例如,如需将分辨率最高为 720x480 的文件复制到序列号为 1234567 的设备,请运行以下命令:./copy_media.sh 720x480 -s 1234567
- 导航 (