設置 CTS

要運行 CTS,請先準備您的實體環境、桌上型電腦以及用於測試的 Android 裝置。

物理環境

藍牙 LE 信標

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

超寬頻

如果 DUT 支援超寬頻 (UWB),則另一個支援 UWB 的設備必須放置得足夠近且定向,以免出現天線和無線電盲區。對於距離精度測試,有特定的定位和定向需求。有關設定詳細信息,請參閱UWB 要求。 UWB 測試必須手動執行,在命令列上指定相距一公尺的兩個裝置。本次測試所需的分片詳情請參閱本地分片

相機

執行相機 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 測試需要支援 IPv4 和 IPv6 的 Wi-Fi 網絡,具有與適用於 IPv4 和 IPv6 的工作 DNS 的互聯網連接,支援 IP 多播,並且可以將 DUT 視為獨立的客戶端。隔離客戶端是一種配置,其中 DUT 無法看到該子網路上的廣播/多網路訊息。透過 Wi-Fi 存取點 (AP) 設定或在沒有連接其他裝置的隔離子網路上執行 DUT 會發生這種情況。

如果您無法存取本機 IPv6 網路、IPv6 電信商網路或 VPN 來透過某些依賴 IPv6 的測試,則可以使用 Wi-Fi 存取點和 IPv6 隧道。

要透過 CTS,DUT 需要在 Wi-Fi 介面上設定UPBROADCASTMULTICAST標誌。 Wi-Fi 介面需要分配 IPv4 和 IPv6 位址。使用adb shell ifconfig檢查 Wi-Fi 介面屬性。

對於支援Wi-Fi STA/STA 並發的設備,需要多個 Wi-Fi 網路(至少 2 個)。為了通過 CTS,Wi-Fi 網路必須運作在不同頻段、不同 SSID 或相同 SSID、不同 BSSID 上。

無線網路RTT

Android 包含用於 Wi- Fi 往返時間 (RTT) 功能的 Wi- Fi RTT API 。這使得設備能夠以 1 到 2 公尺的精度測量到接入點的距離,從而顯著提高室內定位精度。支援 Wi-Fi RTT 的兩種建議裝置是Google WifiCompulab 的 fitlet2 存取點(在 5 GHz 時設定為 40 MHz 頻寬)。

接入點應已通電,但不需要網路連線。接入點不需要位於測試設備旁邊,但建議位於 DUT 的 40 英尺範圍內。一個接入點通常就足夠了。

桌上型電腦設定

注意:CTS 支援 64 位元 Linux 電腦。 Windows 作業系統或 MacOS 不支援 CTS。

FFMPEG

在主機上安裝 ffmpeg 版本 5.1.3(或更高版本)套件。

主機升級

強烈建議將CTS主機RAM升級至128GB,硬碟升級至256GB。需要適應 TradeFed 中 CTS 測試用例數量的增加以及 Java 堆空間預留的增加。

亞銀和 AAPT2

在執行 CTS 之前,請確保您已安裝最新版本的Android 偵錯橋 (adb)Android 資產打包工具 (AAPT2) ,並將這些工具的位置新增至電腦的系統路徑。

若要安裝 ADB 和 AAPT2,請從 Android Studio 的SDK Managersdkmanager命令列工具下載最新的Android SDK Platform ToolsAndroid SDK Build Tools

確保adbaapt2位於您的系統路徑中。以下命令假設您已將套件存檔下載到主目錄中名為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 裝置設定

用戶建置

相容設備定義為具有使用者/發布金鑰簽署版本的裝置。您的裝置應該運行基於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 的升級要求。

設備製造商可以在其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 和 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.可更新要求

  • 如果ro.apex.updatable屬性設為true ,則所有支援 APEX 套件管理的裝置都需要CtsShimApex

  • 如果ro.apex.updatable屬性遺失或未設置,則不需要在裝置上預先安裝CtsShimApex

APEX shim 驗證測試驗證CtsShimApex的實作。

CtsShim 預先安裝與預先載入

從 Android 11 開始, CtsShimApex包含兩個預先建置的應用程式(從建置來源建置),除了清單之外不包含任何程式碼。 CTS 使用這些應用程式來測試特權和權限。

如果裝置不支援 APEX 套件管理(即缺少或未​​設定ro.apex.updatable屬性),或裝置執行版本 10 或更低版本,則必須在系統分開。

如果支援 APEX,則對應版本的預先安裝必須放置為/system/apex/com.android.apex.cts.shim.apex

如果使用常規預建應用程序,則相應版本的CtsShimCtsShimPriv必須分別放置為/system/app/CtsShimPrebuilt.apk/system/priv-app/CtsShimPrivPrebuilt.apk

下表列出了每個裝置版本和架構可用的預先安裝和預先載入。

設備版本預先安裝
(如果支援 APEX)
預載
手臂x86手臂x86
安卓14 android14-arm-release android14-x86-發布android14-arm-CtsShim.apk

android14-arm-CtsShimPriv.apk

android14-x86-CtsShim.apk

android14-x86-CtsShimPriv.apk

安卓13 android13-arm-release android13-x86-發布android13-arm-CtsShim.apk

android13-arm-CtsShimPriv.apk

android13-x86-CtsShim.apk

android13-x86-CtsShimPriv.apk

安卓12 android12-arm-release android12-x86-發布android12-arm-CtsShim.apk

android12-arm-CtsShimPriv.apk

android12-x86-CtsShim.apk

android12-x86-CtsShimPriv.apk

安卓11 android11-arm-release android11-x86-發布android11-arm-CtsShim.apk

android11-arm-CtsShimPriv.apk

android11-x86-CtsShim.apk

android11-x86-CtsShimPriv.apk

安卓10 android10 發布android10-arm-CtsShim.apk

android10-arm-CtsShimPriv.apk

android10-x86-CtsShim.apk

android10-x86-CtsShimPriv.apk

Android 9、O 和 O-MR1不適用不適用ARM-CtsShim.apk

手臂-CtsShimPriv.apk

x86-CtsShim.apk

x86-CtsShimPriv.apk

若要通過測試,請將應用程式預先載入到系統映像上的對應目錄中,而無需重新簽署應用程式。

範例小程式

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

有關開放移動 API 測試案例和存取控制測試案例的更多詳細信息,請參閱安全元素的 CTS 測試

儲存要求

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

所需空間取決於裝置支援的最大視訊播放解析度。有關所需解析度的平台版本,請參閱Android 相容性定義文件中的第 5 節。

以下是最大視訊播放解析度的儲存要求:

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

螢幕和儲存

  • 任何沒有嵌入式螢幕的裝置都需要連接到螢幕。
  • 如果裝置有記憶卡插槽,請插入空 SD 卡。使用支援超高速 (UHS) 總線且具有 SDHC 或 SDXC 容量的 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. 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`

      設定 > 安全性 > 選擇裝置管理員中,啟用兩個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