ภาพรวมของ Hardware Abstraction Layer (HAL)

ใน Android 8.0 และสูงกว่า เลเยอร์ระดับล่างจะถูกเขียนขึ้นใหม่เพื่อใช้สถาปัตยกรรมโมดูลาร์แบบใหม่ที่มากขึ้น อุปกรณ์ที่ใช้ Android 8.0 ขึ้นไปต้องรองรับ HAL ที่เขียนด้วย HIDL โดยมีข้อยกเว้นบางประการตามรายการด้านล่าง HAL เหล่านี้สามารถจับตัวเป็นก้อนหรือส่งผ่านได้ ใน Android 11 รองรับ HAL ที่เขียนด้วย AIDL AIDL HAL ทั้งหมดถูกผูกมัด

  • Binderized HALs HAL แสดงในภาษานิยามอินเทอร์เฟซ HAL (HIDL) หรือภาษานิยามอินเทอร์เฟซ Android (AIDL) HAL เหล่านี้จะแทนที่ทั้ง HAL แบบธรรมดาและแบบดั้งเดิมที่ใช้ใน Android เวอร์ชันก่อนหน้า ใน Binderized HAL เฟรมเวิร์ก Android และ HAL จะสื่อสารกันโดยใช้การเรียก Binder Inter-Process Communication (IPC) อุปกรณ์ทั้งหมดที่เปิดตัวด้วย Android 8.0 หรือใหม่กว่าจะต้องรองรับ Binderized HAL เท่านั้น

  • ผ่าน HAL HAL แบบธรรมดาหรือ Legacy ที่ห่อหุ้มด้วย HIDL HAL เหล่านี้ห่อหุ้ม HAL ที่มีอยู่และสามารถให้บริการ HAL ในโหมดสารประสานและกระบวนการเดียวกัน (ส่งผ่าน) อุปกรณ์ที่อัปเกรดเป็น Android 8.0 สามารถใช้ HAL แบบพาสทรูได้

ข้อกำหนดโหมด HAL

อุปกรณ์ ทะลุผ่าน ผูกมัด
เปิดตัวด้วย Android 8.0 HAL ที่ระบุใน Passthrough HAL จะต้องเป็น passthrough HAL อื่นๆ ทั้งหมดถูกรวมเข้าด้วยกัน (รวมถึง HAL ที่เป็นส่วนขยายของผู้ขาย)
อัปเกรดเป็น Android 8.0 HAL ที่ระบุใน Passthrough HAL จะต้องเป็น passthrough HALs ที่ระบุไว้ใน Binderized HAL จะต้องถูกผูกมัด
HAL อื่นๆ ทั้งหมดที่มีให้โดยอิมเมจของผู้ขายสามารถอยู่ในโหมดพาสทรูหรือโหมดไบเดอร์ไดซ์ ในอุปกรณ์ที่รองรับเสียงแหลมอย่างสมบูรณ์ สิ่งเหล่านี้ทั้งหมดจะต้องได้รับการผูกมัด

Binderized HAL

Android กำหนดให้ใช้ HALS ต่อไปนี้เพื่อผูกมัดบนอุปกรณ์ Android ทั้งหมด ไม่ว่าจะเป็นอุปกรณ์เปิดตัวหรืออุปกรณ์อัปเกรด:

  • android.hardware.biometrics.fingerprint@2.1 แทนที่ `fingerprintd ซึ่งไม่มีใน Android 8.0 แล้ว
  • android.hardware.configstore@1.0 ใหม่ใน Android 8.0
  • android.hardware.dumpstate@1.0 อินเทอร์เฟซดั้งเดิมที่จัดทำโดย HAL นี้ไม่สามารถชิมและเปลี่ยนแปลงได้ ด้วยเหตุนี้ ต้องปรับใช้ dumpstate_board อีกครั้งบนอุปกรณ์ที่กำหนด (นี่คือ HAL ที่เป็นทางเลือก)
  • android.hardware.graphics.allocator@2.0 จำเป็นต้องมีการผูกมัดใน Android 8.0 ดังนั้นตัวอธิบายไฟล์จึงไม่จำเป็นต้องแชร์ระหว่างกระบวนการที่เชื่อถือได้และไม่น่าเชื่อถือ
  • android.hardware.radio@1.0 . แทนที่ส่วนต่อประสานที่จัดทำโดย rild ซึ่งอยู่ในกระบวนการของมันเอง
  • android.hardware.usb@1.0 . ใหม่ใน Android 8.0
  • android.hardware.wifi@1.0 . ใหม่ใน Android 8.0 แทนที่ไลบรารี Wi-Fi HAL เดิมที่โหลดลงใน system_server
  • android.hardware.wifi.supplicant@1.0 อินเทอร์เฟซ HIDL ผ่านกระบวนการ wpa_supplicant ที่มีอยู่

ผ่าน HAL

Android กำหนดให้ HAL ต่อไปนี้อยู่ในโหมดส่งผ่านบนอุปกรณ์ Android ทั้งหมด ไม่ว่าจะเป็นอุปกรณ์เปิดตัวหรืออุปกรณ์อัปเกรด:

  • android.hardware.graphics.mapper@1.0 แม็พหน่วยความจำเข้ากับกระบวนการที่มันอาศัยอยู่
  • android.hardware.renderscript@1.0 ผ่านรายการในกระบวนการเดียวกัน (เทียบเท่ากับ openGL )

HAL ทั้งหมดที่ไม่ได้อยู่ในรายการด้านบนจะต้องเข้าเล่มสำหรับอุปกรณ์เปิดใช้

HAL กระบวนการเดียวกัน

Same-Process HAL (SP-HAL) จะเปิดขึ้นเสมอในกระบวนการเดียวกันที่ใช้ ซึ่งรวมถึง HAL ทั้งหมดที่ไม่ได้แสดงไว้ใน HIDL ตลอดจนบางส่วนที่ไม่ได้รับการผูกมัด การเป็นสมาชิกในชุด SP-HAL นั้นควบคุมโดย Google เท่านั้น โดยไม่มีข้อยกเว้น

SP-HAL รวมถึงสิ่งต่อไปนี้:

  • openGL
  • Vulkan
  • android.hidl.memory@1.0 (ให้บริการโดยระบบ Android ส่งผ่านเสมอ)
  • android.hardware.graphics.mapper@1.0</code>
  • android.hardware.renderscript@1.0