لایه انتزاعی سختافزار (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 قرار گرفته است تا با اندروید ۸ و بالاتر کار کند.
بعدش چی؟
- برای یادگیری نحوه پیادهسازی یک سرویس HAL، به AIDL برای HALها مراجعه کنید.
- برای یادگیری نحوه ایجاد یا گسترش HAL موجود، به رابطهای توسعهیافته پیوستشده مراجعه کنید.