CTS を実行するには、まず物理環境、デスクトップ マシン、テストに使用する Android デバイスを準備します。
物理的環境
Bluetooth LE ビーコン
テスト対象デバイス (DUT) が Bluetooth LE をサポートしている場合は、Bluetooth LE スキャン テストのために DUT から 5 メートル以内に少なくとも 3 つの Bluetooth LE ビーコンを配置します。これらのビーコンは、特定のものを構成したり発信したりする必要はなく、iBeacon、Eddystone、さらには BLE ビーコンをシミュレートするデバイスなど、あらゆる種類のものを使用できます。
超広帯域
DUT がウルトラワイドバンド (UWB) をサポートしている場合は、UWB をサポートしている別のデバイスを十分近くに配置し、アンテナや無線デッド ゾーンが発生しないような方向に配置する必要があります。距離精度テストの場合、特定の位置と方向のニーズがあります。セットアップの詳細については、 「UWB 要件」を参照してください。 UWB テストは、コマンド ラインで 1 メートル離れている 2 台のデバイスを指定して、手動で実行する必要があります。このテストに必要なシャーディングの詳細については、 「ローカル シャーディング」を参照してください。
カメラ
カメラ 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 をサポートし、IPv4 と IPv6 で動作する DNS とのインターネット接続があり、IP マルチキャストをサポートし、DUT を分離されたクライアントとして扱うことができる Wi-Fi ネットワークが必要です。分離されたクライアントは、 DUT がそのサブネットワーク上のブロードキャスト/マルチネットワーク メッセージを認識できない構成です。これは、Wi-Fi アクセス ポイント (AP) 構成で発生するか、他のデバイスが接続されていない隔離されたサブネットワーク上で DUT を実行することによって発生します。
ネイティブ IPv6 ネットワーク、IPv6 キャリア ネットワーク、または IPv6 に応じたテストに合格するための VPN にアクセスできない場合は、Wi-Fi アクセス ポイントと IPv6 トンネルを使用できます。
CTS を通過するには、DUT は Wi-Fi インターフェイスにUP
、 BROADCAST
、およびMULTICAST
フラグを設定する必要があります。 Wi-Fi インターフェイスには、IPv4 および IPv6 アドレスが割り当てられている必要があります。 adb shell ifconfig
を使用して Wi-Fi インターフェイスのプロパティを確認します。
Wi-Fi STA/STA 同時実行をサポートするデバイスの場合、複数の Wi-Fi ネットワーク (少なくとも 2 つ) が必要です。 CTS を通過するには、Wi-Fi ネットワークが異なる SSID を持つ異なる帯域で実行されるか、または異なる BSSID を持つ同じ SSID 上で実行される必要があります。
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 つのアクセス ポイントで十分です。
デスクトップマシンのセットアップ
注意: CTS は 64 ビット Linux マシンをサポートしています。 CTS は Windows OS または MacOS ではサポートされていません。
FFMPEG
ffmpeg バージョン 5.1.3 (またはそれ以降) パッケージをホスト マシンにインストールします。
ホストマシンのアップグレード
CTS ホスト マシンの RAM を 128 GB に、HDD を 256 GB にアップグレードすることを強くお勧めします。これは、CTS テスト ケースの数の増加と、trafed での Java ヒープ領域予約の増加に対応するために必要です。
ADB と AAPT2
CTS を実行する前に、 Android Debug Bridge (adb)とAndroid Asset Packaging Tool (AAPT2)の両方の最新バージョンがインストールされていること、およびそれらのツールの場所がマシンのシステム パスに追加されていることを確認してください。
ADB と AAPT2 をインストールするには、Android Studio のSDK マネージャーまたはsdkmanagerコマンド ライン ツールから最新のAndroid SDK プラットフォーム ツールとAndroid SDK ビルド ツールをダウンロードします。
adb
とaapt2
システム パスにあることを確認してください。次のコマンドは、パッケージ アーカイブがホーム ディレクトリの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 パッケージをダウンロードして開きます。
最新バージョンの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 シム パッケージ
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がサポートされている場合) | プリロード | ||
---|---|---|---|---|
腕 | x86 | 腕 | x86 | |
アンドロイド14 | android14-arm-release | android14-x86-リリース | android14-arm-CtsShim.apk | android14-x86-CtsShim.apk |
アンドロイド13 | android13-arm-release | android13-x86-リリース | android13-arm-CtsShim.apk | android13-x86-CtsShim.apk |
アンドロイド12 | android12-arm-release | android12-x86-リリース | android12-arm-CtsShim.apk | android12-x86-CtsShim.apk |
アンドロイド11 | android11-arm-release | android11-x86-リリース | android11-arm-CtsShim.apk | android11-x86-CtsShim.apk |
アンドロイド10 | android10-リリース | android10-arm-CtsShim.apk | android10-x86-CtsShim.apk | |
Android 9、O、O-MR1 | 該当なし | 該当なし | arm-CtsShim.apk | x86-CtsShim.apk |
テストに合格するには、アプリに再署名せずに、システム イメージ上の適切なディレクトリにアプリをプリロードします。
サンプルアプレット
Android 9 ではオープン モバイル API が導入されました。複数のセキュア エレメントを報告するデバイスの場合、CTS はオープン モバイル API の動作を検証するテスト ケースを追加します。これらのテスト ケースでは、DUT の組み込みセキュア エレメント (eSE) または DUT で使用される SIM カードにサンプル アプレットを 1 回だけインストールする必要があります。 eSE サンプル アプレットとSIM サンプル アプレットはAOSP にあります。
Open Mobile API テスト ケースおよびアクセス コントロール テスト ケースの詳細については、「セキュア エレメントの CTS テスト」を参照してください。
ストレージ要件
CTS メディア ストレス テストでは、ビデオ クリップが外部ストレージ ( /sdcard
) 上にある必要があります。クリップのほとんどはBig Buck Bunnyからのもので、クリエイティブ コモンズ表示 3.0 ライセンスに基づいて Blender Foundation によって著作権が保護されています。
必要なスペースは、デバイスがサポートする最大ビデオ再生解像度によって異なります。必要な解像度のプラットフォーム バージョンについては、Android 互換性定義ドキュメントのセクション 5 を参照してください。
最大ビデオ再生解像度別のストレージ要件は次のとおりです。
- 480x360: 98MB
- 720x480: 193MB
- 1280x720: 606MB
- 1920x1080: 1863MB
画面とストレージ
- 画面が組み込まれていないデバイスは、画面に接続する必要があります。
デバイスにメモリ カード スロットがある場合は、空の SD カードを差し込みます。 CTS を確実に通過できるように、SDHC または SDXC 容量の超高速 (UHS) バスをサポートする SD カード、または少なくともスピード クラス 10 以上の SD カードを使用してください。
デバイスに 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 をサポートし、DUT を独立したクライアントとして扱うことができ (上記の物理環境を参照)、インターネット接続がある Wi-Fi ネットワークに接続します: [設定] > [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
- メディア ファイルがダウンロードされ解凍されたパスに移動 (