ExtServices 模塊更新核心操作系統功能的框架組件,例如通知排名、自動填充文本匹配策略、存儲緩存、包看門狗和其他持續運行的服務。此模塊是可更新的,這意味著它可以接收正常 Android 發布週期之外的功能更新。
服務組件
ExtServices 模塊包含以下服務。
從 Android 12 開始的
DisplayHashingService
從 Android 11 開始的
TextClassifierService
從 Android 11 開始的
InlineSuggestionsRenderService
從 Android 10 開始的
AutofillFieldClassificationService
從 Android 10 開始的
NotificationAssistantService
從 Android 10 開始的
ResolverRankerService
CacheQuotaService
從 Android 10 開始
顯示哈希服務
在 Android 12 中, DisplayHashingService
用於為指定的緩衝區生成DisplayHash
的實例。它還用於驗證系統是否生成了特定的顯示哈希。生成顯示散列時,調用者可以指定它希望使用的受支持散列算法。
文本分類器服務
TextClassifierService
服務組件支持TextClassifier
API和 Android 功能,例如通知中的智能文本選擇和智能建議。 ExtServices 模塊包含由 CTS 測試TextClassifierPolicyTest.java
驗證的默認文本分類器。
如果需要,您可以通過在config.xml
中指定config_defaultTextClassifierPackage
來配置自定義文本分類器服務。自定義文本分類器可以依賴於默認文本分類器,方法是調用TextClassifierService.getDefaultTextClassifierImplementation(Context)
來獲取它的實例。
內聯建議渲染服務
InlineSuggestionRenderService
服務組件允許在鍵盤建議條中顯示內聯建議。調用此服務以呈現一個View
對象,該對象包含新的 Inline Autofill 流的 Inline Suggestion。此渲染器服務的默認實現調用androidx.autofill.inline.Renderer
來渲染建議。此行為由/autofillservice/cts/inline/
中的 CTS 測試驗證。
包裹名字
運行 Android 11 的設備必須將config_servicesExtensionPackage
(在frameworks/base/core/res/res/values/config.xml
中)設置為 ExtServices 包名稱 ( com.android.ext.services
)。此配置更改由 CTS 測試cts/tests/tests/os/src/android/os/cts/RequiredComponentsTest.java
驗證。
模塊邊界
在 Android 12 中,ExtServices 模塊代碼從frameworks/base/apex/extservices
(這是frameworks/base project
的子目錄)和packages/modules/ExtServices
中移出。
packages/modules/ExtServices
的新項目結構如下:
-
apex/
(來自frameworks/base/apex/extservices
) -
java/
(來自packages/modules/ExtServices/res
、packages/modules/ExtServices/src
、packages/modules/ExtServices/tests
的文件和新功能文件) -
jni/
(新功能的文件) -
native/
(新功能的文件)
ExtServices 模塊邊界位於packages/modules/ExtServices
中。 Android 11 還將幾個TextClassifier
實現類移出frameworks/base/core/
。
模塊格式
在 Android 11 中,ExtServices 模塊 ( com.android.ext.services
) 採用APEX格式。在 Android 10 中,此模塊為 APK 格式。
定制
在 Android 11 中,您可以配置調用默認文本分類器的自定義文本分類器服務(但不建議這樣做)。在 Android 10 中,ExtServices 模塊不提供自定義選項。
測試
Android 兼容性測試套件 (CTS) 通過在每個模塊版本上運行一組全面的 CTS 測試來驗證 ExtServices 模塊的功能。此外,Mainline Test Suite (MTS) 還包含多個 ExtServices 測試。 ExtServices 測試的完整列表如下:
配置更改。通過 CTS 測試
cts/tests/tests/os/src/android/os/cts/RequiredComponentsTest.java
驗證。TextClassifier
配置。通過 CTS 測試cts/TextClassifierPolicyTest.java
。自動填充內聯建議。由
cts/inline/
中的 CTS 測試驗證。