針對 Android 11 以上版本,相容性測試套件 (CTS) 裝置互動輔助模組可讓您自訂特定 CTS 測試如何與特定裝置上的使用者介面 (UI) 互動。也就是說,您可以執行某些動作 (例如替換 Android 相容性定義說明文件 (CDD) 或 API 文件未涵蓋的 UI 元素),同時仍能通過 CTS。
如果原始設備製造商 (OEM) 想在產品開發期間自訂 Android UI,並需要通過 CTS,則可實作輔助模組。如果您使用預設的 Android 導入方式,則無需進行額外操作。
實作輔助模組
自訂 UI 的相關規定
請檢查 CDD 或 Mainline 模組是否有任何 UI 需求。如果所需 UI 位於 CDD 或 Mainline 模組中,您就無法自訂該 UI。
如果與所需 UI 互動的 CTS 測試未使用輔助程式架構,則無法自訂該 UI。請與測試擁有者合作,在變更 UI 前轉換測試模組。
或者,您也可以自訂使用者介面。
導入工作流程
- 視需要自訂特定產品的使用者介面。
- 將現有的 AOSP 輔助模組指定為 CTS 測試模組的子類別,以便與 UI 互動。視需要適當取代自訂 UI 的必要互動。取代內容會因變更類型而異。
- 原始設備製造商 (OEM) 子類別位於 OEM 套件中,例如
com.[oem].cts.helpers
。 - 每個 OEM 子類別都會以通用前置字串命名,以便與 AOSP 實作 (前置字串為
Default
) 區分。
- 原始設備製造商 (OEM) 子類別位於 OEM 套件中,例如
- 按照這些測試執行器慣例,將輔助程式建構為 APK。
Android.bp
應宣告android_test_helper_app
,其名稱與所含套件相同。- APK 的
AndroidManifest.xml
必須宣告名為interaction-helpers-prefix
的中繼資料屬性,並使用先前項目符號中所選的類別前置字元的值。 - 應用程式應依賴
cts-helpers-core
、cts-helpers-interfaces
和com.android.cts.helpers.aosp
。如果原始設備製造商 (OEM) 輔助程式完全導入所有相關介面,則可選用com.android.cts.helpers.aosp
。
- 在裝置映像檔中設定
ro.vendor.cts_interaction_helper_packages
屬性,加入 APK 名稱。如果您需要在多個 APK 中分隔輔助程式實作項目,這個屬性可以包含以冒號分隔的套件清單。 - 執行 CTS 的 Tradefed 時,請確認 APK 可在
testcases
目錄中使用。如有需要,請檢查 Logcat 訊息,確認系統是否已選擇預期的輔助程式實作類別。 - 選用,但強烈建議:將輔助程式實作項目提交至 AOSP,或提供給第三方測試。
輔助程式實作範例
舉例來說,CtsPrintTestCases
會預期輔助程式具有 ICtsPrintHelper
中定義的介面。Android 開放原始碼計畫實作項目稱為 com.android.cts.helpers.aosp.DefaultCtsPrintHelper
。
如果您自訂列印 UI,可以建立將 DefaultCtsPrintHelper
設為子類別的 com.oem.cts.helpers.OemCtsPrintHelper
。Android.bp
中的 android_test_helper_app
名為 com.oem.cts.helpers
,會產生 com.oem.cts.helpers.apk
,並在 AndroidManifest.xml
中宣告 interaction-helpers-prefix
為 Oem
。
裝置屬性 ro.vendor.cts_interaction_helper_packages
已設為 com.oem.cts.helpers
。
參考實作
參考實作項目包括 cts/libs/helpers
下的介面,以及 cts/helpers
下的預設 Android 開放原始碼計畫輔助程式。頂層介面已在 cts/libs/helpers/core/src/com/android/cts/helpers/ICtsDeviceInteractionHelper.java
中記錄。
如要將 CTS 測試連結至其輔助程式,測試擁有者可以使用 cts/libs/helpers/core/src/com/android/cts/helpers/DeviceInteractionHelperRule.java
中記錄的 @Rule
定義。
每個使用此架構的 CTS 模組,以及預期的輔助行為,都會在 cts/libs/helpers/core/src/com/android/cts/helpers
下定義的介面中記錄。
執行 CTS 測試
不使用輔助程式進行測試
除了一個屬性外,裝置在執行階段時並未提供不使用輔助程式進行測試的選項,但可視需要修改 CTS 測試與裝置互動的情形。如果您需要在沒有輔助實作項目的情況下執行 CTS,可以選擇下列兩種做法:
- 從裝置中移除
ro.vendor.cts_interaction_helper_packages
屬性。這可避免輔助程式完全用於該版本。 - 請先從
testcases
目錄中移除輔助 APK,再執行 CTS。這樣一來,在 APK 還原為testcases
之前,任何執行作業都不會使用輔助程式。
您可以使用 Tradefed 引數和 ro.vendor.cts_interaction_helper_packages
屬性控制項 (輔助 APK 的載入位置) 變更預設設定。
如要查看各可用設定的預期值或範圍,請參閱以下說明。
ro.vendor.cts_interaction_helper_packages
是包含套件名稱的字串,以冒號分隔。這個值可以是 OEM 輔助程式實作項目的有效套件選項。cts-tradefed
會接受device-interaction-helper:property-name
引數,該引數會暫時變更一次測試執行作業的預期屬性,例如--module-arg 'CtsPrintTestCases:{device-interaction-helper}property-name:debug.cts.hlp'
。屬性名稱的值可以是您在裝置上設定的任何屬性。屬性的值必須遵守上述ro.vendor.cts_interaction_helper_packages
屬性的限制。
使用自訂項目進行測試
根據預設,參考實作項目會在原生 Android 上通過 CTS。請檢查合作夥伴實作方式是否通過 UI 自訂項目的 CTS。執行任何涵蓋您自訂 UI 或功能的 CTS 模組。
某些 CTS 模組或輔助程式可能尚不支援部分自訂項目。
- 與您要自訂的 UI 互動的 CTS 模組可能不會使用輔助程式架構。CTS 模組應根據需求和測試擁有者的優先順序,轉換為輔助架構。請在程序初期提出轉換要求,確保轉換作業能按時完成,這與要求 CTS 變更以支援您計畫中的功能類似。
- 現有輔助程式提供的函式可能無法完全處理您要自訂的函式。輔助函式應將 UI 依附元件抽象化。如果輔助函式間接具有 UI 依附元件,這可視為與 CTS 中的錯誤類似。