Google is committed to advancing racial equity for Black communities. See how.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

Tipos HAL

No Android 8.0 e superior, as camadas de nível inferior são reescritas para adotar uma nova arquitetura mais modular. Os dispositivos que executam o Android 8.0 e superior devem oferecer suporte a HALs escritos em HIDL, com algumas exceções listadas abaixo. Esses HALs podem ser encadernados ou passados. No Android 11, HALs escritos em AIDL também são suportados. Todos os AIDL HALs são encadernados.

  • HALs encadernados. HALs expressos em linguagem de definição de interface HAL (HIDL) ou linguagem de definição de interface Android (AIDL). Esses HALs substituem os HALs convencionais e legados usados ​​nas versões anteriores do Android. Em um Binderized HAL, a estrutura Android e os HALs se comunicam usando chamadas de comunicação entre processos de binder (IPC). Todos os dispositivos lançados com Android 8.0 ou posterior devem oferecer suporte apenas a HALs vinculados.
  • Passthrough HALs. Um HAL convencional ou legado envolto em HIDL. Esses HALs envolvem os HALs existentes e podem servir ao HAL nos modos binderized e mesmo processo (passagem). Dispositivos com upgrade para Android 8.0 podem usar HALs de passagem.

Requisitos do modo HAL

Dispositivo Atravessar Encadernado
Lançar com Android 8.0 HALs listados em Passthrough HALs devem ser passthrough. Todos os outros HALs são encadernados (incluindo HALs que são extensões do fornecedor).
Atualize para Android 8.0 HALs listados em Passthrough HALs devem ser passthrough. HALs listados em Binderized HALs devem ser binderized.
Todos os outros HALs fornecidos pela imagem do fornecedor podem estar no modo passthrough OU binderized. Em um dispositivo totalmente compatível com Treble, todos eles devem ser encadernados.

HALs encadernados

O Android requer que os seguintes HALS sejam agrupados em todos os dispositivos Android, independentemente de serem dispositivos de inicialização ou de atualização:

  • android.hardware.biometrics.fingerprint@2.1 . Substitui a fingerprintd que não está mais no Android 8.0.
  • android.hardware.configstore@1.0 . Novo no Android 8.0.
  • android.hardware.dumpstate@1.0 . A interface original fornecida por este HAL não pôde ser corrigida e foi alterada. Por causa disso, dumpstate_board deve ser dumpstate_board em um determinado dispositivo (este é um HAL opcional).
  • android.hardware.graphics.allocator@2.0 . Necessário para ser encadernado no Android 8.0 para que os descritores de arquivo não precisem ser compartilhados entre processos confiáveis ​​e não confiáveis.
  • android.hardware.radio@1.0 . Substitui a interface fornecida por rild que vive em seu próprio processo.
  • android.hardware.usb@1.0 . Novo no Android 8.0.
  • android.hardware.wifi@1.0 . Novo no Android 8.0, substitui a biblioteca HAL Wi-Fi legada que foi carregada em system_server .
  • android.hardware.wifi.supplicant@1.0 . Uma interface HIDL sobre o processo wpa_supplicant existente.

OBSERVAÇÃO : o Android fornece as seguintes interfaces HIDL que estarão sempre no modo binderized: android.frameworks.* , android.system.* E android.hidl.* (Exceto para android.hidl.memory@1.0 conforme descrito abaixo).

Passthrough HALs

O Android requer que os seguintes HALs estejam no modo passthrough em todos os dispositivos Android, independentemente de serem dispositivos de inicialização ou de atualização:

  • android.hardware.graphics.mapper@1.0 . Mapeia a memória no processo em que ela vive.
  • android.hardware.renderscript@1.0 . Passa itens no mesmo processo (equivalente a openGL ).

Todos os HALs não listados acima devem ser encadernados para dispositivos de inicialização.

HALs do mesmo processo

HALs do mesmo processo (SP-HALs) sempre abrem no mesmo processo em que são usados. Eles incluem todos os HALs não expressos em HIDL, bem como alguns que não são aglomerados. A associação ao conjunto SP-HAL é controlada apenas pelo Google, sem exceções.

Os SP-HALs incluem o seguinte:

  • openGL
  • Vulkan
  • android.hidl.memory@1.0 (fornecido pelo sistema Android, sempre passthrough)
  • android.hardware.graphics.mapper@1.0 .
  • android.hardware.renderscript@1.0

HALs convencionais e legados

HALs convencionais (obsoletos no Android 8.0) são interfaces que estão em conformidade com uma interface binária de aplicativo (ABI) nomeada e com versão específica. A maior parte das interfaces do sistema Android ( câmera , áudio , sensores , etc.) estão na forma de HALs convencionais, que são definidos em hardware / libhardware / include / hardware .

HALs legados (também obsoletos no Android 8.0) são interfaces anteriores aos HALs convencionais. Alguns subsistemas importantes (Wi-Fi, Radio Interface Layer e Bluetooth) são HALs legados. Embora não haja uma maneira uniforme ou padronizada de descrever um HAL legado, qualquer coisa anterior ao Android 8.0 que não seja um HAL convencional é um HAL legado. Partes de alguns HALs legados estão contidos em libhardware_legacy , enquanto outras partes são intercaladas em toda a base de código.