设置 CTS
物理环境
蓝牙 LE 信标
如果 DUT 支持蓝牙 LE 功能,则应在与 DUT 的距离不超过五米的范围内放置至少三个蓝牙 LE 信标,以进行蓝牙 LE 扫描测试。这些信标可以为任何类型,不需要进行配置或发射任何特定信号,并且可以包括 iBeacon、Eddystone,甚至模拟 BLE 信标的设备。
GPS/GNSS
如果 DUT 支持全球定位系统 (GPS)/全球导航卫星系统 (GNSS) 功能,则应该以合适的信号电平向 DUT 提供 GPS/GNSS 信号(GPS 部分符合 ICD-GPS-200C 标准),以便其接收到相应信号并计算 GPS 位置。GPS/GNSS 信号源的种类不限(可以是卫星模拟器,也可以是室外 GPS/GNSS 信号中继器),只需将 DUT 放在距离窗口足够近的位置以使其可以直接接收到足够强的 GPS/GNSS 信号即可。
WLAN 和 IPv6
CTS 测试需要满足以下要求的 WLAN 网络:支持 IPv6,可以将被测设备 (DUT) 视为隔离客户端,并可以连接到互联网。隔离客户端是一种配置,可使 DUT 无法接收子网络上的广播/多网消息;这种配置可通过 WLAN AP 配置或通过在未连接其他设备的隔离子网络上运行 DUT 来实现。
如果您无法访问原生 IPv6 网络、IPv6 运营商网络或 IPv6 VPN,以致无法通过基于 IPv6 的一些测试,则可以改为使用 WLAN 接入点和 IPv6 隧道。请参阅维基百科 IPv6 隧道代理列表。
台式机设置
ADB 和 AAPT
在运行 CTS 之前,请确保您已安装最新版本的 Android 调试桥 (adb) 和 Android 资源打包工具 (AAPT),并将这些工具的位置添加到计算机的系统路径中。
要安装 ADB,请下载适用于您的操作系统的 Android SDK 工具包,打开它,然后按照附带的 README 文件中的说明进行操作。要了解问题排查相关信息,请参阅安装独立 SDK 工具。
确保 adb
和 aapt
位于您的系统路径下。以下命令假定您已在主目录中打开了软件包归档文件:
1 |
export PATH=$PATH:$HOME/android-sdk-linux/build-tools/<version> |
注意:请确保起始路径和目录名称均准确无误。
Java 开发套件 (JDK)
安装正确版本的 Java 开发套件 (JDK)。对于 Android 7.0 -
- 在 Ubuntu 上,使用 OpenJDK 8。
- 在 Mac OS 上,使用 jdk 8u45 或更高版本。
如需了解详情,请参阅 JDK 要求。
CTS 文件
下载并打开与您设备的 Android 版本以及您的设备支持的所有应用二进制接口 (ABI) 相匹配的 CTS 包。
下载并打开最新版本的 CTS 媒体文件。
设备检测
请按照相应的步骤设置您的系统以检测设备,例如为 Ubuntu Linux 创建 udev
规则文件。
Android 设备设置
用户版本
兼容的设备被定义为具有 user/release-key 签名版本的设备,因此您的设备应运行基于代号、标签和版本号中已知兼容的用户版本(Android 4.0 及更高版本)的系统映像。
注意:使用 CTS 确认最终系统映像的 Android 兼容性时,您必须在具有用户版本的设备上执行 CTS。
初始 API 级别版本属性
某些 CTS 要求取决于设备最初搭载的版本。例如,如果设备最初搭载的是较低的版本,则不一定需要遵循适用于搭载较高版本的设备的系统要求。
为了保证 CTS 可读取到这些信息,设备制造商可以定义编译时属性:ro.product.first_api_level
。该属性的值是对该设备进行商业化发布时所采用的初始 API 级别。
OEM 可以将 PRODUCT_PROPERTY_OVERRIDES
添加到其 device.mk 文件以设置这项属性,具体如以下示例所示:
1 2 3 |
#ro.product.first_api_level indicates the first api level, device has been commercially launched on. PRODUCT_PROPERTY_OVERRIDES += ro.product.first_api_level=21 |
CTS Shim 应用
Android 7.0 包含以下预编译的应用(根据此处的源代码编译),这些应用不包含除清单以外的任何代码:
frameworks/base/packages/CtsShim/CtsShim.apk
该 apk 文件将复制到系统映像上的/system/app/CtsShimPrebuilt.apk
。frameworks/base/packages/CtsShim/CtsShimPriv.apk
该 apk 文件将复制到系统映像上的/system/priv-app/CtsShimPrivPrebuilt.apk
。
CTS 会使用这些应用来测试特权和权限。要通过测试,您必须将应用预加载到系统映像上的相应目录下,但不能对它们重新签名。
存储空间要求
CTS 媒体压力测试要求将视频剪辑存放在外部存储设备 (/sdcard
) 上。大部分剪辑来自 Big Buck Bunny,其版权归 Blender Foundation 所有并采用 Creative Commons Attribution 3.0 许可。
所需空间取决于设备支持的最高视频播放分辨率(要查看所需分辨率的平台版本,请参阅兼容性定义文档中的第 5 部分)。请注意,被测设备的视频播放功能将通过 android.media.CamcorderProfile
API(针对早期 Android 版本)和 android.media.MediaCodecInfo.CodecCapabilities
API(针对 Android 5.0)进行检测。
以下是按最大视频播放分辨率列出的存储空间要求:
- 480x360:98 MB
- 720x480:193 MB
- 1280x720:606 MB
- 1920x1080:1863 MB
屏幕和存储空间
- 任何没有嵌入式屏幕的设备一律需要连接到屏幕。
- 如果设备具有存储卡插槽,请插入空的 SD 卡。请使用支持超高速 (UHS) 总线且具有 SDHC 或 SDXC 容量的 SD 卡,或使用至少具有 Class 10 速度的 SD 卡,以确保设备能够通过 CTS。
警告:CTS 可能会修改/清空插入设备的 SD 卡上的数据。
- 如果设备具有 SIM 卡插槽,请将激活的 SIM 卡插入每个插槽。如果设备支持短信,则应填充每个 SIM 卡的号码字段。
开发者 UICC
为了执行 CTS 运营商 API 测试,该设备需要使用运营商授权的 SIM 卡。请参阅准备 UICC。
Android 设备配置
- 将设备恢复出厂设置:设置 > 备份和重置 > 恢复出厂设置
警告:这将清空设备中的所有用户数据。
- 将设备的语言设置为英语(美国):设置 > 语言和输入法 > 语言
- 如果设备具有 GPS 或 WLAN/移动网络功能,则打开位置信息设置:设置 > 位置信息 > 开启
- 连接到满足以下要求的 WLAN 网络:支持 IPv6,可以将被测设备 (DUT) 视为隔离的客户端(请参阅上文的物理环境部分),并可以连接到互联网:设置 > WLAN
- 确保设备上未设置锁定图案或密码:设置 > 安全 > 屏幕锁定 > 无
- 在设备上启用 USB 调试:设置 > 开发者选项 > USB 调试。
注意:在 Android 4.2 及更高版本中,默认情况下会隐藏开发者选项。要显示这些选项,请依次转到设置 > 关于手机,然后点按版本号七次。返回上一屏幕以查找开发者选项。要查看其他详细信息,请参阅启用设备上的开发者选项。
- 确保将时间设置为 12 小时格式:设置 > 日期和时间 > 使用 24 小时制 > 关闭
- 依次选择:设置 > 开发者选项 > 不锁定屏幕 > 开启
- 依次选择:设置 > 开发者选项 > 允许模拟位置 > 开启
注意:此模拟位置设置仅适用于 Android 5.x 和 4.4.x。
- 依次选择:设置 > 开发者选项 > 通过 USB 验证应用 > 关闭
注意:此验证应用步骤在 Android 4.2 中为必需步骤。
- 启动浏览器并关闭任何启动/设置屏幕。
- 使用 USB 数据线连接用于测试设备的台式机
注意:将运行 Android 4.2.2 或更高版本的设备连接到计算机时,系统会显示一个对话框,询问您是否接受允许通过此计算机进行调试的 RSA 密钥。选择“允许 USB 调试”。
- 在设备上安装和配置帮助程序应用。
注意:对于 CTS 版本 2.1 R2 至 4.2 R4,请通过以下命令设置您的设备(或模拟器),以便执行无障碍测试:
adb install -r android-cts/repository/testcases/CtsDelegatingAccessibilityService.apk
在设备上,依次启用:设置 > 无障碍 > 无障碍 > Delegating Accessibility Service注意:对于 7.0 之前的 CTS 版本,请在声明
android.software.device_admin
的设备上,使用以下命令设置您的设备,以便执行设备管理测试:
adb install -r android-cts/repository/testcases/CtsDeviceAdmin.apk
依次选择“设置”>“安全”>“设备管理器”,然后启用两个
android.deviceadmin.cts.CtsDeviceAdminReceiver*
设备管理器。确保android.deviceadmin.cts.CtsDeviceAdminDeactivatedReceiver
和任何其他预加载的设备管理器均保持停用状态。 - 将 CTS 媒体文件复制到设备上,如下所示:
注意:对于 CTS 2.3 R12 及更高版本,如果设备支持视频编解码器,则必须将 CTS 媒体文件复制到设备上。
- 导航 (cd) 到下载并解压缩媒体文件的目标路径。
- 更改文件权限:
chmod u+x copy_media.sh
- 运行
copy_media.sh
:- 要复制分辨率不超过 720x480 的剪辑,请运行:
./copy_media.sh 720x480
- 如果您不确定最大分辨率,请尝试运行
./copy_media.sh all
,以便复制所有文件。 - 如果 adb 下有多个设备,请将 -s(序列号)选项添加到末尾。例如,要将分辨率不超过 720x480 的文件复制到序列号为 1234567 的设备,请运行:
./copy_media.sh 720x480 -s 1234567
- 要复制分辨率不超过 720x480 的剪辑,请运行: