設定 CTS

如要執行 CTS,請先備妥實體環境、電腦,以及用於測試的 Android 裝置。

實際環境

藍牙 LE 信標

如果接受測試的裝置 (DUT) 支援藍牙 LE,請在 DUT 的 5 公尺內放置至少三個藍牙 LE 信標,以進行藍牙 LE 掃描測試。這些信標無需設定或發出任何特定內容,可以是任何種類,包括 iBeacon、Eddystone,甚至是模擬 BLE 信標的裝置。

超寬頻

如果 DUT 支援超寬頻 (UWB),另一部支援 UWB 的裝置位置必須夠接近且方向清晰,以免沒有天線和無線電死區域。對於距離準確度測試,需要特定的定位和方向需求。如需設定詳細資料,請參閱「UWB 需求條件」一文。UWB 測試必須手動執行,並在指令列中指定兩個裝置相隔一公尺。如要進一步瞭解這項測試所需的資料分割,請參閱「本機資料分割」。

攝影機

執行相機 CTS 時,搭配測試模式圖使用正常光源條件 (例如棋盤式模式)。請按照 DUT 的最小焦距放置測試模式圖,確保其與手指的距離不會太近。

將相機感應器指向光線充足的場景,讓受測試的感應器接觸並保持每秒設定的目標影格上限 (FPS),如 CONTROL_AE_TARGET_FPS_RANGE 所述。這適用於 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 多點傳播的 Wi-Fi 網路,並且可以將 DUT 視為獨立的用戶端。「隔離的用戶端」是 DUT 無法查看該子網路中廣播/多網路訊息的設定。這種情況可能是使用 Wi-Fi 存取點 (AP) 設定,或是在沒有其他裝置連線的獨立子網路上執行 DUT 所致。

如果您無法存取原生 IPv6 網路、IPv6 電信業者網路,或無法使用 IPv6 通過部分測試的 VPN,可以使用 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 的不同頻帶上執行,或在具有不同 BSSID 的相同 SSID 上執行 Wi-Fi 網路。

Wi-Fi 即時文字訊息

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 OS 或 MacOS 不支援 CTS。

FFMPEG

在主體電腦上安裝 ffmpeg 5.1.3 版 (或更新版本) 套件。

升級主機機器

強烈建議您將 CTS 主機機器 RAM 升級至 128 GB,並將 HDD 升級至 256 GB。我們需要應對增加的 CTS 測試案例,以及吸收的 Java 堆積空間保留量增加。

ADB 與 AAPT2

執行 CTS 前,請確認您已安裝最新版本的 Android Debug Bridge (ADB)Android 資產封裝工具 (AAPT2),並將這些工具的位置新增至機器的系統路徑。

如要安裝 ADB 和 AAPT2,請從 Android Studio 的 SDK Managersdkmanager 指令列工具,下載最新的 Android SDK 平台工具Android 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 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 檔案

請在 Compatibility Test Suite 下載下載 CTS 套件,該套件需符合裝置的 Android 版本和裝置支援的所有應用程式二進位檔介面 (ABI)。

下載並開啟最新版本的 CTS 媒體檔案

下載與 Mainline 相關的 CTS 檔案 (選擇性)

當您首次執行 CTS 版本時,CTS 會動態下載一些與 Mainline 相關的 CTS 檔案,這會根據您的網路速度增加至少 10 分鐘的執行時間。

如要避免這種新增的 CTS 執行時間,您可以先在執行 CTS 版本之前下載 Mainline 相關的 CTS 檔案,步驟如下:

  1. 請執行以下指令,在裝置上取得 Android API 級別:

    adb shell getprop ro.build.version.sdk
    
  2. 按照 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 的形式安裝適當的版本。

如果使用一般預先建構的應用程式,適當版本的 CtsShimCtsShimPriv 必須分別放置為 /system/app/CtsShimPrebuilt.apk/system/priv-app/CtsShimPrivPrebuilt.apk

下表列出各種裝置版本和架構可用的預先安裝和預先載入項目。

裝置版本 預先安裝
(如果支援 APEX)
預先載入
ARM x86 ARM x86
Android 14 android14-arm-release android14-x86-release android14-arm-CtsShim.apk

android14-arm-CtsShimPriv.apk

android14-x86-CtsShim.apk

android14-x86-CtsShimPriv.apk

Android 13 android13-arm-release android13-x86-release android13-arm-CtsShim.apk

android13-arm-CtsShimPriv.apk

android13-x86-CtsShim.apk

android13-x86-CtsShimPriv.apk

Android 12 android12-arm-release android12-x86-release android12-arm-CtsShim.apk

android12-arm-CtsShimPriv.apk

android12-x86-CtsShim.apk

android12-x86-CtsShimPriv.apk

Android 11 android11-arm-release android11-x86-release android11-arm-CtsShim.apk

android11-arm-CtsShimPriv.apk

android11-x86-CtsShim.apk

android11-x86-CtsShimPriv.apk

Android 10 android10-release android10-arm-CtsShim.apk

android10-arm-CtsShimPriv.apk

android10-x86-CtsShim.apk

android10-x86-CtsShimPriv.apk

Android 9、O 和 O-MR1 arm-CtsShim.apk

arm-CtsShimPriv.apk

x86-CtsShim.apk

x86-CtsShimPriv.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 的創用 CC 姓名標示 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 卡插入每個插槽。 如果裝置支援簡訊,則每張 SIM 卡都必須填入專屬號碼欄位。若是搭載 Android 12 以上版本的裝置,所有 SIM 卡都必須支援儲存縮寫撥號號碼 (ADN)。具有電信專屬檔案 (DFTelecom) 的 GSM 和 USIM 卡就能滿足這項需求。

開發人員 UICC

如要執行 CTS 電信業者 API 測試,裝置必須使用具備 CTS 電信業者權限的 SIM 卡,且該裝置須符合「準備 UICC」一節中的規定。

Android 裝置設定

  1. 將裝置恢復原廠設定:依序前往「Settings」>「備份與重設」>「恢復原廠設定」

  2. 將裝置的語言設為英文 (美國):「Settings」>「Language & input」>「Language」

  3. 如果裝置支援自訂預設字型,請將預設 sans-serif 字型系列設為 Roboto (在 Android 開放原始碼計畫版本中使用的預設 sans-serif 字型系列)。

  4. 如果裝置上有 GPS 或 Wi-Fi/行動網路功能,請開啟位置資訊設定:依序點選「設定」>「位置」>「開啟」

  5. 連線至支援 IPv6 的 Wi-Fi 網路、將 DUT 視為獨立用戶端 (請參閱上方的「實體環境」),並具備網際網路連線:「設定」>「Wi-Fi」

  6. 請確認裝置上未設定鎖定圖案或密碼:依序前往「設定」>「安全性」>「螢幕鎖定」>「無」

  7. 在裝置上啟用「USB 偵錯」:「設定」>「開發人員選項」>「USB 偵錯」。

  8. 將時間格式設定為 12 小時制,方法是依序點選「Settings」>「Date & time」>「使用 24 小時格式」>「Off」

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

  10. Android 5.x 和 4.4.x 僅限 Android 5.x 和 4.4.x 中,將裝置設定為允許模擬位置:依序點選「設定」>「開發人員選項」>「允許模擬位置」>「開啟」

  11. Android 4.2 以上版本中,關閉 USB 應用程式驗證功能:「設定」>「開發人員選項」>「透過 USB 驗證應用程式」>「關閉」

  12. Android 13 以上版本中,將裝置設為允許模擬數據機:請依序前往「Settings」>「Developer options」>「Allow Mock Modem」>「On」

  13. 啟動瀏覽器並關閉任何啟動/設定畫面。

  14. 將要用來測試裝置的電腦機器與 USB 傳輸線連接。

  15. 執行 CTS 前,請透過使用者可存取的預設用途 (非隱藏) 設定,將 Roboto2 設為 Sans Serif 字型。

檔案安裝

在裝置上安裝及設定輔助應用程式。

  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)。舉例來說,若要最多複製到 1234567 序列 1234567 的裝置上,請執行:

        ./copy_media.sh 720x480 -s 1234567