Jenis HAL

Di Android 8.0 dan yang lebih tinggi, lapisan tingkat yang lebih rendah ditulis ulang untuk mengadopsi arsitektur baru yang lebih modular. Perangkat yang menjalankan Android 8.0 dan lebih tinggi harus mendukung HAL yang ditulis dalam HIDL, dengan beberapa pengecualian yang tercantum di bawah ini. HAL ini dapat diikat atau dilewati. Di Android 11, HAL yang ditulis dalam AIDL juga didukung. Semua AIDL HALs diikat.

  • HAL yang diikat. HAL dinyatakan dalam bahasa definisi antarmuka HAL (HIDL) atau bahasa definisi antarmuka Android (AIDL). HAL ini menggantikan HAL konvensional dan lama yang digunakan di Android versi sebelumnya. Dalam HAL Terikat, kerangka kerja Android dan HAL berkomunikasi satu sama lain menggunakan panggilan komunikasi antar-proses (IPC) pengikat. Semua perangkat yang diluncurkan dengan Android 8.0 atau yang lebih baru harus mendukung HAL yang dibinder saja.
  • Passthrough HAL. HAL konvensional atau warisan yang dibungkus HIDL. HAL ini membungkus HAL yang ada dan dapat melayani HAL dalam mode binderized dan proses yang sama (passthrough). Upgrade perangkat ke Android 8.0 dapat menggunakan HAL passthrough.

Persyaratan mode HAL

Perangkat Melewati Diikat
Luncurkan dengan Android 8.0 HAL yang terdaftar di Passthrough HAL harus passthrough. Semua HAL lainnya diikat (termasuk HAL yang merupakan ekstensi vendor).
Tingkatkan ke Android 8.0 HAL yang terdaftar di Passthrough HAL harus passthrough. HAL yang terdaftar dalam Binderized HALs harus dibinder.
Semua HAL lain yang disediakan oleh gambar vendor dapat dalam mode passthrough ATAU binderized. Dalam perangkat yang sepenuhnya mendukung Treble, semua ini harus di-binder.

HAL yang terikat

Android memerlukan HALS berikut untuk diikat di semua perangkat Android terlepas dari apakah itu perangkat peluncuran atau perangkat pemutakhiran:

  • android.hardware.biometrics.fingerprint@2.1 . Menggantikan fingerprintd yang tidak lagi ada di Android 8.0.
  • android.hardware.configstore@1.0 . Baru di Android 8.0.
  • android.hardware.dumpstate@1.0 . Antarmuka asli yang disediakan oleh HAL ini tidak dapat diubah dan diubah. Karena itu, dumpstate_board harus diimplementasikan kembali pada perangkat tertentu (ini adalah HAL opsional).
  • android.hardware.graphics.allocator@2.0 . Diperlukan untuk di-binder di Android 8.0 sehingga deskriptor file tidak harus dibagi antara proses tepercaya dan tidak tepercaya.
  • android.hardware.radio@1.0 . Menggantikan antarmuka yang disediakan oleh rild yang hidup dalam prosesnya sendiri.
  • android.hardware.usb@1.0 . Baru di Android 8.0.
  • android.hardware.wifi@1.0 . Baru di Android 8.0, menggantikan pustaka HAL Wi-Fi lama yang dimuat ke system_server .
  • android.hardware.wifi.supplicant@1.0 . Antarmuka HIDL melalui proses wpa_supplicant yang ada.

CATATAN : Android menyediakan antarmuka HIDL berikut yang akan selalu dalam mode binderized: android.frameworks.* , android.system.* , dan android.hidl.* (kecuali untuk android.hidl.memory@1.0 seperti yang dijelaskan di bawah).

Passthrough HAL

Android memerlukan HAL berikut untuk berada dalam mode passthrough di semua perangkat Android terlepas dari apakah itu perangkat peluncuran atau perangkat pemutakhiran:

  • android.hardware.graphics.mapper@1.0 . Memetakan memori ke dalam proses yang dijalaninya.
  • android.hardware.renderscript@1.0 . Melewati item dalam proses yang sama (setara dengan openGL ).

Semua HAL yang tidak tercantum di atas harus diikat untuk perangkat peluncuran.

HAL Proses Sama

Same-Process HALs (SP-HALs) selalu terbuka dalam proses yang sama di mana mereka digunakan. Mereka mencakup semua HAL yang tidak diekspresikan dalam HIDL serta beberapa yang tidak terikat. Keanggotaan dalam set SP-HAL hanya dikendalikan oleh Google, tanpa pengecualian.

SP-HAL meliputi:

  • openGL
  • Vulkan
  • android.hidl.memory@1.0 (disediakan oleh sistem Android, selalu melewati)
  • android.hardware.graphics.mapper@1.0 .
  • android.hardware.renderscript@1.0

HAL konvensional & warisan

HAL konvensional (tidak digunakan lagi di Android 8.0) adalah antarmuka yang sesuai dengan antarmuka biner aplikasi (ABI) bernama dan berversi tertentu. Sebagian besar antarmuka sistem Android ( kamera , audio , sensor , dll.) berbentuk HAL konvensional, yang didefinisikan dalam hardware/libhardware/include/hardware .

HAL lawas (juga tidak digunakan lagi di Android 8.0) adalah antarmuka yang mendahului HAL konvensional. Beberapa subsistem penting (Wi-Fi, Radio Interface Layer, dan Bluetooth) adalah HAL lama. Meskipun tidak ada cara yang seragam atau standar untuk menggambarkan HAL lawas, apa pun yang mendahului Android 8.0 yang bukan HAL konvensional adalah HAL lawas. Bagian dari beberapa HAL warisan terkandung dalam libhardware_legacy , sementara bagian lain diselingi di seluruh basis kode.