ExtServices 模块更新了核心操作系统功能的框架组件,例如通知排序、自动填充文本匹配策略、存储缓存、软件包监控定时器,以及其他持续运行的服务。此模块可更新,意即该模块可在 Android 常规发布周期外的时间接收功能更新。
Service 组件
ExtServices 模块包含以下 Service。
DisplayHashingService
(从 Android 12 开始提供)TextClassifierService
(从 Android 11 开始提供)InlineSuggestionsRenderService
(从 Android 11 开始提供)AutofillFieldClassificationService
(从 Android 10 开始提供)NotificationAssistantService
(从 Android 10 开始提供)ResolverRankerService
(从 Android 10 开始提供)CacheQuotaService
(从 Android 10 开始提供)
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_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 中,您可以配置调用默认文本分类器的自定义文本分类器 Service(但不建议这样做)。在 Android 10 中,ExtServices 模块没有提供自定义选项。
测试
Android 兼容性测试套件 (CTS) 通过对每个模块版本运行一套全面的 CTS 测试来验证 ExtServices 模块的功能。此外,Mainline 测试套件 (MTS) 也包含几项 ExtServices 测试。ExtServices 测试的完整列表如下所示:
配置变更。通过 CTS 测试
cts/tests/tests/os/src/android/os/cts/RequiredComponentsTest.java
进行验证。TextClassifier
配置。通过 CTS 测试cts/TextClassifierPolicyTest.java
进行验证。自动填充内嵌建议。通过
cts/inline/
中的 CTS 测试进行验证。