外部服務

ExtServices 模塊更新核心操作系統功能的框架組件,例如通知排名、自動填充文本匹配策略、存儲緩存、包看門狗和其他持續運行的服務。此模塊是可更新的,這意味著它可以接收正常 Android 發布週期之外的功能更新。

服務組件

ExtServices 模塊包含以下服務。

顯示哈希服務

在 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/respackages/modules/ExtServices/srcpackages/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 測試的完整列表如下: