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 implementação por fornecedores de hardware. Uma HAL permite que os fornecedores de hardware implementem recursos específicos do dispositivo de nível inferior sem afetar ou modificar o código em camadas de nível superior.

Termos obrigatórios

Confira a seguir uma lista de definições dos termos usados nesta seção da documentação:

Linguagem de definição de interface do Android (AIDL)
Uma linguagem semelhante ao Java usada para definir interfaces de forma independente da linguagem de programação usada. A AIDL permite a comunicação entre clientes HAL e serviços HAL.
HAL com vinculação
Uma HAL que se comunica com outros processos usando chamadas de comunicação entre processos (IPC) do binder. Os HALs vinculados são executados em um processo separado do cliente que os usa. Os HALs vinculados são registrados com um gerenciador de serviços para que os clientes possam acessar os recursos. As HALs criadas para o Android 8 e versões mais recentes são vinculadas.
Cliente HAL
O processo que acessa o serviço HAL.
Interface HAL
A interface comum usada pelo cliente e pelo serviço HAL para se comunicar.
Serviço HAL

O código específico do hardware, como o que se comunica com a câmera específica do dispositivo. É necessário implementar todos os HALs obrigatórios listados na matriz de compatibilidade para a versão de destino 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 uma HAL para oferecer suporte aos recursos exclusivos do hardware.

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

Uma linguagem usada para definir interfaces de forma independente da linguagem de programação usada. O HIDL permite a comunicação entre clientes HAL e serviços 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 estável 5
  • OpenGL
  • Vulkan
  • android.hidl.memory@1.0 (fornecido pelo sistema Android, sempre encapsulado)
  • android.hardware.renderscript@1.0
HAL encapsulada

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

Quais são as próximas etapas?