設置 CTS

要運行 CTS,首先準備好您的物理環境、台式機和用於測試的 Android 設備。

物理環境

低功耗藍牙信標

如果被測設備 (DUT) 支持藍牙 LE,請在 DUT 5 米範圍內放置至少三個藍牙 LE 信標,以進行藍牙 LE 掃描測試。這些信標不需要配置或發射任何特定的東西,可以是任何類型,包括 iBeacon、Eddystone,甚至是模擬 BLE 信標的設備。

相機

運行相機 CTS 時,請使用帶有測試圖案圖表(例如棋盤圖案)的正常光照條件。根據 DUT 的最小焦距放置測試圖案圖,以確保它不會太靠近鏡頭。

將相機傳感器指向具有足夠照明的場景,以允許被測傳感器達到並保持在CONTROL_AE_TARGET_FPS_RANGE中指定的最大配置目標每秒幀數 (FPS)。這適用於getCameraIdList報告的所有相機傳感器,因為測試會遍歷列出的設備並單獨測量性能。

如果 DUT 支持外部攝像頭,例如 USB 網絡攝像頭,請在運行 CTS 時插入外部攝像頭。否則,CTS 測試將失敗。

全球定位系統/全球導航衛星系統

如果 DUT 支持全球定位系統/全球導航衛星系統 (GPS/GNSS) 功能,請以合適的信號電平向 DUT 提供 GPS/GNSS 信號,用於接收和 GPS 定位計算。 GPS 部分必須符合 ICD-GPS-200C。否則,GPS/GNSS 信號可以是任何類型的,包括衛星模擬器或室外信號的 GPS/GNSS 中繼器,或者您可以將 DUT 放置在離窗戶足夠近的地方,以便它可以直接接收足夠的 GPS/GNSS 信號。

Wi-Fi 和 IPv6

CTS 測試需要一個支持 IPv6 的 Wi-Fi 網絡,具有互聯網連接,並且可以將 DUT 視為一個獨立的客戶端。隔離客戶端是指 DUT 無法看到該子網上的廣播/多網絡消息的配置。這發生在 Wi-Fi AP 配置或通過在隔離的子網絡上運行 DUT 而沒有連接其他設備的情況下。

如果您無法訪問本地 IPv6 網絡、IPv6 運營商網絡或 VPN 以通過某些取決於 IPv6 的測試,您可以使用 Wi-Fi 接入點和 IPv6 隧道。請參閱 Wikipedia 的IPv6 隧道代理列表

無線網絡 RTT

Android 包含用於Wi-Fi 往返時間 (RTT)功能的Wi-Fi RTT API 。這允許設備以 1 到 2 米的精度測量其與接入點的距離,從而顯著提高室內定位精度。支持 Wi-Fi RTT 的兩個推薦設備是Google WifiCompulab 的 fitlet2 接入點(在 5 GHz 時設置為 40 MHz 帶寬)。

接入點應該通電,但不需要網絡連接。接入點不需要靠近測試設備,但建議在 DUT 40 英尺範圍內。一個接入點通常就足夠了。

台式機設置

亞行和AAPT

在運行 CTS 之前,請確保您已安裝最新版本的Android Debug Bridge (adb)Android Asset Packaging Tool (AAPT) ,並將這些工具的位置添加到您機器的系統路徑中。

要安裝 ADB,請為您的操作系統下載Android SDK 工具包,打開它,然後按照包含的 README 文件中的說明進行操作。有關故障排除信息,請參閱安裝獨立 SDK 工具

確保adbaapt在您的系統路徑中。以下命令假定您已在主目錄中打開包存檔:

export PATH=$PATH:$HOME/android-sdk-linux/build-tools/version

用於 Ubuntu 的 Java 開發工具包

安裝正確版本的Java 開發工具包 (JDK)

  • 對於 Android 11,安裝 OpenJDK11。
  • 對於 Android 9 和 Android 10,安裝 OpenJDK9。
  • 對於 Android 7.0、7.1、8.0 和 8.1,安裝 OpenJDK8。

有關詳細信息,請參閱JDK 要求

CTS 文件

兼容性測試套件下載中下載並打開與您設備的 Android 版本和您的設備支持的所有應用程序二進制接口 (ABI) 匹配的 CTS 包。

下載並打開最新版本的CTS 媒體文件

設備檢測

按照步驟設置您的系統以檢測您的設備

內存限制

您可能希望在cts-tradfed腳本中增加測試運行期間可用的最大內存。有關詳細信息,請參閱示例 CL

安卓設備設置

用戶構建

兼容設備被定義為具有用戶/發布密鑰簽名構建的設備。您的設備應運行基於來自Codenames、Tags 和 Build Numbers的已知兼容用戶構建(Android 4.0 或更高版本)的系統映像。

第一個 API 級別構建屬性

某些 CTS 要求取決於設備最初隨附的版本。例如,最初附帶早期版本的設備可能會被排除在適用於後期版本的設備的系統要求之外。

為了向 CTS 提供此信息,設備製造商可以定義構建時屬性ro.product.first_api_level 。此屬性的值是該設備在商業上發佈時使用的第一個 API 級別。

設備製造商可以重用通用底層實現來推出新產品,作為同一設備組中現有產品的升級。設備製造商可以選擇將現有產品的 API 級別設置為ro.product.first_api_level ,以便對 CTS 和 Treble/VTS 應用升級要求。

設備製造商可以將PRODUCT_PROPERTY_OVERRIDES添加到他們的device.mk文件中以設置此屬性,如下例所示:

#ro.product.first_api_level indicates the first api level that the device has
been commercially launched on.
PRODUCT_PROPERTY_OVERRIDES +=\
ro.product.first_api_level=21

Android 9 或更高版本的第一個 API 級別

對於搭載 Android 9 或更高版本的設備,請將ro.product.first_api_level屬性設置為 Codenames、Tags 和 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包含兩個預構建的應用程序(從build source 構建),除了清單之外不包含任何代碼。 CTS 使用這些應用程序來測試特權和權限。

如果設備不支持 APEX 包管理(即ro.apex.updatable屬性缺失或未設置),或者設備運行版本 10 或更低版本,則必須在系統分開。

設備版本預安裝
(如果支持 APEX)
預載
手臂x86手臂x86
安卓 12 android12-arm-release
/system/apex/com.android.apex.cts.shim.apex
android12-x86-release
/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-arm-release
/system/apex/com.android.apex.cts.shim.apex
android11-x86-release
/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

arm-CtsShimPriv.apk
/system/priv-app/CtsShimPrivPrebuilt.apk

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

x86-CtsShimPriv.apk
/system/priv-app/CtsShimPrivPrebuilt.apk

要通過測試,請將應用程序預加載到系統映像上的適當目錄中,而無需重新簽署應用程序。

示例小程序

Android 9 引入了開放移動 API。對於報告多個安全元素的設備,CTS 會添加測試用例來驗證 Open Mobile API 的行為。這些測試用例需要將示例小程序一次性安裝到 DUT 的嵌入式安全元件 (eSE) 或 DUT 使用的 SIM 卡中。 eSE 示例小程序SIM 示例小程序可以在 AOSP 中找到。

有關 Open Mobile API 測試用例和訪問控制測試用例的更多詳細信息,請參閱安全元素的 CTS 測試

存儲要求

CTS 媒體壓力測試要求視頻剪輯位於外部存儲 ( /sdcard ) 上。大部分剪輯來自Big Buck Bunny ,根據Creative Commons Attribution 3.0 許可,版權歸 Blender 基金會所有。

所需空間取決於設備支持的最大視頻播放分辨率。有關所需分辨率的平台版本,請參閱Android 兼容性定義文檔中的第 5 節。

以下是最大視頻播放分辨率的存儲要求:

  • 480x360:98 MB
  • 720x480:193 MB
  • 1280x720:606 MB
  • 1920x1080:1863 MB

屏幕和存儲

  • 任何沒有嵌入式屏幕的設備都需要連接到屏幕。
  • 如果設備有存儲卡插槽,請插入一張空的 SD 卡。使用支持 SDHC 或 SDXC 容量的超高速 (UHS) 總線的 SD 卡,或至少速度等級 10 或更高的 SD 卡,以確保它可以通過 CTS。

  • 如果設備有 SIM 卡插槽,請將激活的 SIM 卡插入每個插槽。如果設備支持 SMS,則每張 SIM 卡都必須填充自己的號碼字段。對於運行 Android 12 或更高版本的設備,所有 SIM 卡都必須支持存儲縮位撥號號碼 (ADN)。帶有電信專用文件 (DF Telecom ) 的 GSM 和 USIM 卡滿足此要求。

開發者 UICC

要運行 CTS 運營商 API 測試,設備需要使用具有 CTS 運營商權限的 SIM,滿足準備 UICC中指定的要求。

安卓設備配置

  1. 恢復出廠設置:設置 > 備份和重置 > 恢復出廠設置

  2. 將設備的語言設置為英語(美國):設置 > 語言和輸入法 > 語言

  3. 如果設備支持自定義默認字體,請將默認sans-serif字體系列設置為Roboto (AOSP 構建中使用的默認sans-serif字體系列)。

  4. 如果設備上有 GPS 或 Wi-Fi/蜂窩網絡功能,請打開位置設置:設置 > 位置 > 開

  5. 連接到支持 IPv6 的 Wi-Fi 網絡,可以將 DUT 視為隔離客戶端(請參閱上面的物理環境),並具有 Internet 連接:設置 > Wi-Fi

  6. 確保設備上未設置鎖定圖案或密碼:設置 > 安全 > 屏幕鎖定 > 無

  7. 在您的設備上啟用USB 調試設置 > 開發人員選項 > USB 調試

  8. 將時間設置為 12 小時格式:設置 > 日期和時間 > 使用 24 小時格式 > 關閉

  9. 將設備設置為保持喚醒狀態:設置 > 開發人員選項 > 保持喚醒 > 開啟

  10. 僅在Android 5.x 和 4.4.x中,將設備設置為允許模擬位置:設置 > 開發人員選項 > 允許模擬位置 > 開

  11. Android 4.2 或更高版本中,關閉 USB 應用驗證:設置 > 開發人員選項 > 通過 USB 驗證應用 > 關閉

  12. 啟動瀏覽器並關閉任何啟動/設置屏幕。

  13. 使用 USB 電纜連接將用於測試設備的台式機。

文件安裝

在設備上安裝和配置幫助應用程序。

  1. 根據您的 CTS 版本設置您的設備:

    • CTS 版本 2.1 R2 到 4.2 R4:設置您的設備(或模擬器)以運行可訪問性測試: abd install -r android-cts/repository/testcases/CtsDelegatingAccessibilityService.apk

      在設備上,啟用委派:設置 > 輔助功能 > 輔助功能 > 委派輔助功能服務

    • CTS 版本 6.x 或更低版本:在聲明android.software.device_admin的設備上,使用以下命令設置您的設備以運行設備管理測試: adb install -r android-cts/repository/testcases/CtsDeviceAdmin.apk`

      Settings > Security > Select device administrators中,啟用兩個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 )。例如,要將高達 720x480 的圖像複製到序列號為 1234567 的設備,請運行:

        ./copy_media.sh 720x480 -s 1234567