CTS を実行するには、まず、物理環境、デスクトップ マシン、テストに使用している Android デバイスを準備します。
物理環境
Bluetooth LE ビーコン
テスト対象デバイス(DUT)が Bluetooth LE をサポートしている場合、Bluetooth LE スキャンテスト用に少なくとも 3 台の Bluetooth LE ビーコンを DUT の 5 m 以内に設置します。ビーコンは設定も特定の出力も不要です。iBeacon や Eddystone、BLE ビーコンをシミュレートするデバイスなど、どんな種類のものでも構いません。
超広帯域無線
DUT が超広帯域無線(UWB)をサポートする場合、UWB をサポートする別のデバイスは十分近くに配置し、アンテナや無線通信で電波障害が発生しないように向きを調整する必要があります。距離精度テストでは、特定の位置と向きで配置する必要があります。セットアップについて詳しくは、UWB 要件をご覧ください。UWB テストは、コマンドラインで 2 つのデバイスが 1 メートル離れていることを指定して、手動で実行する必要があります。このテストに必要なシャーディングについて詳しくは、ローカル型シャーディングをご覧ください。
カメラ
カメラ CTS を実行する場合は、テストパターン チャート(チェックボード パターンなど)に通常の照明条件を使用します。テストパターン チャートを DUT の最小焦点距離に従って配置し、レンズが近すぎないようにします。
十分な照明があるシーンにカメラセンサーを向けて、テスト対象のセンサーが CONTROL_AE_TARGET_FPS_RANGE
で指定された最大設定目標 FPS(1 秒あたりのフレーム数)に到達し、それを維持するようにします。これは、getCameraIdList
で取得したカメラセンサーのすべてに適用されます。リストアップされたデバイスを順にテストし、個別に性能を測定するためです。
DUT が USB ウェブカメラなどの外部カメラをサポートしている場合は、CTS の実行時に外部カメラを接続します。そうでない場合、CTS テストは失敗します。
GPS / GNSS
DUT がグローバル ポジショニング システム / 全球測位衛星システム(GPS / GNSS)の機能をサポートしている場合は、DUT に、受信と GPS の位置計算に適した信号レベルの GPS / GNSS 信号を与える必要があります。GPS の部分は ICD-GPS-200C に準拠している必要があります。そうでない場合、GPS / GNSS の信号は、衛星シミュレータや屋外信号の GPS / GNSS 中継器など、どんな種類のものでも構いません。また、DUT を十分な GPS / GNSS 信号を直接受信できるように窓に近い場所に置いても構いません。
Wi-Fi と IPv6
CTS テストには、IPv4 と IPv6 に対応し、IPv4 と IPv6 の DNS を使用するインターネットに接続され、IP マルチキャストをサポートしており、DUT を隔離されたクライアントとして扱うことができる Wi-Fi ネットワークが必要です。隔離されたクライアントとは、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 STA/STA の同時実行をサポートするデバイスの場合は、複数の Wi-Fi ネットワーク(2 つ以上)が必要です。CTS に合格するには、Wi-Fi ネットワークの帯域幅とその SSID は異なっている必要があります。または、SSID が同じ場合は BSSID が異なっている必要があります。
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 から 12 メートル以内に置くことをおすすめします。通常、1 台のアクセス ポイントで十分です。
デスクトップ マシンのセットアップ
注意: CTS は 64 ビット Linux マシンをサポートしています。CTS は、Windows OS または MacOS ではサポートされていません。
FFmpeg
FFmpeg バージョン 5.1.3 以降のパッケージをホストマシンにインストールします。
ホストマシンのアップグレード
CTS ホストマシンの RAM を 128 GB に、HDD を 256 GB にアップグレードすることを強くおすすめします。これは、CTS テストケースの増加と tradefed で確保される Java ヒープ領域の増加に対応するために必要です。
ADB と AAPT2
CTS を実行する前に、最近のバージョンの Android Debug Bridge(adb)と Android Asset Packaging Tool(AAPT2)がインストールされており、それらのツールの場所がマシンのシステムパスに追加されていることを確認してください。
ADB と AAPT2 をインストールするには、Android Studio の SDK Manager または sdkmanager コマンドライン ツールから、最新の Android SDK Platform Tools と Android SDK Build Tools をダウンロードしてください。
adb
と aapt2
がシステムパスにあるのを確認します。次のコマンドは、ホーム ディレクトリの android-sdk
というサブディレクトリにパッケージ アーカイブをダウンロードしたことを前提としています。
export PATH=$PATH:$HOME/android-sdk/platform-tools:$HOME/android-sdk/build-tools/<tools version number>
Ubuntu 用の Java 開発キット
適切なバージョンの Java 開発キット(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 パッケージを互換性テストスイート ダウンロードからダウンロードして開きます。
最新バージョンの CTS メディア ファイルをダウンロードして開きます。
デバイスの検出
手順に沿って、デバイスを検出するようにシステムをセットアップします。
メモリ上限
cts-tradefed スクリプトの中で、テスト実行中の使用可能な最大メモリを増やすことをおすすめします。詳細については、CL の例をご覧ください。
Android デバイスのセットアップ
ユーザービルド
互換性のあるデバイスは、ユーザーキーまたはリリースキーで署名されたビルドを搭載したデバイスと定義されます。 デバイスでは、コードネーム、タグ、ビルド番号から互換性があるとわかるユーザービルド(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
プロパティにコード名、タグ、ビルド番号から有効な値を設定します。
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 shim パッケージ
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 がサポートされている場合、適切なリリースのプリインストールを /system/apex/com.android.apex.cts.shim.apex
として配置する必要があります。
通常のビルド済みアプリが使用されている場合、適切なリリースの CtsShim
と CtsShimPriv
をそれぞれ /system/app/CtsShimPrebuilt.apk
と /system/priv-app/CtsShimPrivPrebuilt.apk
として配置する必要があります。
次の表は、各バージョンおよびアーキテクチャで利用可能なプリインストールとプリロードのリストです。
デバイスのバージョン | プリインストール (APEX がサポートされている場合) |
プリロード | ||
---|---|---|---|---|
ARM | x86 | ARM | x86 | |
Android 14 | android14-arm-release | android14-x86-release | android14-arm-CtsShim.apk | android14-x86-CtsShim.apk |
Android 13 | android13-arm-release | android13-x86-release | android13-arm-CtsShim.apk | android13-x86-CtsShim.apk |
Android 12 | android12-arm-release | android12-x86-release | android12-arm-CtsShim.apk | android12-x86-CtsShim.apk |
Android 11 | android11-arm-release | android11-x86-release | android11-arm-CtsShim.apk | android11-x86-CtsShim.apk |
Android 10 | android10-release | android10-arm-CtsShim.apk | android10-x86-CtsShim.apk | |
Android 9、O、O-MR1 | なし | なし | arm-CtsShim.apk | x86-CtsShim.apk |
テストに合格するには、システム イメージ上の適切なディレクトリに、これらのアプリを再署名せずにプリロードしてください。
サンプル アプレット
Android 9 では Open Mobile API を導入しています。複数のセキュア エレメントをレポートするデバイスの場合、CTS により Open Mobile API の動作を検証するテストケースが追加されます。これらのテストケースでは、サンプル アプレットを、DUT の組み込みセキュア エレメント(eSE)または DUT で使用する SIM カードに 1 回インストールする必要があります。eSE サンプル アプレットと SIM サンプル アプレットは AOSP にあります。
Open Mobile API のテストケースとアクセス制御のテストケースの詳細については、セキュア エレメントの CTS テストをご覧ください。
ストレージ要件
CTS メディア ストレステストでは、外部ストレージ(/sdcard
)に動画クリップが必要です。クリップのほとんどは Big Buck Bunny からのものです。その著作権は Blender Foundation にあり、クリエイティブ・コモンズ表示 3.0 ライセンスのもとで提供されています。
必要な容量は、デバイスの動画再生でサポートされている最高解像度によって異なります。プラットフォームのバージョンで要求される解像度については、Android 互換性定義ドキュメントのセクション 5 をご覧ください。
動画再生の最高解像度ごとの保存容量に対する要件は次のとおりです。
- 480x360: 98 MB
- 720x480: 193 MB
- 1,280x720: 606 MB
- 1,920x1,080: 1,863 MB
ディスプレイとストレージ
- ディスプレイを搭載していないデバイスには、ディスプレイを接続する必要があります。
デバイスにメモリカード スロットがある場合は、空の SD カードを挿入します。CTS に確実に合格できるように、SDHC または SDXC の容量で、UHS バス対応であるか、スピードクラス 10 以上の SD カードを使用してください。
デバイスに SIM カードスロットがある場合は、アクティベーション済みの SIM カードをスロットに挿入します。 デバイスが SMS に対応している場合、各 SIM カードに固有の番号フィールドが設定されている必要があります。Android 12 以降を搭載したデバイスの場合、すべての SIM カードが短縮番号(ADN)の保存に対応している必要があります。通信専用ファイル(DFTelecom)を使用する GSM カードと USIM カードはこの要件を満たしています。
デベロッパー UICC
CTS キャリア API テストを実行するには、デバイスで、UICC の準備で指定されている要件を満たす、CTS キャリアの権限を持った SIM カードを使用する必要があります。
Android デバイスの設定
デバイスを出荷時設定にリセットします: [設定] > [バックアップとリセット] > [データの初期化]
デバイスの言語を英語(米国)に設定します: [設定] > [言語と入力] > [言語]
デバイスがデフォルトのフォントのカスタマイズをサポートしている場合は、デフォルトの
sans-serif
フォント ファミリーをRoboto
(AOSP ビルドで使用するデフォルトのsans-serif
フォント ファミリー)に設定します。デバイスに GPS または Wi-Fi / モバイル ネットワークの機能がある場合は、位置情報の設定をオンにします: [設定] > [位置情報] > [ON]
IPv6 対応で、DUT を隔離されたクライアント(物理環境をご覧ください)として扱うことができ、インターネットに接続している Wi-Fi ネットワークに接続します: [設定] > [Wi-Fi]
デバイスにロックパターンまたはパスワードが設定されていないことを確認します: [設定] > [セキュリティ] > [画面ロック] > [なし]
デバイスで USB デバッグを有効にします: [設定] > [開発者向けオプション] > [USB デバッグ]
時刻を 12 時間形式に変更します: [設定] > [日付と時刻] > [24 時間表示] > [OFF]
デバイスがスリープ状態にならないようにします: [設定] > [開発者向けオプション] > [スリープモードにしない] > [ON]
Android 5.x と 4.4.x の場合のみ、デバイスを仮の現在地情報を許可するように設定します: [設定] > [開発者向けオプション] > [擬似ロケーションを許可] > [ON]
Android 4.2 以降の場合、USB アプリの確認をオフにします: [設定] > [開発者向けオプション] > [USB 経由のアプリも検証] > [OFF]
Android 13 以降の場合、疑似モデムを許可するようにデバイスを設定します: [設定] > [開発者向けオプション] > [Mock Modem の許可] > [ON]
ブラウザを開き、起動画面や設定画面を閉じます。
デバイスのテストに使用するデスクトップ マシンを USB ケーブルで接続します。
CTS を実行する前に、ユーザーがアクセス可能なアフォーダンス(非表示でない)設定を使用して Roboto2 を Sans Serif フォントとして設定します。
ファイルのインストール
デバイスにヘルパーアプリをインストールして設定します。
以下の CTS バージョンごとの手順で、デバイスをセットアップします。
CTS バージョン 2.1 R2 から 4.2 R4: 以下のコマンドで、ユーザー補助テストを実行するようにデバイス(あるいはエミュレータ)をセットアップします:
adb install -r android-cts/repository/testcases/CtsDelegatingAccessibilityService.apk
デバイスで委任を有効にします: [設定] > [ユーザー補助] > [Accessibility] > [Delegating Accessibility Service]
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
)を最後に追加します。たとえば、720x480 以下をシリアル 1234567 のデバイスにコピーするには、次のコマンドを実行します。./copy_media.sh 720x480 -s 1234567
- メディア ファイルをダウンロード、展開したパスに移動(