ExtServices

El módulo ExtServices actualiza los componentes del marco para la funcionalidad principal del sistema operativo, como clasificación de notificaciones, estrategias de autocompletar de coincidencia de texto, caché de almacenamiento, vigilancia de paquetes y otros servicios que se ejecutan continuamente. Este módulo es actualizable, lo que significa que puede recibir actualizaciones de funcionalidad fuera del ciclo de lanzamiento normal de Android.

Componentes de servicio

El módulo ExtServices contiene los siguientes servicios.

Servicio DisplayHashing

En Android 12, DisplayHashingService se usa para generar una instancia de DisplayHash para el búfer especificado. También se utiliza para verificar que el sistema generó un hash de visualización específico. Al generar un hash de visualización, la persona que llama puede especificar cuál de los algoritmos hash admitidos desea utilizar.

Servicio clasificador de texto

El componente de servicio TextClassifierService respalda las API TextClassifier y las funciones de Android, como la selección de texto inteligente y sugerencias inteligentes en las notificaciones. El módulo ExtServices contiene el clasificador de texto predeterminado, que se verifica mediante la prueba CTS TextClassifierPolicyTest.java .

Si es necesario, puede configurar un servicio clasificador de texto personalizado especificando config_defaultTextClassifierPackage en config.xml . Los clasificadores de texto personalizados pueden depender del clasificador de texto predeterminado llamando a TextClassifierService.getDefaultTextClassifierImplementation(Context) para obtener una instancia del mismo.

Servicio de representación de sugerencias en línea

El componente de servicio InlineSuggestionRenderService permite que las sugerencias en línea se muestren en la franja de sugerencias del teclado. Se llama a este servicio para representar un objeto View que contiene la sugerencia en línea para el nuevo flujo de Autocompletar en línea. La implementación predeterminada de este servicio de representación llama a androidx.autofill.inline.Renderer para representar la sugerencia. Este comportamiento se verifica mediante pruebas CTS en /autofillservice/cts/inline/ .

Nombre del paquete

Los dispositivos que ejecutan Android 11 deben configurar config_servicesExtensionPackage (en frameworks/base/core/res/res/values/config.xml ) en el nombre del paquete ExtServices ( com.android.ext.services ). Este cambio de configuración se verifica mediante la prueba CTS cts/tests/tests/os/src/android/os/cts/RequiredComponentsTest.java .

Límite del módulo

En Android 12, el código del módulo ExtServices se mueve de frameworks/base/apex/extservices (este es un subdirectorio del frameworks/base project ) y packages/modules/ExtServices .

La nueva estructura del proyecto para packages/modules/ExtServices es la siguiente:

  • apex/ (archivos de frameworks/base/apex/extservices )
  • java/ (archivos de packages/modules/ExtServices/res , packages/modules/ExtServices/src , packages/modules/ExtServices/tests y archivos para nuevas funciones)
  • jni/ (archivos para nueva característica)
  • native/ (archivos para nueva característica)

El límite del módulo ExtServices está en packages/modules/ExtServices . Android 11 también saca varias clases de implementación TextClassifier de frameworks/base/core/ .

Formato del módulo

En Android 11, el módulo ExtServices ( com.android.ext.services ) está en formato APEX . En Android 10, este módulo está en formato APK.

Personalización

En Android 11, puedes configurar un servicio de clasificador de texto personalizado que llame al clasificador de texto predeterminado (sin embargo, esto no se recomienda). En Android 10, el módulo ExtServices no ofrece opciones de personalización.

Pruebas

El conjunto de pruebas de compatibilidad de Android (CTS) verifica la funcionalidad del módulo ExtServices ejecutando un conjunto completo de pruebas CTS en cada versión del módulo. Además, Mainline Test Suite (MTS) también contiene varias pruebas de ExtServices. La lista completa de pruebas de ExtServices es la siguiente: