| page.title=Setting up CTS |
| @jd:body |
| |
| <!-- |
| Copyright 2015 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. |
| --> |
| <div id="qv-wrapper"> |
| <div id="qv"> |
| <h2>In this document</h2> |
| <ol id="auto-toc"> |
| </ol> |
| </div> |
| </div> |
| |
| <h2 id=physical_environment>Physical environment</h2> |
| <h3 id=wifi>Wi-Fi and IPv6</h3> |
| <p>CTS tests require a Wi-Fi network that supports IPv6, can treat the Device |
| Under Test (DUT) as an isolated client, and has an internet |
| connection. An isolated client refers to a |
| configuration where the DUT does not have visibility to the |
| broadcast/multinetwork messages on that subnetwork, either by a Wi-Fi AP |
| configuration or by running the DUT on an isolated sub-network without |
| other devices being connected.</p> |
| |
| <p>If you don't have access to a native IPv6 network, an IPv6 carrier network, |
| or a VPN to pass some tests depending on IPv6, you may instead use a Wi-Fi |
| access point and an IPv6 tunnel. See Wikipedia <a |
| href="http://en.wikipedia.org/wiki/List_of_IPv6_tunnel_brokers">list of IPv6 |
| tunnel brokers</a>.</p> |
| |
| <h3 id=ble_beacons>Bluetooth LE beacons</h3> |
| <p>If the DUT supports the Bluetooth LE feature, then at least three |
| Bluetooth LE beacons should be placed within five meters of the DUT for Bluetooth |
| LE scan testing. Those beacons can be any kind, do not need to be |
| configured or emit anything specific, and can include iBeacon, |
| Eddystone, or even devices simulating BLE beacons.</p> |
| |
| <h2 id=desktop_setup>Desktop machine setup</h2> |
| <p>CTS currently supports 64-bit Linux and Mac OS host machines.</p> |
| |
| <h3 id=adb>ADB and AAPT</h3> |
| <p>Before running the CTS, make sure you have recent versions of both <a |
| href="http://developer.android.com/tools/help/adb.html">Android Debug |
| Bridge (adb)</a> and <a |
| href="http://developer.android.com/guide/topics/manifest/uses-feature-element.html#testing">Android |
| Asset Packaging Tool (AAPT)</a> installed and those tools' location added |
| to the system path of your machine.</p> |
| |
| <p>To install ADB, download the <a |
| href="http://developer.android.com/sdk/index.html#Other">Android SDK Tools</a> |
| package for your operating system, open it, and follow the instructions in the |
| included README file. For troubleshooting information, see <a |
| href="http://developer.android.com/sdk/installing/index.html?pkg=tools">Installing |
| the Stand-alone SDK Tools</a>.</p> |
| |
| <p>Ensure <code>adb</code> and <code>aapt</code> are in your system path. The |
| following command assumes you've opened the package archive in your home |
| directory:</p> |
| <hr> |
| <pre> |
| $ export PATH=$PATH:$HOME/android-sdk-linux/build-tools/<version> |
| </pre> |
| |
| <p class="note"><strong>Note:</strong> Please ensure your starting path and |
| directory name are correct.</p> |
| |
| <h3 id=JDK>Java Development Kit (JDK)</h3> |
| <p>Install the proper version of the Java Development Kit (JDK). For Android 7.0— |
| </p> |
| <ul> |
| <li>On Ubuntu, use <a href="http://openjdk.java.net/install/">OpenJDK 8</a>. |
| <li>On Mac OS, use <a |
| href="http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html#jdk-8u45-oth-JPR">jdk |
| 8u45 or newer</a>.</li> |
| </ul> |
| <p> |
| For details, see the <a href="https://source.android.com/source/requirements.html#jdk">JDK |
| requirements</a>. |
| </p> |
| |
| <h3 id=CTS_files>CTS files</h3> |
| |
| <p><a href="downloads.html">Download</a> and open the CTS |
| packages matching your devices' Android version and all the Application Binary |
| Interfaces (ABIs) your devices support.</p> |
| |
| <p>Download and open the latest version of the <a |
| href="downloads.html#cts-media-files">CTS Media |
| Files</a>.</p> |
| |
| <h3 id=system_detect>Device detection</h3> |
| <p>Follow the step to <a |
| href="http://developer.android.com/tools/device.html#setting-up">set up your |
| system to detect your device</a>, such as creating a <code>udev</code> rules |
| file for Ubuntu Linux.</p> |
| |
| <h2 id=device_setup>Android device setup</h2> |
| |
| <h3 id=user_builds>User builds</h3> |
| |
| <p>A compatible device is defined as a device with a user/release-key signed |
| build, so your device should be running a system image based on the known to be |
| compatible user build (Android 4.0 and later) from <a |
| href="{@docRoot}source/build-numbers.html">Codenames, Tags, and Build |
| Numbers</a>.<br> |
| |
| <p class="caution"><strong>Caution:</strong> When used to confirm Android |
| compatibility of your final system image, CTS must be executed on devices with |
| a user build.</p> |
| |
| <h3 id=first-api-level>First API level build property</h3> |
| |
| <p>Certain CTS requirements depend on the build a device was originally shipped |
| with. For example, devices that originally ship with earlier builds may be excluded from |
| system requirements that apply to devices that ship with later builds.</p> |
| |
| <p>To make this information available to CTS, device manufacturers may define |
| the build-time property: <code>ro.product.first_api_level</code>. The value of this |
| property is the first API level the device was commercially launched with.</p> |
| |
| <p>OEMs can add <code>PRODUCT_PROPERTY_OVERRIDES</code> into their device.mk file to set |
| this property, as shown in the following example: </p> |
| |
| <pre> |
| #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 |
| </pre> |
| |
| <h3 id=cts-shim-apps>CTS Shim apps</h3> |
| |
| <p> Android 7.0 includes the following pre-built apps (built from <a |
| href="https://android.googlesource.com/platform/frameworks/base/+/master/packages/CtsShim/build/">this |
| source</a>) which do not contain any code except for the manifest: </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> |
| This apk file is copied to <code>/system/app/CtsShimPrebuilt.apk</code> |
| on the system image. |
| <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> |
| This apk file is copied to <code>/system/priv-app/CtsShimPrivPrebuilt.apk</code> |
| on the system image.</li> |
| </ul> |
| |
| <p> CTS uses these apps to test privileges and permissions. To pass the tests, you must |
| preload the apps into the appropriate directories on the system image without |
| re-signing them.</p> |
| |
| <h3 id=storage_requirements>Storage requirements</h3> |
| <p>The CTS media stress tests require video clips to be on external storage |
| (<code>/sdcard</code>). Most of the clips are from <a |
| href="https://peach.blender.org/">Big Buck Bunny</a> which is copyrighted by |
| the Blender Foundation under theĀ <a |
| href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 license.</a></p> |
| <p>The required space depends on the maximum video playback resolution supported |
| by the device (See section 5 in the compatibility definition document for the |
| platform version of the required resolutions.) Note that the video playback |
| capabilities of the device under test will be checked via the <code>android.media.CamcorderProfile</code> APIs for earlier versions of Android and the <code>android.media.MediaCodecInfo.CodecCapabilities</code> APIs from Android 5.0.</p> |
| <p>Here are the storage requirements by maximum video playback resolution:</p> |
| <ul> |
| <li>480x360: 98MB |
| <li>720x480: 193MB |
| <li>1280x720: 606MB |
| <li>1920x1080: 1863MB |
| </ul> |
| |
| <h3 id=screen_storage>Screen and storage</h3> |
| <ol> |
| <li>Any device that does not have an embedded screen needs to be connected to a screen.</li> |
| <li>If the device has a memory card slot, plug in an empty SD card. <em>Use an |
| SD card that supports Ultra High Speed (UHS) Bus with SDHC or SDXC capacity or |
| one with at least speed class 10 or higher to ensure it can pass the CTS.</em> |
| <p class="warning"><strong>Warning:</strong> CTS may modify/erase data on the SD card plugged into the device.</p> |
| </li> |
| <li>If the device has SIM card slots, plug in an activated SIM card to each slot. If the device supports SMS, each SIM card should have its own number field populated.</li> |
| </li> |
| </ol> |
| |
| <h3 id=developer_uicc>Developer UICC</h3> |
| |
| <p>In order to run CTS carrier API tests, the device needs to has a SIM card |
| with carrier privilege rules on it. See <a |
| href="{@docRoot}devices/tech/config/uicc.html#prepare_uicc">Preparing |
| the UICC</a>.</p> |
| |
| <h2 id=config_device>Android device configuration</h2> |
| <ol> |
| <li>Factory data reset the device: <strong>Settings > Backup & reset > Factory data reset</strong> |
| <p class="warning"><strong>Warning:</strong> This will erase all user data from the device.</em></p> |
| <li>Set your device's language to English (<strong>United States</strong>) from: <strong>Settings > Language |
| & input > Language</strong> |
| <li>Turn on the location setting if there is a GPS or Wi-Fi / Cellular network |
| feature on the device: <strong>Settings > Location > On</strong> |
| <li>Connect to a Wi-Fi network that supports IPv6, can treat the Device |
| Under Test (DUT) as an <em>isolated client</em> (see the <a |
| href="#physical_environment">Physical Environment</a> section above), and has an |
| internet connection: <strong>Settings > Wi-Fi</strong> |
| <li>Make sure no lock pattern or password is set on the device: <strong>Settings > Security > Screen |
| lock > None</strong> |
| <li>Enable <strong>USB debugging</strong> on your device: <strong>Settings > Developer options > USB debugging</strong>. |
| <p class="note"><strong>Note:</strong> On Android 4.2 and later, <strong>Developer |
| options</strong> is hidden by default. To make them available, go |
| to <strong>Settings > About phone</strong> and tap <strong>Build number</strong> |
| seven times. Return to the previous screen to find <strong>Developer |
| options</strong>. See <a |
| href="http://developer.android.com/studio/run/device.html#developer-device-options">Enabling |
| On-device Developer Options</a> for additional details.</p> |
| <li>Make sure the time is set to 12-hour format: <strong>Settings > Date & time > Use 24-hour format > Off</strong> |
| <li>Select: <strong>Settings > Developer options > Stay Awake > On</strong> |
| <li>Select: <strong>Settings > Developer options > Allow mock locations > On</strong> |
| <p class="note"><strong>Note:</strong> This mock locations setting is applicable only in Android 5.x and 4.4.x.</p> |
| <li>Select: <strong>Settings > Developer options > Verify apps over USB > Off</strong> |
| <p class="note"><strong>Note:</strong> This verify apps step became required in Android 4.2.</p> |
| <li>Launch the browser and dismiss any startup/setup screen. |
| <li>Connect the desktop machine that will be used to test the device with a USB cable |
| <p class="note"><strong>Note:</strong> When you connect a device running Android 4.2.2 or later |
| to your computer, the system shows a dialog asking whether to accept an RSA key that allows |
| debugging through this computer. Select <em>Allow USB debugging</em>.</p> |
| <li> Install and configure helper apps on the device. |
| <p class="note"><strong>Note:</strong> For CTS versions 2.1 R2 through 4.2 R4</em>, set up your device (or emulator) |
| to run the accessibility tests with:<br> |
| <code>adb install -r android-cts/repository/testcases/CtsDelegatingAccessibilityService.apk</code><br> |
| On the device, enable: <strong>Settings > Accessibility > Accessibility > |
| Delegating Accessibility Service</strong></p> |
| <p class="note"><strong>Note:</strong> For CTS versions prior to 7.0, on devices that declare |
| <code>android.software.device_admin</code>, set up your device to run |
| the device administration test using:<br> |
| <code>adb install -r android-cts/repository/testcases/CtsDeviceAdmin.apk</code><br> |
| <p> |
| In Settings > Security > Select device administrators, enable the two |
| <code>android.deviceadmin.cts.CtsDeviceAdminReceiver*</code> device |
| administrators. Ensure the |
| <code>android.deviceadmin.cts.CtsDeviceAdminDeactivatedReceiver</code> and any |
| other preloaded device administrators remain disabled. |
| </p> |
| <li>Copy the CTS media files to the device as follows: |
| <p class="note"><strong>Note:</strong> For CTS 2.3 R12 and later, if the |
| device supports video codecs, the CTS media files must be copied to the |
| device.</p> |
| <ul> |
| <li>Navigate (cd) to the path the media files are downloaded and unzipped to. |
| <li>Change the file permissions: <code>chmod u+x copy_media.sh</code> |
| <li>Run <code>copy_media.sh</code>: |
| <ul> |
| <li>To copy clips up to a resolution of 720x480, run: <code>./copy_media.sh 720x480</code> |
| <li>If you are not sure about the maximum resolution, try <code>./copy_media.sh all</code> so that all files are copied. |
| <li>If there are multiple devices under adb, add the -s (serial) option to the end. |
| For example, to copy up to 720x480 to the device with serial 1234567, run: <code>./copy_media.sh 720x480 -s 1234567</code> |
| </ul> |
| </ul> |
| </ol> |