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 com preenchimento automático, cache de armazenamento, de pacotes de monitoramento e outros serviços executados continuamente. Esse módulo é atuável, 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 serviços a seguir.

DisplayHashingService

No Android 12, o DisplayHashingService é usado para gera 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. Quando gerar um hash de exibição, o autor da chamada poderá especificar qual das algoritmos de hash que ela quer usar.

TextClassifierService

O componente de serviço TextClassifierService oferece suporte a APIs TextClassifier e recursos do Android, como seleção de texto inteligente 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. 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 ativa as sugestões inline seja mostrado 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 do renderizador chama o androidx.autofill.inline.Renderer para renderizar a sugestão. Esse comportamento é verificado pelos testes de 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 serviço ExtServices o código do módulo é movido de frameworks/base/apex/extservices. (este é 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 do 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. Android 11 também move várias implementações de TextClassifier classes 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 Mainline Test Suite (MTS) também contém várias Testes ExtServices. Confira a lista completa de testes de ExtServices: