ExtServices

O módulo ExtServices atualiza componentes de framework para funcionalidades principais do SO, como classificação de notificações, estratégias de correspondência de texto de preenchimento automático, cache de armazenamento, vigilância de pacotes e outros serviços que são executados continuamente. Esse módulo pode ser atualizado, ou seja, ele pode receber atualizações de funcionalidade fora do ciclo normal de lançamento do Android.

Componentes de serviço

O módulo ExtServices contém os seguintes serviços.

DisplayHashingService

No Android 12, DisplayHashingService é usado para gerar uma instância de DisplayHash para o buffer especificado. Ele também é usado para verificar se um hash de exibição específico foi gerado pelo sistema. Ao gerar um hash de exibição, o caller pode especificar qual dos algoritmos de hash compatíveis ele quer usar.

TextClassifierService

O componente de serviço TextClassifierService oferece suporte a APIsTextClassifier e recursos do Android, como seleção inteligente de texto e sugestões inteligentes em notificações. O módulo ExtServices contém o classificador de texto padrão, que é verificado pelo teste CTS TextClassifierPolicyTest.java.

Se necessário, configure um serviço de classificação de texto personalizado especificando config_defaultTextClassifierPackage em config.xml. Os classificadores de texto personalizados podem depender do classificador de texto padrão chamando TextClassifierService.getDefaultTextClassifierImplementation(Context) para receber uma instância dele.

InlineSuggestionRenderService

O componente de serviço InlineSuggestionRenderService permite que as sugestões inline sejam mostradas na linha de sugestões do teclado. Esse serviço é chamado para renderizar um objeto View que contém a sugestão inline para o novo fluxo de preenchimento automático inline. A implementação padrão desse serviço de renderização chama androidx.autofill.inline.Renderer para renderizar a sugestão. Esse comportamento é verificado por testes do CTS em /autofillservice/cts/inline/.

Nome do pacote

Os dispositivos com Android 11 precisam definir config_servicesExtensionPackage (em frameworks/base/core/res/res/values/config.xml) como o nome do pacote ExtServices (com.android.ext.services). Essa mudança de configuração é verificada pelo teste CTS cts/tests/tests/os/src/android/os/cts/RequiredComponentsTest.java.

Limite do módulo

No Android 12, o código do módulo ExtServices é movido de frameworks/base/apex/extservices (um subdiretório de frameworks/base project) e packages/modules/ExtServices.

A nova estrutura de projeto para packages/modules/ExtServices é a seguinte:

  • apex/ (arquivos de frameworks/base/apex/extservices)
  • java/ (arquivos de packages/modules/ExtServices/res, packages/modules/ExtServices/src, packages/modules/ExtServices/tests, e arquivos para o novo recurso)
  • jni/ (arquivos para o novo recurso)
  • native/ (arquivos para o novo recurso)

O limite do módulo ExtServices está em packages/modules/ExtServices. O Android 11 também move várias classes de implementação TextClassifier para fora de frameworks/base/core/.

Formato do módulo

No Android 11, o módulo ExtServices (com.android.ext.services) está no formato APEX. No Android 10, esse módulo está no formato APK.

Personalização

No Android 11, é possível configurar um serviço de classificação de texto personalizado que chama o classificador de texto padrão, mas isso não é recomendado. No Android 10, o módulo ExtServices não oferece opções de personalização.

Teste

O Teste de compatibilidade do Android (CTS) verifica a funcionalidade do módulo ExtServices executando um conjunto abrangente de testes do CTS em todas as versões do módulo. Além disso, o Mainline Test Suite (MTS) também contém vários testes ExtServices. Confira a lista completa de testes do ExtServices: