لایه انتزاعی سخت افزاری (HAL) نوعی لایه انتزاعی با یک رابط استاندارد برای پیاده سازی فروشندگان سخت افزار است. یک HAL به فروشندگان سخت افزار اجازه می دهد تا ویژگی های سطح پایین تر و خاص دستگاه را بدون تأثیر یا تغییر کد در لایه های سطح بالاتر پیاده سازی کنند.
شرایط مورد نیاز
در زیر فهرستی از تعاریف اصطلاحات استفاده شده در این بخش از مستندات آمده است:
- زبان تعریف رابط اندروید (AIDL)
- یک زبان جاوا مانند که برای تعریف رابط ها به روشی مستقل از زبان برنامه نویسی مورد استفاده استفاده می شود. AIDL امکان ارتباط بین مشتریان HAL و خدمات HAL را فراهم می کند.
- HAL بایندر شده
- یک HAL که با استفاده از تماسهای ارتباط بین فرآیندی (IPC) با سایر فرآیندها ارتباط برقرار میکند. HAL های Binderized در یک فرآیند مجزا از کلاینتی که از آنها استفاده می کند اجرا می شوند. HAL های Binderized با یک مدیر خدمات ثبت می شوند تا مشتریان بتوانند به قابلیت های آنها دسترسی داشته باشند. HAL هایی که برای اندروید 8 و بالاتر نوشته شده اند، صحافی شده اند.
- مشتری HAL
- فرآیندی که به سرویس HAL دسترسی پیدا می کند.
- رابط HAL
- رابط مشترکی که توسط سرویس گیرنده و سرویس گیرنده HAL برای برقراری ارتباط استفاده می شود.
- سرویس HAL
کد مخصوص سخت افزار، مانند کدی که به دوربین دستگاه خاص شما منتقل می شود. شما باید تمام HAL های مورد نیاز فهرست شده در ماتریس سازگاری را برای نسخه ای که در پارتیشن فروشنده خود هدف قرار می دهید، پیاده سازی کنید. برای اطلاعات بیشتر در مورد ماتریس های سازگاری، به ماتریس های سازگاری مراجعه کنید.
همچنین می توانید یک رابط HAL جدید ایجاد کنید یا رابط یک HAL را گسترش دهید تا از قابلیت های منحصر به فرد سخت افزار خود پشتیبانی کنید.
- زبان تعریف رابط سخت افزاری (HIDL)
زبانی که برای تعریف واسط ها به روشی مستقل از زبان برنامه نویسی مورد استفاده استفاده می شود. HIDL ارتباط بین سرویس گیرندگان HAL و خدمات HAL را امکان پذیر می کند.
- همان فرآیند (SP) HAL
مجموعه ای محدود از HAL های پیچیده شده. عضویت در مجموعه توسط Google کنترل می شود. SP HAL ها عبارتند از:
- نگاشت ثابت C 5 HAL
- OpenGL
- ولکان
- android.hidl.memory@1.0 (ارائه شده توسط سیستم اندروید، همیشه بسته بندی شده)
- android.hardware.renderscript@1.0
- HAL پیچیده شده
یک سرویس HAL که قبل از Android 8 ایجاد شده است، اما برای کار با Android 8 و بالاتر در یک بسته بندی AIDL یا HIDL پیچیده شده است.
بعدش چی؟
- برای یادگیری نحوه اجرای سرویس HAL، به AIDL برای HAL مراجعه کنید.
- برای یادگیری نحوه ایجاد یا گسترش یک HAL موجود، به رابط های توسعه یافته پیوست شده مراجعه کنید.