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 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 de vinculação
- Um HAL que se comunica com outros processos usando chamadas de comunicação entre processos (IPC) de vinculação. As HALs Binderized são executadas em um processo separado do cliente que as utiliza. 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 da HAL para comunicação.
- Serviço HAL
O código específico do hardware, como o código que leva à câmera específica do dispositivo. É necessário implementar todos os HALs necessá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 da HAL e serviços da HAL.
- HAL de mesmo processo (SP)
Um conjunto restrito de HALs agrupados. A associação ao conjunto é controlada pelo Google. Os HALs de SP incluem:
- HAL do 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 HAL que foi criado antes do Android 8, mas foi adicionado a um wrapper AIDL ou HIDL para funcionar com o Android 8 e versões mais recentes.
Qual é a próxima etapa?
- Para saber como implementar um serviço HAL, consulte AIDL para HALs.
- Para saber como criar ou estender um HAL existente, consulte Interfaces estendidas anexadas.