Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

Tổng quan về Lớp trừu tượng phần cứng (HAL)

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

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 vài ngoại lệ được liệt kê bên dưới. Các HAL này có thể được kết dính hoặc truyền qua. Trong Android 11, HAL được viết bằng AIDL cũng được hỗ trợ. Tất cả các AIDL HAL đều được kết dính.

  • HALs liên kết. 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à cũ được sử dụng trong các phiên bản Android trước đó. Trong HAL được liên kết hóa, khung Android và HAL liên lạc với nhau bằng cách sử dụng các cuộc gọi liên lạc giữa các quá trình (IPC) liên kết. Tất cả các thiết bị khởi chạy với Android 8.0 trở lên chỉ được hỗ trợ HAL được liên kết.
  • HAL thông qua. HAL truyền 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ế độ kết dính và cùng quy trình (thông qua). Các thiết bị nâng cấp lên Android 8.0 có thể sử dụng HAL thông qua.

Yêu cầu chế độ HAL

Thiết bị thông qua kết dính
Khởi chạy với Android 8.0 HAL được liệt kê trong HAL thông qua phải là thông qua. Tất cả các HAL khác đều được kết dính (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 thông qua phải là thông qua. HAL được liệt kê trong Binderized HALs 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ế độ truyền qua HOẶ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 liên kết

Android yêu cầu HALS 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 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 được cung cấp bởi HAL này không thể được làm mờ và đã được 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 hóa trong Android 8.0 để các bộ mô tả tệp không phải được 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 sống 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ó.

LƯU Ý : Android cung cấp các giao diện HIDL sau đây sẽ luôn ở chế độ liên kết: android.frameworks.* , android.system.*android.hidl.* (ngoại trừ android.hidl.memory@1.0 như được mô tả bên dưới).

HAL thông 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 . Vượt qua 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ị khởi chạy.

HAL cùng quy trình

HAL cùng quy trình (SP-HAL) luôn mở trong cùng quy trình mà chúng được sử dụng. Chúng bao gồm tất cả các HAL không được thể hiện trong HIDL cũng như một số không được kết dính. Tư cách thành viên trong bộ SP-HAL chỉ được kiểm soát bởi Google, 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 thông qua)
  • android.hardware.graphics.mapper@1.0 .
  • android.hardware.renderscript@1.0

HAL thông thường & kế thừa

HAL thông thường (không dùng nữa trong Android 8.0) là các giao diện phù hợp với giao diện nhị phân ứng dụng được đặt tên và phiên bản cụ thể (ABI). Phần lớn giao diện hệ thống Android ( camera , âm thanh , cảm biến , v.v.) ở dạng HAL thông thường, được xác định trong phần cứng/libhardware/include/phần cứng .

HAL kế thừa (cũng không được dùng trong Android 8.0) là giao diện có trước HAL thông thường. Một số hệ thống con quan trọng (Wi-Fi, Lớp giao diện vô tuyến và Bluetooth) là các HAL kế thừa. Mặc dù không có cách thống nhất hoặc chuẩn hóa nào để mô tả HAL kế thừa, nhưng bất kỳ thứ gì có trước Android 8.0 không phải là HAL thông thường đều là HAL kế thừa. Các phần của một số HAL cũ được chứa trong libhardware_legacy , trong khi các phần khác được đặt xen kẽ trong cơ sở mã.