如果是 Android 11 以上版本,您可以使用 Compatibility Test Suite (CTS) 裝置互動輔助模組,自訂特定 CTS 測試與特定裝置使用者介面 (UI) 的互動方式。也就是說,即使替換的 UI 元素不在 Android 相容性定義說明文件 (CDD) 或 API 說明文件的涵蓋範圍內,仍可通過 CTS。
如果 OEM 在產品開發期間想自訂 Android UI,且需要通過 CTS,或許可以導入輔助模組。如果您使用預設的 Android 導入方式,則無需進行額外操作。
導入輔助模組
自訂 UI 的相關規定
請查看 CDD 或 Mainline 模組是否有任何 UI 規定。如果所需的使用者介面涵蓋在 CDD 或 Mainline 模組中,則無法自訂該介面。
如果與所需 UI 互動的 CTS 測試未使用輔助架構,就無法自訂該 UI。請與測試擁有者合作,在變更 UI 前轉換測試模組。
否則可以自訂 UI。
實作工作流程
- 視特定產品需求自訂 UI。
- 將現有的 AOSP 輔助模組指定為需要與 UI 互動的 CTS 測試模組子類別。針對自訂 UI 適當取代必要的互動。取代內容會因變更類型而異。
- OEM 子類別位於 OEM 套件中,例如
com.[oem].cts.helpers。 - 每個 OEM 子類別的命名都有通用前置字元,可與前置字元為
Default的 AOSP 實作項目區別。
- 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,可以建立子類別 com.oem.cts.helpers.OemCtsPrintHelperDefaultCtsPrintHelper。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 下的預設 AOSP 輔助程式。頂層介面記錄在 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屬性。這樣一來,該建構版本就完全無法使用輔助程式。 - 執行 CTS 前,請先從
testcases目錄移除輔助 APK。 在 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。確認合作夥伴導入項目通過 CTS,且 UI 自訂項目正常運作。執行涵蓋您自訂 UI 或功能的 CTS 模組。
某些 CTS 模組或輔助程式可能尚未支援部分自訂項目。
- 與要自訂的 UI 互動的 CTS 模組可能不會使用輔助架構。視需求和測試擁有者的優先順序而定,CTS 模組預計會轉換為輔助架構。在程序初期提出轉換要求,確保轉換作業能如期進行,這與要求 CTS 變更以支援規劃功能類似。
- 現有輔助程式提供的函式可能無法完全滿足您想進行的自訂作業。輔助函式應抽象化 UI 依附元件。如果輔助函式間接具有 UI 依附元件,這類情況與 CTS 中的錯誤類似。