نمای کلی لایه انتزاعی سخت افزار (HAL).

لایه انتزاعی سخت‌افزار (HAL) نوعی لایه انتزاعی با رابط استاندارد برای پیاده‌سازی توسط فروشندگان سخت‌افزار است. HAL به فروشندگان سخت‌افزار اجازه می‌دهد تا ویژگی‌های سطح پایین‌تر و مختص دستگاه را بدون تأثیر یا تغییر کد در لایه‌های سطح بالاتر پیاده‌سازی کنند.

شرایط لازم

در زیر لیستی از تعاریف اصطلاحات مورد استفاده در این بخش از مستندات آمده است:

زبان تعریف رابط اندروید (AIDL)
زبانی شبیه به جاوا که برای تعریف رابط‌ها به روشی مستقل از زبان برنامه‌نویسی مورد استفاده استفاده می‌شود. AIDL امکان ارتباط بین کلاینت‌های HAL و سرویس‌های HAL را فراهم می‌کند.
HAL چسبانیده شده
HAL که با استفاده از فراخوانی‌های ارتباط بین فرآیندی (IPC) با سایر فرآیندها ارتباط برقرار می‌کند. HALهای Binderized در فرآیندی جداگانه از کلاینتی که از آنها استفاده می‌کند، اجرا می‌شوند. HALهای Binderized در یک مدیر سرویس ثبت می‌شوند تا کلاینت‌ها بتوانند به قابلیت‌های آنها دسترسی داشته باشند. HALهای نوشته شده برای اندروید ۸ و بالاتر Binderized هستند.
کلاینت HAL
فرآیندی که به سرویس HAL دسترسی پیدا می‌کند.
رابط HAL
رابط مشترکی که هم توسط کلاینت و هم توسط سرویس HAL برای برقراری ارتباط استفاده می‌شود.
خدمات HAL

کد مخصوص سخت‌افزار، مانند کدی که با دوربین دستگاه خاص شما ارتباط برقرار می‌کند. شما باید تمام HAL های مورد نیاز ذکر شده در ماتریس سازگاری را برای نسخه‌ای که در پارتیشن فروشنده خود هدف قرار می‌دهید، پیاده‌سازی کنید. برای اطلاعات بیشتر در مورد ماتریس‌های سازگاری، به ماتریس‌های سازگاری مراجعه کنید.

همچنین می‌توانید یک رابط HAL جدید ایجاد کنید یا رابط HAL را گسترش دهید تا از قابلیت‌های منحصر به فرد سخت‌افزار خود پشتیبانی کنید.

زبان تعریف رابط سخت‌افزاری (HIDL)

زبانی که برای تعریف رابط‌ها به روشی مستقل از زبان برنامه‌نویسی مورد استفاده استفاده می‌شود. HIDL امکان ارتباط بین کلاینت‌های HAL و سرویس‌های HAL را فراهم می‌کند.

همان فرآیند (SP) HAL

مجموعه‌ای محدود از HALهای بسته‌بندی‌شده. عضویت در این مجموعه توسط گوگل کنترل می‌شود. SP HALها شامل موارد زیر هستند:

  • نگاشتگر C ​​پایدار ۵ HAL
  • اوپن‌جی‌ال
  • ولکان
  • android.hidl.memory@1.0 (ارائه شده توسط سیستم اندروید، همیشه در بسته‌بندی)
  • android.hardware.renderscript@1.0
هال پیچیده شده

یک سرویس HAL که قبل از اندروید ۸ ایجاد شده است، اما در یک بسته‌بندی AIDL یا HIDL قرار گرفته است تا با اندروید ۸ و بالاتر کار کند.

بعدش چی؟