ExtServices

O módulo ExtServices atualiza os componentes do framework para a funcionalidade principal do SO, como classificação de notificações, estratégias de correspondência de texto de preenchimento automático, cache de armazenamento, monitoramento de pacotes e outros serviços executados continuamente. Esse módulo é atualizável, o que significa que ele pode receber atualizações de funcionalidades fora do ciclo normal de versão do Android.

Componentes de serviço

O módulo ExtServices contém os serviços a seguir.

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 autor da chamada pode especificar qual dos algoritmos de hash com suporte ele quer usar.

TextClassifierService

O componente de serviço TextClassifierService oferece suporte a APIs TextClassifier 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 personalizado de classificador de texto 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 para esse serviço de renderizador chama androidx.autofill.inline.Renderer para renderizar a sugestão. Esse comportamento é verificado por testes CTS em /autofillservice/cts/inline/.

Nome do pacote

Os dispositivos com o Android 11 precisam definir config_servicesExtensionPackage (em frameworks/base/core/res/res/values/config.xml) para 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 do 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 classificador de texto personalizado que chama o classificador de texto padrão. No entanto, isso não é recomendado. No Android 10, o módulo ExtServices não oferece opções de personalização.

Teste

O conjunto de teste de compatibilidade do Android (CTS) verifica a funcionalidade do módulo ExtServices executando um conjunto abrangente de testes do CTS em cada versão do módulo. Além disso, o pacote de testes principal (MTS) também contém vários testes de ExtServices. Confira a lista completa de testes de ExtServices: