ExtServices 模块会更新核心操作系统功能的框架组件,例如通知排名、自动填充文本匹配策略、存储缓存、软件包监视程序以及其他持续运行的服务。此模块可更新,这意味着它可以在正常的 Android 发布周期之外接收功能更新。
服务组件
ExtServices 模块包含以下服务。
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
实例。它还用于验证特定的显示哈希是否由系统生成。生成显示哈希时,调用方可以指定希望使用的受支持哈希算法。
TextClassifierService
TextClassifierService
服务组件支持 TextClassifier
API 和 Android 功能,例如智能文本选择和通知中的智能建议。ExtServices 模块包含默认文本分类器,该分类器已通过 CTS 测试 TextClassifierPolicyTest.java
验证。
如果需要,您可以通过在 config.xml
中指定 config_defaultTextClassifierPackage
来配置自定义文本分类器服务。自定义文本分类器可以通过调用 TextClassifierService.getDefaultTextClassifierImplementation(Context)
来获取默认文本分类器的实例,从而依赖于默认文本分类器。
InlineSuggestionRenderService
InlineSuggestionRenderService
服务组件使内嵌建议能够显示在键盘建议条中。此服务被调用以渲染一个 View
对象,该对象为新的内嵌自动填充流程保存内嵌建议。此渲染器服务的默认实现调用 androidx.autofill.inline.Renderer
以渲染建议。CTS 测试在 /autofillservice/cts/inline/
中验证了此行为。
软件包名称
运行 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 测试套件 (MTS) 也包含多个 ExtServices 测试。ExtServices 测试的完整列表如下:
配置更改。由 CTS 测试
cts/tests/tests/os/src/android/os/cts/RequiredComponentsTest.java
验证。TextClassifier
配置。由 CTS 测试cts/TextClassifierPolicyTest.java
验证。自动填充内嵌建议。由
cts/inline/
中的 CTS 测试验证。