Tổng quan về lớp trừu tượng phần cứng

Trong Android 8.0 trở lên, các lớp cấp thấp hơn được viết lại để áp dụng kiến ​​trúc mô-đun mới hơn. Các thiết bị chạy Android 8.0 trở lên phải hỗ trợ HAL được viết bằng HIDL, với một số ngoại lệ được liệt kê bên dưới. Những HAL này có thể được liên kết hoặc truyền qua. Trong Android 11, HAL viết bằng AIDL cũng được hỗ trợ. Tất cả AIDL HAL đều được kết dính.

  • HAL được kết dính . HAL được thể hiện bằng ngôn ngữ định nghĩa giao diện HAL (HIDL) hoặc ngôn ngữ định nghĩa giao diện Android (AIDL). Các HAL này thay thế cả HAL thông thường và HAL cũ được sử dụng trong các phiên bản Android trước đó. Trong Binderized HAL, khung Android và HAL giao tiếp với nhau bằng cách sử dụng lệnh gọi liên lạc giữa các quá trình liên kết (IPC). Tất cả các thiết bị chạy Android 8.0 trở lên chỉ được hỗ trợ HAL được liên kết.

  • Chuyển tiếp HAL . Các HAL thông thường hoặc kế thừa được bọc HIDL. Các HAL này bao bọc các HAL hiện có và có thể phục vụ HAL ở chế độ liên kết và cùng một quy trình (chuyển qua). Các thiết bị nâng cấp lên Android 8.0 có thể sử dụng HAL chuyển tiếp.

Yêu cầu chế độ HAL

Thiết bị Truyền qua Chất kết dính
Khởi chạy với Android 8.0 HAL được liệt kê trong HAL truyền qua phải là thông qua. Tất cả các HAL khác đều được liên kết (bao gồm cả HAL là phần mở rộng của nhà cung cấp).
Nâng cấp lên Android 8.0 HAL được liệt kê trong HAL truyền qua phải là thông qua. HAL được liệt kê trong HAL được kết dính phải được kết dính.
Tất cả các HAL khác do hình ảnh nhà cung cấp cung cấp có thể ở chế độ chuyển tiếp HOẶC được liên kết. Trong một thiết bị hoàn toàn tuân thủ Treble, tất cả những thứ này phải được kết dính.

HAL được liên kết

Android yêu cầu các HAL sau phải được liên kết trên tất cả các thiết bị Android bất kể chúng là thiết bị khởi chạy hay thiết bị nâng cấp:

  • android.hardware.biometrics.fingerprint@2.1 . Thay thế fingerprintd không còn có trong Android 8.0.
  • android.hardware.configstore@1.0 . Mới trong Android 8.0.
  • android.hardware.dumpstate@1.0 . Giao diện ban đầu do HAL này cung cấp không thể được chuyển đổi và đã bị thay đổi. Do đó, dumpstate_board phải được triển khai lại trên một thiết bị nhất định (đây là HAL tùy chọn).
  • android.hardware.graphics.allocator@2.0 . Bắt buộc phải được liên kết trong Android 8.0 để bộ mô tả tệp không phải chia sẻ giữa các quy trình đáng tin cậy và không đáng tin cậy.
  • android.hardware.radio@1.0 . Thay thế giao diện được cung cấp bởi rild tồn tại trong quy trình riêng của nó.
  • android.hardware.usb@1.0 . Mới trong Android 8.0.
  • android.hardware.wifi@1.0 . Tính năng mới trong Android 8.0, thay thế thư viện Wi-Fi HAL cũ đã được tải vào system_server
  • android.hardware.wifi.supplicant@1.0 . Giao diện HIDL trên quy trình wpa_supplicant hiện có.

HAL truyền qua

Android yêu cầu các HAL sau phải ở chế độ chuyển tiếp trên tất cả các thiết bị Android bất kể chúng là thiết bị khởi chạy hay thiết bị nâng cấp:

  • android.hardware.graphics.mapper@1.0 . Ánh xạ bộ nhớ vào tiến trình mà nó tồn tại.
  • android.hardware.renderscript@1.0 . Chuyển các mục trong cùng một quy trình (tương đương với openGL ).

Tất cả các HAL không được liệt kê ở trên phải được kết dính cho các thiết bị phóng.

HAL cùng quy trình

HAL cùng quy trình (SP-HAL) luôn mở trong cùng một quy trình mà chúng được sử dụng. Chúng bao gồm tất cả các HAL không được biểu thị bằng HIDL cũng như một số HAL không được liên kết. Tư cách thành viên trong bộ SP-HAL chỉ do Google kiểm soát, không có ngoại lệ.

SP-HAL bao gồm:

  • openGL
  • Vulkan
  • android.hidl.memory@1.0 (được cung cấp bởi hệ thống Android, luôn chuyển tiếp)
  • android.hardware.graphics.mapper@1.0
  • android.hardware.renderscript@1.0