要運行 CTS,首先準備您的物理環境、台式機以及用於測試的 Android 設備。
物理環境
藍牙 LE 信標
如果被測設備 (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 測試需要支持 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 接口上設置UP
、 BROADCAST
和MULTICAST
標誌。 Wi-Fi 接口需要分配 IPv4 和 IPv6 地址。使用adb shell ifconfig
檢查 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 的 40 英尺範圍內。一個接入點通常就足夠了。
台式機設置
注意:CTS 支持 64 位 Linux 計算機。 Windows 操作系統或 MacOS 不支持 CTS。
FFMPEG
在主機上安裝 ffmpeg 版本 5.1.3(或更高版本)包。
主機升級
強烈建議將CTS主機RAM升級至128GB,硬盤升級至256GB。需要適應 TradeFed 中 CTS 測試用例數量的增加以及 Java 堆空間預留的增加。
亞洲開發銀行和AAPT
在運行 CTS 之前,請確保您已安裝最新版本的Android 調試橋 (adb)和Android 資產打包工具 (AAPT) ,並將這些工具的位置添加到計算機的系統路徑中。
要安裝 ADB 和 AAPT,請從 Android Studio 的SDK Manager或sdkmanager命令行工具下載最新的Android SDK Platform Tools和Android SDK Build Tools 。
確保adb
和aapt
位於您的系統路徑中。以下命令假設您已將包存檔下載到主目錄中名為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
。
如果使用常規預構建應用程序,則相應版本的CtsShim
和CtsShimPriv
必須分別放置為/system/app/CtsShimPrebuilt.apk
和/system/priv-app/CtsShimPrivPrebuilt.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中指定的要求。
安卓設備配置
將設備恢復出廠設置:設置 > 備份和重置 > 恢復出廠數據。
將設備的語言設置為英語(美國):設置 > 語言和輸入法 > 語言。
如果設備支持自定義默認字體,請將默認
sans-serif
字體系列設置為Roboto
(AOSP 版本中使用的默認sans-serif
字體系列)。如果設備上有 GPS 或 Wi-Fi/蜂窩網絡功能,請打開位置設置:設置 > 位置 > 開。
連接到支持 IPv6 的 Wi-Fi 網絡,可以將 DUT 視為獨立客戶端(請參閱上面的物理環境),並且具有 Internet 連接:設置 > 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`
在設置 > 安全 > 選擇設備管理員中,啟用兩個
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
- 導航 (