از 27 مارس 2025، توصیه می کنیم از android-latest-release به جای aosp-main برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
لایه انتزاعی سخت افزاری (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 مراجعه کنید.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Hardware abstraction layer (HAL) overview\n\nA *hardware abstraction layer (HAL)* is type of abstraction layer with a\nstandard interface for hardware vendors to implement. A HAL allows hardware\nvendors to implement lower-level, device-specific features without affecting or\nmodifying code in higher-level layers.\n| **Note:** HALs existed before Android 8. However, Android 8 ensured each HAL had a standard interface. For an explanation of HAL architecture before Android 8, refer to [Legacy HALs](/docs/core/architecture/hal/archive).\n\nRequired terms\n--------------\n\nFollowing is a list of definitions for terms used in this section of\ndocumentation:\n\n*Android Interface Definition Language (AIDL)*\n: A Java-like language used to define interfaces in a way that is independent of\n the programming language being used. AIDL allows communication between\n HAL clients and HAL services.\n\n*Binderized HAL*\n: A HAL that communicates with other processes\n using\n [binder inter-process communication (IPC)](/docs/core/architecture/hidl/binder-ipc)\n calls. Binderized HALs run in a separate process from the client that uses them.\n Binderized HALs are registered with a service manager so that clients can\n access their capabilities. HALs written for Android 8 and higher are\n binderized.\n\n*HAL client*\n: The process that accesses the HAL service.\n\n*HAL interface*\n: The common interface used by both the HAL client and service to communicate.\n\n*HAL service*\n\n: The hardware-specific code, such as the code that talks to your specific\n device's camera. You must implement all required HALs listed in the\n compatibility matrix for the release you target in your vendor partition.\n For further information on compatibility matrixes, see\n [Compatibility matrixes](/docs/core/architecture/vintf/comp-matrices).\n\n You can also create a new HAL interface, or extend the interface of a HAL, to\n support your hardware's unique capabilities.\n\n*Hardware Interface Definition Language (HIDL)*\n\n: A language used to define interfaces in a way that is independent of the\n programming language being used. HIDL enables communication between\n HAL clients and HAL services.\n\n | **Note:** As of Android 13, HIDL has been deprecated. Instead of HIDL, you should use Android Interface Definition Language (AIDL) for HALs. HALs previously written using [HIDL](/docs/core/architecture/hidl) are supported.\n\n*Same Process (SP) HAL*\n\n: A restricted set of wrapped HALs. Membership in the set is controlled by\n Google. SP HALs include:\n\n - Stable C mapper 5 HAL\n - OpenGL\n - Vulkan\n - android.hidl.memory@1.0 (provided by the Android system, always wrapped)\n - android.hardware.renderscript@1.0\n\n | **Note:** Some HAL implementations wrap legacy interfaces, such as those in `libhardware`, in an AIDL or HIDL wrapper.\n\n*Wrapped HAL*\n\n: A HAL service that was created before Android 8, but has been wrapped in an\n AIDL or HIDL wrapper to work with Android 8 and higher.\n\nWhat's next?\n------------\n\n- To learn how to implement a HAL service, refer to [AIDL for HALs](/docs/core/architecture/aidl/aidl-hals).\n- To learn how to create or extend an existing HAL, refer to [Attached extended interfaces](/docs/core/architecture/aidl/aidl-hals#attached-extensions)."]]