Модуль ExtServices обновляет компоненты фреймворка для основных функций ОС, таких как ранжирование уведомлений, стратегии сопоставления текста для автозаполнения, кеш хранилища, сторожевой таймер пакетов и другие сервисы, которые работают постоянно. Этот модуль можно обновлять, то есть он может получать обновления функций вне обычного цикла выпуска Android.
Компоненты сервиса
Модуль ExtServices содержит следующие сервисы:
DisplayHashingServiceначиная с Android 12TextClassifierServiceначиная с Android 11InlineSuggestionsRenderServiceначиная с Android 11AutofillFieldClassificationService, начиная с Android 10NotificationAssistantService, начиная с Android 10ResolverRankerService, начиная с Android 10CacheQuotaServiceначиная с Android 10
DisplayHashingService
В Android 12 DisplayHashingService используется для создания экземпляра DisplayHash для указанного буфера. Он также используется для проверки того, что определенный хеш дисплея был сгенерирован системой. При создании хеша вызывающий абонент может указать, какой из поддерживаемых алгоритмов хеширования он хочет использовать.
TextClassifierService
Компонент сервиса TextClassifierService поддерживает TextClassifier API и функции 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_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 Compatibility Test Suite (CTS) проверяет функциональность модуля ExtServices, запуская полный набор тестов CTS для каждого выпуска модуля. Кроме того, в основной пакет тестирования (MTS) входит несколько тестов ExtServices. Ниже приведен полный список тестов ExtServices.
Изменения конфигурации. Проверено с помощью теста CTS
cts/tests/tests/os/src/android/os/cts/RequiredComponentsTest.java.TextClassifierconfig. Проверено с помощью теста CTScts/TextClassifierPolicyTest.java.Встроенная подсказка автозаполнения. Проверено с помощью тестов CTS в
cts/inline/.