O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

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 encadernados.
  • Passthrough HALs. Um HIDL-enrolado convencional ou HAL legado . Esses HALs envolvem os HALs existentes e podem servir o HAL nos modos binderized e mesmo processo (passthrough). 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 listadas no HAL de passagem deve ser de passagem. Todos os outros HALs são encadernados (incluindo HALs que são extensões do fornecedor).
Atualize para Android 8.0 HALs listadas no HAL de passagem deve ser de passagem. HALs listadas em HALs Binderized deve 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 fingerprintd que já não é 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. Devido a isso, dumpstate_board deve ser re-implementadas em um determinado dispositivo (esta é uma 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 pela 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 o legado biblioteca Wi-Fi HAL que foi carregado em system_server .
  • android.hardware.wifi.supplicant@1.0 . Uma interface HIDL sobre o existente wpa_supplicant processo.

NOTA: Android proporciona os seguintes interfaces HIDL que irá ser sempre em modo binderized: android.frameworks.* , android.system.* , E android.hidl.* (Excepto para android.hidl.memory@1.0 como descrito abaixo).

Passthrough HALs

O Android requer que os seguintes HALs estejam no modo de passagem 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 os artigos do 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 todas as HALs não expressos em HIDL, bem como alguns que não são binderized. 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 de passagem)
  • 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âmara , de áudio , sensores , etc) estão na forma de HALS convencionais, que são definidas em hardware / libhardware / incluem / 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 por todo o código base.