ExtServices

ExtServices 模块更新了核心操作系统功能的框架组件,例如通知排序、自动填充文本匹配策略、存储缓存、软件包监控定时器,以及其他持续运行的服务。此模块可更新,意即该模块可在 Android 常规发布周期外的时间接收功能更新。

Service 组件

ExtServices 模块包含以下 Service。

DisplayHashingService

在 Android 12 中,DisplayHashingService 用于为指定的缓冲区生成 DisplayHash 实例。此外,该 Service 还可用于验证系统是否生成了特定的显示哈希值。生成显示哈希值时,调用方可以指定自己希望使用哪些受支持的哈希算法。

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_servicesExtensionPackageframeworks/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 中,您可以配置调用默认文本分类器的自定义文本分类器 Service(但不建议这样做)。在 Android 10 中,ExtServices 模块没有提供自定义选项。

测试

Android 兼容性测试套件 (CTS) 通过对每个模块版本运行一套全面的 CTS 测试来验证 ExtServices 模块的功能。此外,Mainline 测试套件 (MTS) 也包含几项 ExtServices 测试。ExtServices 测试的完整列表如下所示: