| <html devsite><head> |
| <title>设置 CTS</title> |
| <meta name="project_path" value="/_project.yaml"/> |
| <meta name="book_path" value="/_book.yaml"/> |
| </head> |
| <body> |
| <!-- |
| Copyright 2017 The Android Open Source Project |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <h2 id="physical_environment">物理环境</h2> |
| |
| <h3 id="ble_beacons">蓝牙 LE 信标</h3> |
| <p>如果 DUT 支持蓝牙 LE 功能,则应在与 DUT 的距离不超过五米的范围内放置至少三个蓝牙 LE 信标,以进行蓝牙 LE 扫描测试。这些信标可以为任何类型,不需要进行配置或发射任何特定信号,并且可以包括 iBeacon、Eddystone,甚至模拟 BLE 信标的设备。</p> |
| |
| <h3 id="camera">相机</h3> |
| <p>在运行相机 CTS 时,建议您使用正常光照条件,并且测试图案图表(例如棋盘图案)不要与镜头靠得太近(具体距离取决于设备的最小焦距)。</p> |
| |
| <p>如果 DUT 支持外部相机(如 USB 网络摄像头),则在运行 CTS 时必须将外部相机连接到充电器,否则 CTS 测试将失败。</p> |
| |
| <h3 id="gnss">GPS/GNSS</h3> |
| <p>如果 DUT 支持全球定位系统 (GPS)/全球导航卫星系统 (GNSS) 功能,则应该以合适的信号电平向 DUT 提供 GPS/GNSS 信号(GPS 部分符合 ICD-GPS-200C 标准),以便其接收到相应信号并计算 GPS 位置。GPS/GNSS 信号源的种类不限(可以是卫星模拟器,也可以是室外 GPS/GNSS 信号中继器),只需将 DUT 放在距离窗口足够近的位置以使其可以直接接收到足够强的 GPS/GNSS 信号即可。</p> |
| |
| <aside class="caution"> |
| <strong>请注意</strong>:在进行 GPS 测试时,请确保互联网连接设置未屏蔽 supl.google.com 的 7276 端口的连接。该端口将用于下载 GPS 辅助数据,以便在本地设备上测试位置计算。 |
| </aside> |
| |
| <h3 id="wifi">WLAN 和 IPv6</h3> |
| <p>CTS 测试需要满足以下要求的 WLAN 网络:支持 IPv6,可以将被测设备 (DUT) 视为隔离客户端,并可以连接到互联网。隔离客户端是一种配置,可使 DUT 无法接收子网络上的广播/多网消息;这种配置可通过 WLAN AP 配置或通过在未连接其他设备的隔离子网络上运行 DUT 来实现。</p> |
| |
| <p>如果您无法访问原生 IPv6 网络、IPv6 运营商网络或 IPv6 VPN,以致无法通过基于 IPv6 的一些测试,则可以改为使用 WLAN 接入点和 IPv6 隧道。请参阅维基百科 <a href="http://en.wikipedia.org/wiki/List_of_IPv6_tunnel_brokers">IPv6 隧道代理列表</a>。</p> |
| |
| <h3 id="rtt">Wi-Fi RTT(往返时间)</h3> |
| <p>Android 9 针对 <a ref="/devices/tech/connect/wifi-rtt">WLAN RTT</a> 功能增加了一个 API,此 API 允许设备测量自身与接入点之间的距离(误差幅度在 1 到 2 米内),从而显著提高室内位置信息精确度。以下是支持 WLAN RTT 的两款推荐设备:<a href="https://store.google.com/product/google_wifi">Google Wifi</a> 和 <a href="https://fit-iot.com/web/products/fitlet2/">Compulab 的 Filet2 接入点</a>(使用 5GHz 频段,带宽设为 40MHz)。</p> |
| |
| <p>接入点应接入电源,但无需连接到任何网络。接入点无需紧挨着测试设备,但建议将其放置在距离 DUT 40 英尺的位置。通常情况下,一个接入点就足够了。</p> |
| |
| <h2 id="desktop_setup">台式机设置</h2> |
| <aside class="caution"><strong>注意</strong>:CTS 目前支持 64 位 Linux 和 Mac OS 主机。CTS 无法在 Windows 操作系统上运行。</aside> |
| |
| <h3 id="adb">ADB 和 AAPT</h3> |
| <p>在运行 CTS 之前,请确保您已安装最新版本的 <a href="http://developer.android.com/tools/help/adb.html">Android 调试桥 (adb)</a> 和 <a href="http://developer.android.com/guide/topics/manifest/uses-feature-element.html#testing">Android 资源打包工具 (AAPT)</a>,并将这些工具的位置添加到计算机的系统路径中。</p> |
| |
| <p>要安装 ADB,请下载适用于您的操作系统的 <a href="http://developer.android.com/sdk/index.html#Other">Android SDK 工具</a>包,打开它,然后按照附带的 README 文件中的说明进行操作。要了解问题排查相关信息,请参阅<a href="http://developer.android.com/sdk/installing/index.html?pkg=tools">安装独立 SDK 工具</a>。</p> |
| |
| <p>确保 <code>adb</code> 和 <code>aapt</code> 位于您的系统路径下。以下命令假定您已在主目录中打开了软件包归档文件:</p> |
| <hr /> |
| <pre class="devsite-terminal devsite-click-to-copy"> |
| export PATH=$PATH:$HOME/android-sdk-linux/build-tools/<version> |
| </pre> |
| |
| <p class="note"><strong>注意:</strong>请确保起始路径和目录名称均准确无误。</p> |
| |
| <h3 id="JDK">Java 开发套件 (JDK)</h3> |
| <p>安装正确版本的 Java 开发套件 (JDK)。对于 Android 7.0 - |
| </p> |
| <ul> |
| <li>在 Ubuntu 上,使用 <a href="http://openjdk.java.net/install/">OpenJDK 8</a>。 |
| </li><li>在 Mac OS 上,使用 <a href="http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html#jdk-8u45-oth-JPR">jdk 8u45 或更高版本</a>。</li> |
| </ul> |
| <p> |
| 如需了解详情,请参阅 <a href="/setup/requirements.html#jdk">JDK 要求</a>。 |
| </p> |
| |
| <h3 id="CTS_files">CTS 文件</h3> |
| |
| <p><a href="downloads.html">下载</a>并打开与您设备的 Android 版本以及您的设备支持的所有应用二进制接口 (ABI) 相匹配的 CTS 包。</p> |
| |
| <p>下载并打开最新版本的 <a href="downloads.html#cts-media-files">CTS 媒体文件</a>。</p> |
| |
| <h3 id="system_detect">设备检测</h3> |
| <p>请按照相应的步骤<a href="http://developer.android.com/tools/device.html#setting-up">设置您的系统以检测设备</a>,例如为 Ubuntu Linux 创建 <code>udev</code> 规则文件。</p> |
| |
| <h2 id="device_setup">Android 设备设置</h2> |
| |
| <h3 id="user_builds">用户版本</h3> |
| |
| <p>兼容的设备被定义为具有 user/release-key 签名版本的设备,因此您的设备应运行基于<a href="/setup/build-numbers.html">代号、标签和版本号</a>中已知兼容的用户版本(Android 4.0 及更高版本)的系统映像。<br /> |
| |
| </p><p class="caution"><strong>注意:</strong>使用 CTS 确认最终系统映像的 Android 兼容性时,您必须在具有用户版本的设备上执行 CTS。</p> |
| |
| <h3 id="first-api-level">初始 API 级别版本属性</h3> |
| |
| <p>某些 CTS 要求取决于设备最初搭载的版本。例如,如果设备最初搭载的是较低的版本,则不一定需要遵循适用于搭载较高版本的设备的系统要求。</p> |
| |
| <p>为了保证 CTS 可读取到这些信息,设备制造商可以定义编译时属性:<code>ro.product.first_api_level</code>。该属性的值是对该设备进行商业化发布时所采用的初始 API 级别。</p> |
| |
| <p>OEM 可以将 <code>PRODUCT_PROPERTY_OVERRIDES</code> 添加到其 device.mk 文件以设置这项属性,具体如以下示例所示:</p> |
| |
| <pre class="devsite-click-to-copy"> |
| #ro.product.first_api_level indicates the first api level that the device has |
| been commercially launched on. |
| PRODUCT_PROPERTY_OVERRIDES +=\ |
| ro.product.first_api_level=21 |
| </pre> |
| |
| <h4 id="android-9-higher">Android 9 及更高版本的初始 API 级别</h4> |
| |
| <p>对于搭载 Android 9 或更高版本的设备,请将属性 <code>ro.product.first_api_level</code> 设置为在<a href="/setup/start/build-numbers">代号、标记和细分版本号</a>上找到的有效值。 |
| </p> |
| |
| <h4 id="android-8x-lower">Android 8.x 及更低版本的初始 API 级别</h4> |
| |
| <p>对于搭载 Android 8.x 或更低版本的设备,请为产品的第一个版本取消设置(移除)属性 <code>ro.product.first_api_level</code>。对于所有后续版本,请将 <code>ro.product.first_api_level</code> 设置为正确的 API 级别值。这样一来,该属性便可以正确标识新产品,关于产品初始 API 级别的信息也将得以保留。如果标记处于未设置状态,则 Android 会将 <code>Build.VERSION.SDK_INT</code> 分配给 <code>ro.product.first_api_level</code>。 |
| </p> |
| |
| <h3 id="cts-shim-apps">CTS Shim 应用</h3> |
| |
| <p>Android 7.0 包含以下预编译的应用(根据<a href="https://android.googlesource.com/platform/frameworks/base/+/master/packages/CtsShim/build/">此处的源代码</a>编译),这些应用不包含除清单以外的任何代码:</p> |
| |
| <ul> |
| <li><code><a href="https://android.googlesource.com/platform/frameworks/base/+/android-7.0.0_r1/packages/CtsShim/CtsShim.apk"> |
| frameworks/base/packages/CtsShim/CtsShim.apk</a></code><br /> |
| 该 apk 文件将复制到系统映像上的 <code>/system/app/CtsShimPrebuilt.apk</code>。 |
| </li><li><code><a href="https://android.googlesource.com/platform/frameworks/base/+/android-7.0.0_r1/packages/CtsShim/CtsShimPriv.apk"> |
| frameworks/base/packages/CtsShim/CtsShimPriv.apk</a></code><br /> |
| 该 apk 文件将复制到系统映像上的 <code>/system/priv-app/CtsShimPrivPrebuilt.apk</code>。</li> |
| </ul> |
| |
| <p>CTS 会使用这些应用来测试特权和权限。要通过测试,您必须将应用预加载到系统映像上的相应目录下,但不能对它们重新签名。</p> |
| |
| <h3 id="sample-applet">示例小程序</h3> |
| <p>Android 9 引入了 Open Mobile API 测试用例,用于检查安全元件底层实现是否符合标准。这些测试用例需要安装可供 CTS 应用用于与之通信的专用小程序。用户可以使用提供的<a href="https://android-review.googlesource.com/c/platform/cts/+/700517">示例小程序</a>。</p> |
| <p>这个小程序适用于配有 eSE(嵌入式安全元件)、SIM 或 SD 的设备。要详细了解 Open Mobile API 测试用例和访问控制测试用例,请参阅<a href="/compatibility/cts/secure-element">安全元件的 CTS 测试</a>。</p> |
| |
| <h3 id="storage_requirements">存储空间要求</h3> |
| <p>CTS 媒体压力测试要求将视频剪辑存放在外部存储设备 (<code>/sdcard</code>) 上。大部分剪辑来自 <a href="https://peach.blender.org/">Big Buck Bunny</a>,其版权归 Blender Foundation 所有并采用 <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 许可</a>。</p> |
| <p>所需空间取决于设备支持的最高视频播放分辨率(要查看所需分辨率的平台版本,请参阅兼容性定义文档中的第 5 部分)。请注意,被测设备的视频播放功能将通过 <code>android.media.CamcorderProfile</code> API(针对早期 Android 版本)和 <code>android.media.MediaCodecInfo.CodecCapabilities</code> API(针对 Android 5.0 及更高版本)进行检测。</p> |
| <p>以下是按最大视频播放分辨率列出的存储空间要求:</p> |
| <ul> |
| <li>480x360: 98MB |
| </li><li>720x480: 193MB |
| </li><li>1280x720: 606MB |
| </li><li>1920x1080: 1863MB |
| </li></ul> |
| |
| <h3 id="screen_storage">屏幕和存储空间</h3> |
| <ol> |
| <li>任何没有嵌入式屏幕的设备一律需要连接到屏幕。</li> |
| <li>如果设备具有存储卡插槽,请插入空的 SD 卡。<em>请使用支持超高速 (UHS) 总线且具有 SDHC 或 SDXC 容量的 SD 卡,或使用至少具有 Class 10 速度的 SD 卡,以确保设备能够通过 CTS。</em> |
| <p class="warning"><strong>警告:</strong>CTS 可能会修改/清空插入设备的 SD 卡上的数据。</p> |
| </li> |
| <li>如果设备具有 SIM 卡插槽,请将激活的 SIM 卡插入每个插槽。如果设备支持短信,则应填充每个 SIM 卡的号码字段。</li> |
| </ol> |
| |
| <h3 id="developer_uicc">开发者 UICC</h3> |
| |
| <p>为了执行 CTS 运营商 API 测试,该设备需要使用运营商授权的 SIM 卡。请参阅<a href="/devices/tech/config/uicc.html#prepare_uicc">准备 UICC</a>。</p> |
| |
| <h2 id="config_device">Android 设备配置</h2> |
| <ol> |
| <li>将设备恢复出厂设置:<strong>设置 > 备份和重置 > 恢复出厂设置</strong> |
| <p class="warning"><strong>警告:</strong>这将清空设备中的所有用户数据。</p> |
| </li><li>将设备的语言设置为英语(<strong>美国</strong>):<strong>设置 > 语言和输入法 > 语言</strong> |
| </li><li>如果设备具有 GPS 或 WLAN/移动网络功能,则打开位置信息设置:<strong>设置 > 位置信息 > 开启</strong> |
| </li><li>连接到满足以下要求的 WLAN 网络:支持 IPv6,可以将被测设备 (DUT) 视为隔离客户端(请参阅上文的<a href="#physical_environment">物理环境</a>部分),并可连接到互联网。具体操作方法为:<strong>设置 > WLAN</strong><em></em> |
| </li><li>确保设备上未设置锁定图案或密码:<strong>设置 > 安全 > 屏幕锁定 > 无</strong> |
| </li><li>在设备上启用 <strong>USB 调试</strong>:<strong>设置 > 开发者选项 > USB 调试</strong>。 |
| <p class="note"><strong>注意:</strong>在 Android 4.2 及更高版本中,默认情况下会隐藏<strong>开发者选项</strong>。要显示这些选项,请依次转到<strong>设置 > 关于手机</strong>,然后点按<strong>版本号</strong>七次。返回上一屏幕以查找<strong>开发者选项</strong>。要查看其他详细信息,请参阅<a href="http://developer.android.com/studio/run/device.html#developer-device-options">启用设备上的开发者选项</a>。</p> |
| </li><li>确保将时间设置为 12 小时格式:<strong>设置 > 日期和时间 > 使用 24 小时制 > 关闭</strong> |
| </li><li>依次选择:<strong>设置 > 开发者选项 > 不锁定屏幕 > 开启</strong> |
| </li><li>依次选择:<strong>设置 > 开发者选项 > 允许模拟位置 > 开启</strong> |
| <p class="note"><strong>注意:</strong>此模拟位置设置仅适用于 Android 5.x 和 4.4.x。</p> |
| </li><li>依次选择:<strong>设置 > 开发者选项 > 通过 USB 验证应用 > 关闭</strong> |
| <p class="note"><strong>注意:</strong>此验证应用步骤在 Android 4.2 中为必需步骤。</p> |
| </li><li>启动浏览器并关闭任何启动/设置屏幕。 |
| </li><li>使用 USB 数据线连接用于测试设备的台式机<p class="note"><strong>注意:</strong>将运行 Android 4.2.2 或更高版本的设备连接到计算机时,系统会显示一个对话框,询问您是否接受允许通过此计算机进行调试的 RSA 密钥。选择“允许 USB 调试”。<em></em></p> |
| </li><li>在设备上安装和配置帮助程序应用。 |
| <p class="note"><strong>注意:</strong>对于 CTS 版本 2.1 R2 至 4.2 R4,请通过以下命令设置您的设备(或模拟器),以便执行无障碍测试:<br /> |
| <code>adb install -r android-cts/repository/testcases/CtsDelegatingAccessibilityService.apk</code><br /> |
| 在设备上,依次启用:<strong>设置 > 无障碍 > 无障碍 > Delegating Accessibility Service</strong></p> |
| <p class="note"><strong>注意:</strong>对于 7.0 之前的 CTS 版本,请在声明 <code>android.software.device_admin</code> 的设备上设置您的设备,以使用以下命令执行设备管理测试:<br /> |
| <code>adb install -r android-cts/repository/testcases/CtsDeviceAdmin.apk</code><br /> |
| </p><p>依次选择“设置”>“安全”>“选择设备管理器”,然后启用两个 <code>android.deviceadmin.cts.CtsDeviceAdminReceiver*</code> 设备管理器。确保 <code>android.deviceadmin.cts.CtsDeviceAdminDeactivatedReceiver</code> 和任何其他预加载的设备管理器均保持停用状态。 |
| </p> |
| </li><li>将 CTS 媒体文件复制到设备上,如下所示:<p class="note"><strong>注意:</strong>对于 CTS 2.3 R12 及更高版本,如果设备支持视频编解码器,则必须将 CTS 媒体文件复制到设备上。</p> |
| <ul> |
| <li>导航 (cd) 到下载并解压缩媒体文件的目标路径。 |
| </li><li>更改文件权限:<code>chmod u+x copy_media.sh</code> |
| </li><li>运行 <code>copy_media.sh</code>: |
| <ul> |
| <li>要复制分辨率不超过 720x480 的剪辑,请运行:<code>./copy_media.sh 720x480</code> |
| </li><li>如果您不确定最大分辨率,请尝试运行 <code>./copy_media.sh all</code>,以便复制所有文件。 |
| </li><li>如果 adb 下有多个设备,请将 -s(序列号)选项添加到末尾。例如,要将分辨率不超过 720x480 的文件复制到序列号为 1234567 的设备,请运行:<code>./copy_media.sh 720x480 -s 1234567</code> |
| </li></ul> |
| </li></ul> |
| </li></ol> |
| |
| </body></html> |