CTSの設定

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 はUPBROADCAST 、および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 WifiCompulab の 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 ToolsAndroid SDK Build Tools をAndroid Studio のSDK Managerまたはsdkmanagerコマンドライン ツールからダウンロードします。

adbaaptシステム パスにあることを確認します。次のコマンドは、パッケージ アーカイブをホーム ディレクトリのandroid-sdkというサブディレクトリにダウンロードしたことを前提としています。

export PATH=$PATH:$HOME/android-sdk/platform-tools:$HOME/android-sdk/build-tools/<tools version number>

Ubuntu 用 Ja​​va 開発キット

適切なバージョンの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_INTro.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がサポートされている場合)
プリロード
x86x86
人造人間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
/system/priv-app/CtsShimPrivPrebuilt.apkの下

android12-x86-CtsShim.apk
/system/app/CtsShimPrebuilt.apkの下

android12-x86-CtsShimPriv.apk
/system/priv-app/CtsShimPrivPrebuilt.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
/system/priv-app/CtsShimPrivPrebuilt.apkの下

android11-x86-CtsShim.apk
/system/app/CtsShimPrebuilt.apkの下

android11-x86-CtsShimPriv.apk
/system/priv-app/CtsShimPrivPrebuilt.apkの下

アンドロイド 10 android10-リリース
/system/apex/com.android.apex.cts.shim.apexの下
android10-arm-CtsShim.apk
/system/app/CtsShimPrebuilt.apkの下

android10-arm-CtsShimPriv.apk
/system/priv-app/CtsShimPrivPrebuilt.apkの下

android10-x86-CtsShim.apk
/system/app/CtsShimPrebuilt.apkの下

android10-x86-CtsShimPriv.apk
/system/priv-app/CtsShimPrivPrebuilt.apkの下

Android 9、O、O-MR1なしなしarm-CtsShim.apk
/system/app/CtsShimPrebuilt.apkの下

アーム-CtsShimPriv.apk
/system/priv-app/CtsShimPrivPrebuilt.apkの下

x86-CtsShim.apk
/system/app/CtsShimPrebuilt.apkの下

x86-CtsShimPriv.apk
/system/priv-app/CtsShimPrivPrebuilt.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 デバイスの構成

  1. デバイスをデータの初期化にリセット: [設定] > [バックアップとリセット] > [データの初期化]

  2. デバイスの言語を英語 (米国) に設定します: [設定] > [言語と入力] > [言語]

  3. デバイスがデフォルト フォントのカスタマイズをサポートしている場合は、デフォルトのsans-serifフォント ファミリをRoboto (AOSP ビルドで使用されるデフォルトのsans-serifフォント ファミリ) に設定します。

  4. デバイスに GPS または Wi-Fi/セルラー ネットワーク機能がある場合は、位置設定をオンにします: [設定] > [位置情報] > [オン]

  5. IPv6 をサポートする Wi-Fi ネットワークに接続し、DUT を分離されたクライアントとして扱うことができ (上記の「物理環境」を参照)、インターネット接続があります: [設定] > [Wi-Fi]

  6. デバイスにロック パターンまたはパスワードが設定されていないことを確認します: [設定] > [セキュリティ] > [画面ロック] > [なし]

  7. デバイスでUSB デバッグを有効にします: [設定] > [開発者向けオプション] > [USB デバッグ]

  8. 時刻を 12 時間形式に設定します: [設定] > [日付と時刻] > [24 時間形式を使用] > [オフ]

  9. スリープ状態を維持するようにデバイスを設定します: [設定] > [開発者向けオプション] > [スリープ状態] > [オン]

  10. Android 5.x および 4.4.x のみで、モックの場所を許可するようにデバイスを設定します: [設定] > [開発者向けオプション] > [モックの場所を許可] > [オン]

  11. Android 4.2 以降では、USB アプリの検証をオフにします: [設定] > [開発者向けオプション] > [USB 経由でアプリを検証] > [オフ]

  12. Android 13 以降では、モック モデムを許可するようにデバイスを設定します: [設定] > [開発者向けオプション] > [モック モデムを許可] > [オン]

  13. ブラウザを起動し、起動/セットアップ画面を閉じます。

  14. デバイスのテストに使用するデスクトップ マシンを USB ケーブルで接続します。

  15. CTS を実行する前に、ユーザーがアクセス可能なアフォーダンス (非表示ではない) 設定を使用して、Roboto2 をサンセリフ フォントとして設定します。

ファイルのインストール

デバイスにヘルパー アプリをインストールして構成します。

  1. 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およびその他のプリロードされたデバイス管理者が無効のままであることを確認します。

  2. 次のように、CTS メディア ファイルをデバイスにコピーします。

    1. メディア ファイルがダウンロードされ、解凍されたパスに移動 ( cd ) します。
    2. ファイルのパーミッションを変更します: chmod u+x copy_media.sh

    3. 必要なファイルをコピーします。

      • クリップを 720x480 の解像度までコピーするには、次を実行します。

        ./copy_media.sh 720x480
        
      • 最大解像度がわからない場合は、すべてのファイルをコピーします。

        ./copy_media.sh all
        
      • adb 配下に複数のデバイスがある場合は、特定のデバイスのシリアル オプション ( -s ) を末尾に追加します。たとえば、シリアル 1234567 のデバイスに最大 720x480 をコピーするには、次のコマンドを実行します。

        ./copy_media.sh 720x480 -s 1234567