Google 致力于为黑人社区推动种族平等。查看具体举措
หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

ประเภท HAL

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

  • HAL ที่มีการผูกมัด HAL แสดงในภาษานิยามอินเตอร์เฟส HAL (HIDL) หรือภาษานิยามอินเทอร์เฟซ Android (AIDL) HAL เหล่านี้จะแทนที่ HAL ทั้งแบบเดิมและแบบเดิมที่ใช้ใน Android เวอร์ชันก่อนหน้า ใน Binderized HAL เฟรมเวิร์กของ Android และ HAL จะสื่อสารกันโดยใช้การเรียกใช้ Binder inter-process Communication (IPC) อุปกรณ์ทั้งหมดที่เปิดตัวด้วย Android 8.0 ขึ้นไปต้องรองรับ HAL ที่มีการผูกมัดเท่านั้น
  • ผ่าน HALs HAL แบบดั้งเดิม หรือ แบบดั้งเดิมที่ ห่อด้วย HIDL HAL เหล่านี้จะรวม HAL ที่มีอยู่และสามารถให้บริการ HAL ในโหมด binderized และ same-process (passthrough) อุปกรณ์ที่อัปเกรดเป็น Android 8.0 สามารถใช้ passthrough HAL ได้

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

อุปกรณ์ ทะลุผ่าน Binderized
เปิดตัวด้วย Android 8.0 HAL ที่อยู่ใน Passthrough HALs จะต้องส่งผ่าน HAL อื่น ๆ ทั้งหมดได้รับการผูกมัด (รวมถึง HAL ที่เป็นส่วนขยายของผู้ให้บริการ)
อัปเกรดเป็น Android 8.0 HAL ที่อยู่ใน Passthrough HALs จะต้องส่งผ่าน HAL ที่ระบุไว้ใน Binderized HALs จะต้องมีการผูกมัด
HAL อื่น ๆ ทั้งหมดที่มีให้โดยอิมเมจผู้จำหน่ายสามารถอยู่ในโหมด passthrough หรือ 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 ต้องใช้งาน 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 ที่มีอยู่

หมายเหตุ : Android มีอินเทอร์เฟซ HIDL ต่อไปนี้ซึ่งจะอยู่ในโหมด binderized เสมอ: android.frameworks.* , android.system.* และ android.hidl.* (ยกเว้น android.hidl.memory@1.0 ตามที่อธิบายไว้ด้านล่าง)

ผ่าน HAL

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

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

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

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

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

SP-HAL มีดังต่อไปนี้:

  • openGL
  • Vulkan
  • android.hidl.memory@1.0 (จัดทำโดยระบบ Android ให้ส่งผ่านเสมอ)
  • android.hardware.graphics.mapper@1.0
  • android.hardware.renderscript@1.0

HAL แบบเดิมและแบบเดิม

HAL ทั่วไป (เลิกใช้แล้วใน Android 8.0) เป็นอินเทอร์เฟซที่สอดคล้องกับไบนารีอินเทอร์เฟซ (ABI) ของแอปพลิเคชันที่ระบุชื่อและเวอร์ชันเฉพาะ อินเทอร์เฟซระบบ Android จำนวนมาก ( กล้อง เสียง เซ็นเซอร์ ฯลฯ ) อยู่ในรูปแบบของ HAL ทั่วไปซึ่งกำหนดไว้ภายใต้ ฮาร์ดแวร์ / libhardware / include / hardware

Legacy HAL (เลิกใช้แล้วใน Android 8.0) เป็นอินเทอร์เฟซที่มาก่อน HAL ทั่วไป ระบบย่อยที่สำคัญบางระบบ (Wi-Fi, Radio Interface Layer และ Bluetooth) คือ HAL แบบเดิม แม้ว่าจะไม่มีวิธีที่เหมือนกันหรือเป็นมาตรฐานในการอธิบาย HAL แบบเดิม แต่สิ่งใด ๆ ที่มีมาก่อน Android 8.0 ที่ไม่ใช่ HAL แบบเดิมก็คือ HAL แบบเดิม บางส่วนของ HAL ดั้งเดิมบางส่วนมีอยู่ใน libhardware_legacy ในขณะที่ส่วนอื่น ๆ จะสลับไปทั่ว codebase