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 dos fornecedores de hardware. Uma HAL permite que os fornecedores de hardware implementem recursos de nível inferior e específicos ao dispositivo 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 a Java usada para definir interfaces de maneira independente da linguagem de programação usada. A AIDL permite a comunicação entre clientes da HAL e serviços da HAL.
HAL de vinculação
Uma HAL que se comunica com outros processos usando chamadas de comunicação entre processos (IPC) do binder. As HALs Binderized são executadas em um processo separado do cliente que as utiliza. As HALs com Binderized são registradas em um gerenciador de serviços para que os clientes possam acessar os recursos. As HALs escritas para o Android 8 e versões mais recentes são binderadas.
Cliente HAL
O processo que acessa o serviço HAL.
Interface HAL
A interface comum usada pelo cliente e pelo serviço da HAL para comunicação.
Serviço HAL

O código específico do hardware, como o que leva à câmera específica do dispositivo. Implemente todas as HALs necessárias listadas na matriz de compatibilidade para a versão segmentada na partição do fornecedor. Para mais informações sobre matrizes de compatibilidade, consulte Matrizes de compatibilidade.

Você também pode criar uma nova 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 maneira independente da linguagem de programação usada. O HIDL permite a comunicação entre clientes da HAL e serviços da HAL.

HAL de mesmo processo (SP)

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

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

Um serviço de 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.

Qual é a próxima etapa?