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.

Các loại HAL

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. Các HAL này có thể được ràng buộc hoặc chuyển qua. Trong Android 11, HAL được viết bằng AIDL cũng được hỗ trợ. Tất cả AIDL HAL đều được ràng buộc.

  • HAL được 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ế cho cả HAL thông thường và kế thừa được sử dụng trong các phiên bản Android trước đó. Trong HAL được liên kết, khuôn khổ Android và HAL giao tiếp với nhau bằng cách sử dụng các lệnh gọi giao tiếp liên quá trình (IPC) kết dính. Tất cả các thiết bị khởi chạy với Android 8.0 trở lên chỉ phải hỗ trợ HAL được ràng buộc.
  • Thông qua HALs. Một HIDL bọc thông thường hoặc HAL di sản . Các HAL này bao bọc các HAL hiện có và có thể phân phát HAL trong các chế độ được ràng buộc và cùng 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 qua.

Yêu cầu chế độ HAL

Thiết bị Chuyển qua Binderized
Khởi chạy với Android 8.0 Hals liệt kê trong Hals Passthrough phải passthrough. Tất cả các HAL khác đều được ràng buộc (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 Hals liệt kê trong Hals Passthrough phải passthrough. Hals liệt kê trong Hals Binderized phải binderized.
Tất cả các HAL khác được cung cấp bởi hình ảnh của nhà cung cấp có thể ở chế độ chuyển qua HOẶC ràng buộc. Trong một thiết bị hoàn toàn tương thích với Treble, tất cả những thứ này phải được ràng buộc.

HAL được liên kết

Android yêu cầu các HALS sau phải được ràng buộc 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 mà không còn trong Android 8.0.
  • android.hardware.configstore@1.0 . Tính năng mới trong Android 8.0.
  • android.hardware.dumpstate@1.0 . Không thể lấp lánh và thay đổi giao diện ban đầu do HAL này cung cấp. Bởi vì điều này, dumpstate_board phải được tái thực hiện trên một thiết bị nhất định (đây là một HAL không bắt buộc).
  • android.hardware.graphics.allocator@2.0 . Bắt buộc phải được ràng buộc trong Android 8.0 để các bộ mô tả tệp không cần 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 mà sống trong quá trình riêng của mình.
  • android.hardware.usb@1.0 . Tính năng mới trong Android 8.0.
  • android.hardware.wifi@1.0 . Mới trong Android 8.0, thay thế các di sản Wi-Fi HAL thư viện đó được nạp vào system_server .
  • android.hardware.wifi.supplicant@1.0 . Một giao diện HIDL so với hiện wpa_supplicant quá trình.

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

HAL chuyển qua

Android yêu cầu các HAL sau ở chế độ chuyển qua 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 quá trình nó tồn tại.
  • android.hardware.renderscript@1.0 . Qua mục trong quá trình tương tự (tương đương với openGL ).

Tất cả HAL không được liệt kê ở trên phải được ràng buộc cho các thiết bị khởi chạy.

HAL cùng quy trình

HAL cùng một quy trình (SP-HALs) luôn mở trong cùng một quy trình mà chúng được sử dụng. Họ bao gồm tất cả Hals không thể hiện trong HIDL cũng như một số mà không phải là binderized. Tư cách thành viên trong nhóm SP-HAL chỉ do Google kiểm soát, không có ngoại lệ.

SP-HAL bao gồm những thứ sau:

  • openGL
  • Vulkan
  • android.hidl.memory@1.0 (được cung cấp bởi hệ thống Android, luôn passthrough)
  • 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 còn được dùng trong Android 8.0) là giao diện tuân theo giao diện nhị phân ứng dụng được đặt tên và có phiên bản cụ thể (ABI). Phần lớn các giao diện hệ điều hành Android ( máy ảnh , âm thanh , cảm biến , vv) là theo hình thức truyền thống Hals, được định nghĩa dưới phần cứng / libhardware / include / phần cứng .

HAL cũ (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à HAL kế thừa. Mặc dù không có cách thống nhất hoặc tiêu chuẩn 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 bộ phận của một số Hals di sản được chứa trong libhardware_legacy , trong khi các bộ phận khác được xen kẽ trong suốt codebase.