하드웨어 추상화 계층 개요

Android 8.0 이상에서는 더 모듈화된 새로운 아키텍처를 채택하기 위해 하위 수준 레이어가 다시 작성되었습니다. Android 8.0 이상을 실행하는 기기는 아래 나열된 몇 가지 예외를 제외하고 HIDL로 작성된 HAL을 지원해야 합니다. 이러한 HAL은 바인더화되거나 통과될 수 있습니다. Android 11에서는 AIDL로 작성된 HAL도 지원됩니다. 모든 AIDL HAL은 바인더화되어 있습니다.

  • 바인더화된 HAL . HAL 인터페이스 정의 언어(HIDL) 또는 Android 인터페이스 정의 언어(AIDL)로 표현된 HAL입니다. 이러한 HAL은 이전 버전의 Android에서 사용된 기존 HAL과 레거시 HAL을 모두 대체합니다. 바인더화된 HAL에서 Android 프레임워크와 HAL은 바인더 IPC(프로세스 간 통신) 호출을 사용하여 서로 통신합니다. Android 8.0 이상으로 출시되는 모든 기기는 바인더화된 HAL만 지원해야 합니다.

  • 패스스루 HAL . HIDL로 래핑된 기존 HAL 또는 레거시 HAL 이러한 HAL은 기존 HAL을 래핑하고 바인더화 및 동일 프로세스(패스스루) 모드에서 HAL을 제공할 수 있습니다. Android 8.0으로 업그레이드하는 기기는 패스스루 HAL을 사용할 수 있습니다.

HAL 모드 요구사항

장치 지나가 다 바인더화됨
안드로이드 8.0으로 출시 패스스루 HAL 에 나열된 HAL은 패스스루여야 합니다. 다른 모든 HAL은 바인더화됩니다(공급업체 확장인 HAL 포함).
안드로이드 8.0으로 업그레이드 패스스루 HAL 에 나열된 HAL은 패스스루여야 합니다. 바인더화된 HAL 에 나열된 HAL은 바인더화되어야 합니다.
공급업체 이미지에서 제공하는 다른 모든 HAL은 패스스루 또는 바인더화 모드일 수 있습니다. 완전히 Treble을 준수하는 장치에서는 이들 모두 바인더화되어야 합니다.

바인더화된 HAL

Android에서는 실행 장치인지 업그레이드 장치인지에 관계없이 모든 Android 장치에서 다음 HAL을 바인더화해야 합니다.

  • android.hardware.biometrics.fingerprint@2.1 . 더 이상 Android 8.0에 없는 fingerprintd 대체합니다.
  • android.hardware.configstore@1.0 . 안드로이드 8.0의 새로운 기능.
  • android.hardware.dumpstate@1.0 . 이 HAL에서 제공하는 원래 인터페이스는 심싱할 수 없어 변경되었습니다. 이로 인해 dumpstate_board 지정된 기기에서 다시 구현되어야 합니다(선택적 HAL임).
  • android.hardware.graphics.allocator@2.0 . 신뢰할 수 있는 프로세스와 신뢰할 수 없는 프로세스 간에 파일 설명자를 공유할 필요가 없도록 Android 8.0에서 바인더화해야 합니다.
  • android.hardware.radio@1.0 . 자체 프로세스에 있는 rild 가 제공하는 인터페이스를 대체합니다.
  • android.hardware.usb@1.0 . 안드로이드 8.0의 새로운 기능.
  • android.hardware.wifi@1.0 . Android 8.0의 새로운 기능으로 system_server 에 로드된 기존 Wi-Fi HAL 라이브러리를 대체합니다.
  • android.hardware.wifi.supplicant@1.0 . 기존 wpa_supplicant 프로세스에 대한 HIDL 인터페이스입니다.

패스스루 HAL

Android에서는 실행 장치인지 업그레이드 장치인지에 관계없이 모든 Android 장치에서 패스스루 모드에 있어야 하는 다음 HAL이 필요합니다.

  • android.hardware.graphics.mapper@1.0 . 메모리를 해당 프로세스에 매핑합니다.
  • android.hardware.renderscript@1.0 . 동일한 프로세스에서 항목을 전달합니다( openGL 과 동일).

위에 나열되지 않은 모든 HAL은 실행 장치에 대해 바인더화되어야 합니다.

동일 프로세스 HAL

SP-HAL(동일 프로세스 HAL)은 항상 사용되는 동일한 프로세스에서 열립니다. 여기에는 HIDL로 표현되지 않은 모든 HAL과 바인더화되지 않은 일부 HAL이 포함됩니다. SP-HAL 세트의 멤버십은 예외 없이 Google에서만 관리합니다.

SP-HAL에는 다음이 포함됩니다.

  • openGL
  • Vulkan
  • android.hidl.memory@1.0 (Android 시스템에서 제공, 항상 통과)
  • android.hardware.graphics.mapper@1.0
  • android.hardware.renderscript@1.0