Ikhtisar lapisan abstraksi perangkat keras

Di Android 8.0 dan yang lebih tinggi, lapisan tingkat bawah 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 tercantum di bawah. HAL ini dapat berupa pengikat atau passthrough. Di Android 11, HAL yang ditulis dalam AIDL juga didukung. Semua AIDL HAL terikat.

  • HAL yang terbinderisasi . 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 Terbinder, 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 lebih baru harus mendukung HAL yang dibinder saja.

  • melewati HAL . HAL konvensional atau HAL Lama yang dibungkus HIDL HAL ini membungkus HAL yang ada dan dapat melayani HAL dalam mode pengikatan dan proses yang sama (passthrough). Perangkat yang diupgrade ke Android 8.0 dapat menggunakan HAL passthrough.

Persyaratan mode HAL

Perangkat Melewati Terikat
Luncurkan dengan Android 8.0 HAL yang terdaftar di Passthrough HAL harus passthrough. Semua HAL lainnya terikat (termasuk HAL yang merupakan ekstensi vendor).
Tingkatkan ke Android 8.0 HAL yang terdaftar di Passthrough HAL harus passthrough. HAL yang tercantum dalam HAL Terikat harus diikat.
Semua HAL lain yang disediakan oleh image vendor dapat berada dalam mode passthrough ATAU binderized. Pada perangkat yang sepenuhnya mendukung Treble, semua ini harus diikat.

HAL yang terbinderisasi

Android mewajibkan HAL berikut untuk di-binder pada semua perangkat Android, terlepas dari apakah perangkat tersebut merupakan perangkat peluncuran atau perangkat yang ditingkatkan:

  • 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. Oleh karena itu, dumpstate_board harus diimplementasikan ulang pada perangkat tertentu (ini adalah HAL opsional).
  • android.hardware.graphics.allocator@2.0 . Wajib 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.

melewati HAL

Android mengharuskan HAL berikut berada dalam mode passthrough di semua perangkat Android, terlepas dari apakah perangkat tersebut merupakan perangkat peluncuran atau perangkat peningkatan:

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

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

HAL dengan Proses yang Sama

Same-Process HALs (SP-HALs) selalu terbuka pada proses yang sama dimana mereka digunakan. Mereka mencakup semua HAL yang tidak dinyatakan dalam HIDL serta beberapa yang tidak terikat. Keanggotaan dalam kumpulan SP-HAL hanya dikontrol oleh Google, tanpa pengecualian.

SP-HAL meliputi hal-hal berikut:

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