如要執行 CTS,請先準備實體環境、電腦機器,以及用於測試的 Android 裝置。
實體環境
藍牙 LE 信標
如果測試裝置 (DUT) 支援藍牙低功耗,請在 DFU 的 5 公尺範圍內放置至少三個藍牙低功耗訊號發送器,以進行藍牙低功耗掃描測試。這些訊號發送器不需要設定或發出任何特定內容,而且可以是任何類型,包括 iBeacon、Eddystone,甚至是模擬 BLE 訊號發送器的裝置。
超寬頻
如果 DUT 支援超寬頻 (UWB),則另一個支援 UWB 的裝置必須放置在足夠靠近的位置,並調整方向,以免產生天線和無線電死角。距離準確度測試需要特定的定位和方向。如需設定詳細資訊,請參閱「UWB 需求」。您必須手動執行 UWB 測試,並在指令列上指定兩個裝置之間的距離為一公尺。如要進一步瞭解這項測試所需的分割作業,請參閱「本機分割」。
相機
執行相機 CTS 時,請在正常光線條件下使用測試圖案圖表 (例如棋盤格圖案)。請按照 DUT 的最小焦點距離放置測試模式圖,確保其與手指的距離不會太近。
將相機感應器對準有充足光線的場景,讓測試中的感應器達到並維持 CONTROL_AE_TARGET_FPS_RANGE
中指定的每秒最大影格數 (FPS) 上限。這項設定適用於 getCameraIdList
回報的所有攝影機感應器,因為測試會重複執行列出的裝置,並個別評估效能。
如果 DUT 支援外接式攝影機 (例如 USB 網路攝影機),請在執行 CTS 時插入外接式攝影機。否則 CTS 測試會失敗。
GPS/GNSS
如果 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 視為隔離的用戶端。隔離的用戶端是指測試對象無法查看該子網路上的廣播/多重網路訊息的設定。這種情況可能是使用 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 介面屬性。
如果是支援 Wi-Fi STA/STA 並行的裝置,則需使用多個 Wi-Fi 網路 (至少 2 個)。如要傳遞 CTS,Wi-Fi 網路必須在具有不同 SSID 的不同頻帶上執行,或在具有不同 BSSID 的相同 SSID 上執行 Wi-Fi 網路。
Wi-Fi RTT
Android 提供適用於 Wi-Fi 封包往返時間 (RTT) 的 Wi-Fi RTT API。這可讓裝置以 1 到 2 公尺的準確度測量與存取點的距離,大幅提升室內定位精確度。建議支援 Wi-Fi RTT 的兩部裝置為 Google Wifi 和 Compulab 的 Fitlet2 存取點 (設為 5 GHz 時的 40 MHz 頻寬)。
存取點應已開機,但不需要連上網路。存取點不必位於測試裝置旁,但建議應位於測試裝置 40 英尺以內。通常一個存取點就足夠了。
電腦機器設定
注意:CTS 支援 64 位元 Linux 機器。Windows OS 或 MacOS 不支援 CTS。
FFMPEG
在主機上安裝 ffmpeg 5.1.3 以上版本的套件。
主體機器需求
CTS 主機機器的最低需求為 32 GiB RAM 和 256 GiB 磁碟容量。這是為了因應 CTS 測試案例數量增加,以及 Tradefed 中 Java 堆積空間預留增加的情形。
ADB 和 AAPT2
執行 CTS 前,請確認您已安裝最新版本的 Android Debug Bridge (ADB) 和 Android 資產封裝工具 (AAPT2),並將這些工具的位置新增至機器的系統路徑。
如要安裝 ADB 和 AAPT2,請從 Android Studio 的 SDK Manager 或 sdkmanager 指令列工具下載最新的 Android SDK Platform Tools 和 Android SDK Build Tools。
請確認 adb
和 aapt2
位於系統路徑中。下列指令假設您已將套件封存檔下載至主目錄中名為 android-sdk
的子目錄:
export PATH=$PATH:$HOME/android-sdk/platform-tools:$HOME/android-sdk/build-tools/<tools version number>
Ubuntu 適用的 Java Development Kit
安裝適當版本的 Java Development Kit (JDK)。
- 如果是 Android 11,請安裝 OpenJDK 11。
- 如果是 Android 9 和 Android 10,請安裝 OpenJDK 9。
- 如果是 Android 7.0、7.1、8.0 和 8.1,請安裝 OpenJDK8。
詳情請參閱 JDK 需求。
Python 支援的設定
請按照安裝說明,為您的平台安裝 virtualenv
。
您可以叫用 virtualenv -h
來驗證安裝是否成功。
CTS 檔案
從 Compatibility Test Suite Downloads 下載並開啟 CTS 套件,以便與裝置的 Android 版本和裝置支援的所有應用程式二進位介面 (ABI) 相符。
下載並開啟最新版本的 CTS 媒體檔案。
下載 Mainline 相關 CTS 檔案 (選用)
當您首次執行 CTS 版本時,CTS 會動態下載一些與 Mainline 相關的 CTS 檔案,這會根據您的網路速度增加至少 10 分鐘的執行時間。
為避免這項額外的 CTS 執行時間,您可以按照下列操作說明,在執行 CTS 版本前下載 Mainline 相關的 CTS 檔案:
如要取得裝置上的 Android API 級別,請執行以下命令:
adb shell getprop ro.build.version.sdk
按照
download_mcts.sh
指令碼中的操作說明下載 Mainline CTS 檔案。下載作業至少需要 10 分鐘,視網路速度而定。
裝置偵測
請按照這篇文章的步驟設定系統,以便偵測裝置。
記憶體限制
您可能需要在 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 墊片驗證測試會驗證 CtsShimApex
的實作方式。
ro.apex.updatable 規定
如果
ro.apex.updatable
屬性設為true
,則所有支援 APEX 套件管理的裝置都需要CtsShimApex
。如果缺少
ro.apex.updatable
屬性或未設定,系統就不會在裝置上預先安裝CtsShimApex
。
APEX 墊片驗證測試會驗證 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
。
下表列出各個裝置版本和架構可用的預先安裝和預先載入項目。
裝置版本 | 預先安裝 (如果 APEX 支援) |
預先載入 | ||
---|---|---|---|---|
ARM | x86 | ARM | x86 | |
Android 15 | android15-arm-release | android15-x86-release | android15-arm-CtsShim.apk | android15-x86-CtsShim.apk |
Android 14 | android14-arm-release | android14-x86-release | android14-arm-CtsShim.apk | android14-x86-CtsShim.apk |
Android 13 | android13-arm-release | android13-x86-release | android13-arm-CtsShim.apk | android13-x86-CtsShim.apk |
Android 12 | android12-arm-release | android12-x86-release | android12-arm-CtsShim.apk | android12-x86-CtsShim.apk |
Android 11 | android11-arm-release | android11-x86-release | android11-arm-CtsShim.apk | android11-x86-CtsShim.apk |
Android 10 | android10-release | android10-arm-CtsShim.apk | android10-x86-CtsShim.apk | |
Android 9、O 和 O-MR1 | 無 | 無 | arm-CtsShim.apk | x86-CtsShim.apk |
如要通過測試,請將應用程式預先載入至系統映像檔的適當目錄,但不要重新簽署應用程式。
範例小程式
Android 9 推出了 Open Mobile API。如果裝置回報的安全元素超過一個,CTS 會新增測試案例,驗證 Open Mobile API 的行為。這些測試案例需要將範例小程式一次性安裝在 DUT 的內嵌安全元件 (eSE) 中,或安裝在 DUT 使用的 SIM 卡中。您可以在 Android 開放原始碼計畫中找到 eSE 範例應用程式和 SIM 範例應用程式。
如要進一步瞭解 Open Mobile 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 容量,或是速度等級至少為 10 以上的 SD 卡,以確保能夠通過 CTS。
如果裝置有 SIM 卡插槽,請將已啟用的 SIM 卡插入每個插槽。如果裝置支援 SMS,則每張 SIM 卡都必須填入專屬的電話號碼欄位。對於搭載 Android 12 以上版本的裝置,所有 SIM 卡都必須支援儲存縮寫撥號號碼 (ADN)。使用電信專用檔案 (DFTelecom) 的 GSM 和 USIM 卡就符合這項規定。
開發人員 UICC
如要執行 CTS 電信業者 API 測試,裝置必須使用具備 CTS 電信業者權限的 SIM 卡,且符合「準備 UICC」一文中指定的規定。
Android 裝置設定
將裝置恢復原廠設定:依序前往「Settings」>「備份與重設」>「恢復原廠設定」。
將裝置的語言設為英文 (美國):「Settings」>「Language & input」>「Language」。
如果裝置支援自訂預設字型,請將預設
sans-serif
字型系列設為Roboto
(AOSP 版本中使用的預設sans-serif
字型系列)。如果裝置上有 GPS 或 Wi-Fi/行動網路功能,請開啟位置資訊設定:依序前往「設定」>「位置資訊」>「開啟」。
連線至支援 IPv6 的 Wi-Fi 網路,並將 DUT 視為隔離的用戶端 (請參閱上方的實體環境),且具備網際網路連線:「設定」>「Wi-Fi」。
確認裝置未設定解鎖圖案或密碼:依序前往「設定」>「安全性」>「螢幕鎖定」>「無」。
在裝置上啟用「USB 偵錯」:依序前往「設定」>「開發人員選項」>「USB 偵錯」。
將時間格式設定為 12 小時制,方法是依序點選「Settings」>「Date & time」>「使用 24 小時格式」>「Off」。
將裝置設為保持喚醒狀態:「設定」>「開發人員選項」>「保持喚醒」>「開啟」。
在 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
- 瀏覽至 (