ExtServices

Модуль ExtServices обновляет компоненты фреймворка для основных функций ОС, таких как ранжирование уведомлений, стратегии автозаполнения текста, кэширование хранилища, мониторинг пакетов и другие службы, работающие непрерывно. Этот модуль обновляемый, то есть он может получать обновления функциональности вне обычного цикла выпуска Android.

Компоненты сервиса

Модуль ExtServices содержит следующие сервисы.

DisplayHashingService

В Android 12 DisplayHashingService используется для создания экземпляра DisplayHash для указанного буфера. Он также используется для проверки того, что система сгенерировала определенный хеш дисплея. При генерации хеша дисплея вызывающая сторона может указать, какой из поддерживаемых алгоритмов хеширования она хочет использовать.

Сервис классификации текста

Компонент службы TextClassifierService обеспечивает поддержку API TextClassifier и функций Android, таких как интеллектуальный выбор текста и интеллектуальные подсказки в уведомлениях. Модуль ExtServices содержит классификатор текста по умолчанию, который проверяется с помощью теста CTS TextClassifierPolicyTest.java .

При необходимости вы можете настроить собственную службу классификации текста, указав параметр config_defaultTextClassifierPackage в config.xml . Пользовательские классификаторы текста могут зависеть от классификатора текста по умолчанию, для чего можно вызвать TextClassifierService.getDefaultTextClassifierImplementation(Context) чтобы получить его экземпляр.

InlineSuggestionRenderService

Компонент службы InlineSuggestionRenderService позволяет отображать встроенные подсказки в панели подсказок клавиатуры. Эта служба вызывается для рендеринга объекта View , содержащего встроенную подсказку для нового потока автозаполнения. Реализация по умолчанию для этой службы рендеринга вызывает androidx.autofill.inline.Renderer для рендеринга подсказки. Это поведение проверяется тестами CTS в /autofillservice/cts/inline/ .

Название пакета

На устройствах под управлением 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/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) проверяет функциональность модуля ExtServices, запуская полный набор тестов CTS для каждого выпуска модуля. Кроме того, основной набор тестов (MTS) также содержит несколько тестов ExtServices. Полный список тестов ExtServices выглядит следующим образом: