CTS を実行するには、まず物理環境、デスクトップ マシン、およびテストに使用する Android デバイスを準備します。
物理的環境
Bluetooth LE ビーコン
被試験デバイス (DUT) が Bluetooth LE をサポートしている場合は、Bluetooth LE スキャン テストのために、少なくとも 3 つの Bluetooth LE ビーコンを DUT の 5 メートル以内に配置します。これらのビーコンは、構成する必要も特定のものを発行する必要もありません。また、iBeacon、Eddystone、または BLE ビーコンをシミュレートするデバイスなど、任意の種類にすることができます。
カメラ
カメラ CTS を実行するときは、テスト パターン チャート (チェッカーボード パターンなど) で通常の照明条件を使用します。 DUT の最小焦点距離に従ってテスト パターン チャートを配置し、レンズに近すぎないようにします。
テスト対象のセンサーが到達し、 CONTROL_AE_TARGET_FPS_RANGE
で指定された最大構成のターゲット フレーム/秒 (FPS) を維持できるように、カメラ センサーを十分な照明のあるシーンに向けます。これは、リストされたデバイスに対してテストが繰り返され、パフォーマンスが個別に測定されるため、 getCameraIdList
によって報告されるすべてのカメラ センサーに適用されます。
DUT が USB Web カメラなどの外部カメラをサポートしている場合は、CTS の実行時に外部カメラを接続します。そうしないと、CTS テストは失敗します。
GPS/GNSS
DUT が全地球測位システム/全地球航法衛星システム (GPS/GNSS) 機能をサポートしている場合は、受信と GPS 位置計算に適した信号レベルで GPS/GNSS 信号を DUT に提供します。 GPS 部分は ICD-GPS-200C に準拠している必要があります。それ以外の場合、GPS/GNSS 信号は、衛星シミュレーターや屋外信号の GPS/GNSS リピーターなど、あらゆる種類のものにすることができます。また、十分な GPS/GNSS 信号を直接受信できるように、DUT を窓の近くに配置することもできます。
Wi-Fi と IPv6
CTS テストには、IPv4 と IPv6 をサポートする Wi-Fi ネットワークが必要です。IPv4 と IPv6 の DNS が機能するインターネット接続があり、IP マルチキャストをサポートし、DUT を分離されたクライアントとして扱うことができます。分離されたクライアントは、 DUT がそのサブネットワーク上のブロードキャスト/マルチネットワーク メッセージを認識できない構成です。これは、Wi-Fi アクセス ポイント (AP) 構成で、または他のデバイスが接続されていない分離されたサブネットワークで DUT を実行することによって発生します。
ネイティブ IPv6 ネットワーク、IPv6 キャリア ネットワーク、または IPv6 に応じたいくつかのテストに合格するための VPN にアクセスできない場合は、Wi-Fi アクセス ポイントと IPv6 トンネルを使用できます。
CTS を渡すには、DUT はUP
、 BROADCAST
、およびMULTICAST
フラグを Wi-Fi インターフェイスに設定する必要があります。 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 をサポートする 2 つの推奨デバイスは、 Google WifiとCompulab の fitlet2 アクセス ポイント(5 GHz で 40 MHz 帯域幅に設定) です。
アクセス ポイントの電源を入れる必要がありますが、ネットワーク接続は必要ありません。アクセス ポイントは、テスト デバイスの隣に配置する必要はありませんが、DUT から 40 フィート以内に配置することをお勧めします。通常、1 つのアクセス ポイントで十分です。
デスクトップ マシンのセットアップ
ADB と AAPT
CTS を実行する前に、 Android Debug Bridge (adb)とAndroid Asset Packaging Tool (AAPT)の両方の最新バージョンをインストールし、それらのツールの場所をマシンのシステム パスに追加したことを確認してください。
ADB と AAPT をインストールするには、最新のAndroid SDK Platform ToolsとAndroid SDK Build Tools をAndroid Studio のSDK Managerまたはsdkmanagerコマンドライン ツールからダウンロードします。
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
を呼び出すことで、インストールが成功したことを確認できます。
CTS ファイル
デバイスの Android バージョンと、デバイスがサポートするすべてのアプリケーション バイナリ インターフェイス (ABI) に一致する CTS パッケージをCompatibility Test Suite Downloadsからダウンロードして開きます。
CTS メディア ファイルの最新バージョンをダウンロードして開きます。
デバイス検出
手順に従って、デバイスを検出するようにシステムをセットアップします。
メモリ制限
cts-tradfedスクリプトでのテスト実行中に使用可能な最大メモリを増やしたい場合があります。詳細については、サンプル CLを参照してください。
Android デバイスのセットアップ
ユーザービルド
互換性のあるデバイスは、ユーザー/リリース キーで署名されたビルドを持つデバイスとして定義されます。 Codenames, Tags, and Build Numbersから、互換性があることがわかっているユーザー ビルド (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, and 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
は 2 つのビルド済みアプリ (ビルド ソースからビルド) が含まれており、マニフェスト以外のコードは含まれていません。 CTS はこれらのアプリを使用して、権限とアクセス許可をテストします。
デバイスが APEX パッケージ管理をサポートしていない (つまり、 ro.apex.updatable
プロパティがないか、設定されていない) 場合、またはデバイスがバージョン 10 以下を実行している場合は、2 つのビルド済みアプリをシステム別に。
デバイスのバージョン | プレインストール (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-リリース/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 の下アーム-CtsShimPriv.apk | x86-CtsShim.apk/system/app/CtsShimPrebuilt.apk の下x86-CtsShimPriv.apk |
テストに合格するには、アプリに再署名せずに、アプリをシステム イメージの適切なディレクトリにプリロードします。
サンプル アプレット
Android 9 では Open Mobile API が導入されました。複数のセキュア エレメントを報告するデバイスの場合、CTS は Open Mobile API の動作を検証するテスト ケースを追加します。これらのテスト ケースでは、DUT の組み込みセキュア エレメント (eSE) または DUT が使用する SIM カードにサンプル アプレットを 1 回インストールする必要があります。 eSE サンプル アプレットとSIM サンプル アプレットは、AOSP にあります。
Open Mobile API テスト ケースと Access Control テスト ケースの詳細については、セキュア エレメントの CTS テストを参照してください。
ストレージ要件
CTS メディア ストレス テストでは、ビデオ クリップが外部ストレージ ( /sdcard
) にある必要があります。ほとんどのクリップはBig Buck Bunnyからのもので、クリエイティブ コモンズ 表示 3.0 ライセンスの下で Blender Foundation が著作権を所有しています。
必要な容量は、デバイスがサポートする最大ビデオ再生解像度によって異なります。必要な解像度のプラットフォーム バージョンについては、Android 互換性定義ドキュメントのセクション 5 を参照してください。
最大ビデオ再生解像度別のストレージ要件は次のとおりです。
- 480x360: 98MB
- 720x480: 193MB
- 1280×720: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 テストを実行するには、 UICC の準備で指定された要件を満たす CTS キャリア権限を持つ SIM をデバイスで使用する必要があります。
Android デバイスの構成
デバイスをデータの初期化にリセット: [設定] > [バックアップとリセット] > [データの初期化] 。
デバイスの言語を英語 (米国) に設定します: [設定] > [言語と入力] > [言語] 。
デバイスがデフォルト フォントのカスタマイズをサポートしている場合は、デフォルトの
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`
[設定] > [セキュリティ] > [デバイス管理者の選択]で、2 つの
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
) を末尾に追加します。たとえば、シリアル 1234567 のデバイスに最大 720x480 をコピーするには、次のコマンドを実行します。./copy_media.sh 720x480 -s 1234567
- メディア ファイルがダウンロードされ、解凍されたパスに移動 (