ExtServices

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

Компоненты обслуживания

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

DisplayHashingService

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

TextClassifierService

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