Visão geral da camada de abstração de hardware (HAL)

Uma camada de abstração de hardware (HAL) é um tipo de camada de abstração com uma interface padrão para os fornecedores de hardware implementarem. Uma HAL permite que fornecedores de hardware implementem recursos de nível inferior e específicos do dispositivo sem afetar ou modificar o código em camadas de nível superior.

Termos obrigatórios

Confira abaixo uma lista de definições para os termos usados nesta seção da documentação:

Linguagem de definição de interface do Android (AIDL)
Uma linguagem semelhante a Java usada para definir interfaces de maneira independente da linguagem de programação usada. A AIDL permite a comunicação entre clientes e serviços da HAL.
HAL do Binder
Uma HAL que se comunica com outros processos usando chamadas de comunicação entre processos (IPC) do binder. As HALs binderizadas são executadas em um processo separado do cliente que as usa. As HALs binderizadas são registradas com um gerenciador de serviços para que os clientes possam acessar os recursos delas. As HALs escritas para o Android 8 e versões mais recentes são binderizadas.
Cliente HAL
O processo que acessa o serviço HAL.
Interface HAL
A interface comum usada pelo cliente e pelo serviço HAL para comunicação.
Serviço HAL

O código específico do hardware, como o que se comunica com a câmera do seu dispositivo. É necessário implementar todas as HALs obrigatórias listadas na matriz de compatibilidade para a versão que você segmenta na partição do fornecedor. Para mais informações sobre matrizes de compatibilidade, consulte Matrizes de compatibilidade.

Você também pode criar uma nova interface HAL ou estender a interface de um HAL para oferecer suporte aos recursos exclusivos do seu hardware.

Linguagem de definição de interface de hardware (HIDL)

Uma linguagem usada para definir interfaces de maneira independente da linguagem de programação usada. O HIDL permite a comunicação entre clientes e serviços da HAL.

HAL de mesmo processo (SP)

Um conjunto restrito de HALs encapsulados. A associação ao conjunto é controlada pelo Google. As HALs de SP incluem:

  • HAL do mapeador C 5 estável
  • OpenGL
  • Vulkan
  • android.hidl.memory@1.0 (fornecido pelo sistema Android, sempre encapsulado)
  • android.hardware.renderscript@1.0
HAL encapsulado

Um serviço HAL criado antes do Android 8, mas que foi envolvido em um wrapper AIDL ou HIDL para funcionar com o Android 8 e versões mais recentes.

Quais são as próximas etapas?