要运行 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 的互联网连接,支持 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 RTT
Android 包含用于 Wi- Fi 往返时间 (RTT)功能的Wi-Fi RTT API 。这允许设备以 1 到 2 米的精度测量它们与接入点的距离,从而显着提高室内定位精度。推荐的两种支持 Wi-Fi RTT 的设备是Google Wifi和Compulab 的 fitlet2 接入点(在 5 GHz 时设置为 40 MHz 带宽)。
接入点应该通电,但不需要网络连接。接入点不需要靠近测试设备,但建议位于 DUT 的 40 英尺范围内。一个接入点通常就足够了。
台式机设置
亚行和亚太贸易联盟
在运行 CTS 之前,请确保您已安装最新版本的Android 调试桥 (adb)和Android 资产打包工具 (AAPT) ,并将这些工具的位置添加到您机器的系统路径中。
要安装 ADB 和 AAPT,请从 Android Studio 的SDK 管理器或从sdkmanager命令行工具下载最新的Android SDK 平台工具和Android SDK 构建工具。
确保adb
和aapt
在您的系统路径中。以下命令假定您已将软件包存档下载到主目录中名为android-sdk
的子目录中:
export PATH=$PATH:$HOME/android-sdk/platform-tools:$HOME/android-sdk/build-tools/<tools version number>
适用于 Ubuntu 的 Java 开发工具包
安装正确版本的Java Development Kit (JDK) 。
- 对于 Android 11,安装 OpenJDK11。
- 对于 Android 9 和 Android 10,安装 OpenJDK9。
- 对于 Android 7.0、7.1、8.0 和 8.1,安装 OpenJDK8。
有关详细信息,请参阅JDK 要求。
设置 Python 支持
按照安装说明为您的平台安装virtualenv
。
您可以通过调用virtualenv -h
来验证安装是否成功。
文件
从与您设备的 Android 版本和您的设备支持的所有应用程序二进制接口 (ABI) 相匹配的兼容性测试套件下载中下载并打开 CTS 包。
下载并打开最新版本的CTS 媒体文件。
设备检测
按照步骤设置您的系统以检测您的设备。
内存限制
您可能希望在cts-tradfed脚本中的测试运行期间增加可用的最大内存。有关详细信息,请参阅示例 CL 。
安卓设备设置
用户构建
兼容设备定义为具有用户/发布密钥签名构建的设备。您的设备应该运行基于代号、标签和版本号的已知兼容用户版本(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
包含两个预构建的应用程序(从构建源构建),除了清单之外不包含任何代码。 CTS 使用这些应用程序来测试特权和权限。
如果设备不支持 APEX 包管理(即ro.apex.updatable
属性缺失或未设置),或者如果设备运行版本 10 或更低版本,则必须在系统分开。
设备版本 | 预装 (如果支持 APEX) | 预加载 | ||
---|---|---|---|---|
手臂 | x86 | 手臂 | x86 | |
安卓 12 | android12-手臂释放 在 /system/apex/com.android.apex.cts.shim.apex 下 | android12-x86-版本 在 /system/apex/com.android.apex.cts.shim.apex 下 | android12-arm-CtsShim.apk 在 /system/app/CtsShimPrebuilt.apk 下android12-arm-CtsShimPriv.apk | android12-x86-CtsShim.apk 在 /system/app/CtsShimPrebuilt.apk 下android12-x86-CtsShimPriv.apk |
安卓 11 | android11-手臂释放 在 /system/apex/com.android.apex.cts.shim.apex 下 | android11-x86-发布 在 /system/apex/com.android.apex.cts.shim.apex 下 | android11-arm-CtsShim.apk 在 /system/app/CtsShimPrebuilt.apk 下android11-arm-CtsShimPriv.apk | android11-x86-CtsShim.apk 在 /system/app/CtsShimPrebuilt.apk 下android11-x86-CtsShimPriv.apk |
安卓 10 | android10-release 在 /system/apex/com.android.apex.cts.shim.apex 下 | android10-arm-CtsShim.apk 在 /system/app/CtsShimPrebuilt.apk 下android10-arm-CtsShimPriv.apk | android10-x86-CtsShim.apk 在 /system/app/CtsShimPrebuilt.apk 下android10-x86-CtsShimPriv.apk | |
Android 9、O 和 O-MR1 | 不适用 | 不适用 | arm-CtsShim.apk 在 /system/app/CtsShimPrebuilt.apk 下arm-CtsShimPriv.apk | x86-CtsShim.apk 在 /system/app/CtsShimPrebuilt.apk 下x86-CtsShimPriv.apk |
要通过测试,请将应用程序预加载到系统映像上的适当目录中,而无需重新签署应用程序。
示例小程序
Android 9 引入了开放移动 API。对于报告多个安全元素的设备,CTS 添加测试用例以验证开放移动 API 的行为。这些测试用例需要将示例小程序一次性安装到 DUT 的嵌入式安全元件 (eSE) 或 DUT 使用的 SIM 卡中。 eSE 示例小程序和SIM 示例小程序可以在 AOSP 中找到。
有关 Open Mobile API 测试用例和访问控制测试用例的更多详细信息,请参阅安全元件的 CTS 测试。
存储要求
CTS 媒体压力测试要求视频剪辑位于外部存储 ( /sdcard
) 上。大部分剪辑来自Big Buck Bunny ,其版权归 Blender Foundation 根据Creative Commons Attribution 3.0 许可。
所需空间取决于设备支持的最大视频播放分辨率。有关所需解决方案的平台版本,请参阅Android 兼容性定义文档中的第 5 节。
以下是最大视频播放分辨率的存储要求:
- 480x360:98MB
- 720x480:193MB
- 1280x720:606MB
- 1920x1080:1863MB
屏幕和存储
- 任何没有嵌入式屏幕的设备都需要连接到屏幕。
如果设备有存储卡插槽,请插入空的 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中指定的要求。
安卓设备配置
出厂数据重置设备:设置 > 备份和重置 > 出厂数据重置。
将设备的语言设置为英语(美国):设置 > 语言和输入法 > 语言。
如果设备支持自定义默认字体,请将默认
sans-serif
字体系列设置为Roboto
(AOSP 构建中使用的默认sans-serif
字体系列)。如果设备上有 GPS 或 Wi-Fi/蜂窝网络功能,请打开位置设置:设置 > 位置 > 开。
连接到支持 IPv6 的 Wi-Fi 网络,可以将 DUT 视为独立的客户端(请参阅上面的物理环境),并具有互联网连接:设置 > Wi-Fi 。
确保设备上没有设置锁定图案或密码:设置 > 安全 > 屏幕锁定 > 无。
在您的设备上启用USB 调试:设置 > 开发人员选项 > USB 调试。
将时间设置为 12 小时制:设置 > 日期和时间 > 使用 24 小时制 > 关闭。
将设备设置为保持清醒:设置 > 开发者选项 > 保持清醒 > 开启。
仅在 Android 5.x 和 4.4.x中,将设备设置为允许模拟位置:设置 > 开发人员选项 > 允许模拟位置 > 开。
在Android 4.2 或更高版本中,关闭 USB 应用程序验证:设置 > 开发人员选项 > 通过 USB 验证应用程序 > 关闭。
在Android 13 或更高版本中,将设备设置为允许模拟调制解调器:设置 > 开发人员选项 > 允许模拟调制解调器 > 开启。
启动浏览器并关闭任何启动/设置屏幕。
使用 USB 数据线连接将用于测试设备的台式机。
在运行 CTS 之前,使用用户可访问的可见性(非隐藏)设置将 Roboto2 设置为无衬线字体。
文件安装
在设备上安装和配置助手应用程序。
根据您的 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
和任何其他预加载的设备管理员保持禁用状态。
将 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
- 导航 (