نمای کلی لایه انتزاعی سخت افزار

در اندروید 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 به HALهای زیر نیاز دارد تا در همه دستگاه‌های 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