در اندروید 8.0 و بالاتر، لایههای سطح پایینتر دوباره نوشته میشوند تا معماری جدید و ماژولارتری اتخاذ کنند. دستگاههای دارای Android نسخه 8.0 و بالاتر باید از HALهای نوشته شده در HIDL پشتیبانی کنند، به استثنای چند مورد که در زیر ذکر شده است. این HAL ها را می توان باندریزه یا عبوری کرد. در اندروید 11، HAL های نوشته شده با AIDL نیز پشتیبانی می شوند. تمام AIDL HAL ها باندریزه می شوند.
HAL های بایندر شده HAL ها به زبان تعریف رابط HAL (HIDL) یا زبان تعریف رابط اندروید (AIDL) بیان می شوند. این HAL ها جایگزین HAL های معمولی و قدیمی می شوند که در نسخه های قبلی اندروید استفاده می شدند. در یک HAL Binderized، چارچوب Android و HAL ها با استفاده از فراخوانی ارتباط بین فرآیندی (IPC) با یکدیگر ارتباط برقرار می کنند. همه دستگاههایی که با Android نسخه ۸.۰ یا جدیدتر راهاندازی میشوند باید فقط از HALهای بایندر شده پشتیبانی کنند.
HAL های عبوری HALهای معمولی یا قدیمی که با HIDL پیچیده شدهاند این HALها HALهای موجود را میپیچانند و میتوانند HAL را در حالتهای بایندر شده و همان فرآیند (عبور) ارائه دهند. دستگاههایی که به Android 8.0 ارتقا مییابند میتوانند از HALهای عبوری استفاده کنند.
الزامات حالت HAL
دستگاه | عبور | صحافی شده |
---|---|---|
راه اندازی با اندروید 8.0 | HAL های فهرست شده در HAL های عبور باید گذر باشد. | همه HAL های دیگر بایندر شده هستند (از جمله HAL هایی که پسوند فروشنده هستند). |
به اندروید 8.0 ارتقا دهید | HAL های فهرست شده در HAL های عبور باید گذر باشد. | HAL های فهرست شده در HAL های Binderized باید بایندر شوند. |
تمام HAL های دیگر ارائه شده توسط تصویر فروشنده می توانند در حالت عبور یا صحافی باشند. در یک دستگاه کاملاً مطابق با Treble، همه اینها باید صحافی شوند. |
HAL های بایندر شده
Android به HALS زیر نیاز دارد تا در همه دستگاههای Android صرفنظر از اینکه دستگاههای راهاندازی هستند یا دستگاههای ارتقادهنده، صحافی شوند:
-
android.hardware.biometrics.fingerprint@2.1
. جایگزینfingerprintd
می شود که دیگر در اندروید 8.0 نیست. -
android.hardware.configstore@1.0
. جدید در اندروید 8.0. -
android.hardware.dumpstate@1.0
. رابط اصلی ارائه شده توسط این HAL قابل تغییر نیست و تغییر کرده است. به همین دلیل،dumpstate_board
باید مجدداً در یک دستگاه معین پیادهسازی شود (این یک HAL اختیاری است). -
android.hardware.graphics.allocator@2.0
. لازم است در Android 8.0 صحافی شود، بنابراین لازم نیست توصیفگرهای فایل بین فرآیندهای قابل اعتماد و غیرقابل اعتماد به اشتراک گذاشته شوند. -
android.hardware.radio@1.0
. جایگزین رابط ارائه شده توسطrild
می شود که در فرآیند خود زندگی می کند. -
android.hardware.usb@1.0
. جدید در اندروید 8.0. -
android.hardware.wifi@1.0
. جدید در Android 8.0، جایگزین کتابخانه قدیمی Wi-Fi HAL می شود که درsystem_server
بارگذاری شده بود. -
android.hardware.wifi.supplicant@1.0
. یک رابط HIDL روی فرآیندwpa_supplicant
موجود.
HAL های عبوری
Android به HALهای زیر نیاز دارد تا در همه دستگاههای 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.hardware.graphics.mapper@1.0
android.hardware.renderscript@1.0