外流服務

ExtServices 模組會更新核心 OS 功能的架構元件,例如通知排名、自動填入文字比對策略、儲存空間快取、套件監控程式,以及其他持續執行的服務。這個模組可更新,也就是說,它可以在正常的 Android 發布週期外接收功能更新。

服務元件

ExtServices 模組包含下列服務。

顯示 HashingService

在 Android 12 中,DisplayHashingService 的用途是為指定的緩衝區產生 DisplayHash 的例項。這項參數也用於驗證系統是否產生特定顯示雜湊。產生顯示雜湊時,呼叫端可以指定要使用的支援的雜湊演算法。

TextClassifierService

TextClassifierService 服務元件會復原 TextClassifier API 和 Android 功能,例如通知中的智慧文字選取和智慧型建議。ExtServices 模組包含預設的文字分類器,並由 CTS 測試 TextClassifierPolicyTest.java 驗證。

如有需要,您可以在 config.xml 中指定 config_defaultTextClassifierPackage,藉此設定自訂文字分類器服務。自訂文字分類器可以依賴預設文字分類器,方法是呼叫 TextClassifierService.getDefaultTextClassifierImplementation(Context) 來取得其例項。

InlineSuggestionRenderService

InlineSuggestionRenderService 服務元件可讓內嵌建議顯示在鍵盤建議列中。系統會呼叫這項服務,以顯示新的內嵌自動填入流程內嵌建議的 View 物件。這個轉譯器服務的預設實作會呼叫 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 Compatibility Test Suite (CTS) 會針對每個模組版本執行一組完整的 CTS 測試,驗證 ExtServices 模組功能。此外,Mainline Test Suite (MTS) 也包含幾項 ExtServices 測試。ExtServices 測試的完整清單如下: