أنواع HAL

في Android 8.0 والإصدارات الأحدث ، تتم إعادة كتابة الطبقات ذات المستوى الأدنى لتبني بنية جديدة أكثر نمطية. يجب أن تدعم الأجهزة التي تعمل بنظام Android 8.0 والإصدارات الأحدث HALs المكتوبة بلغة HIDL ، مع بعض الاستثناءات المدرجة أدناه. يمكن ربط HALs أو العبور. في Android 11 ، يتم أيضًا دعم HALs المكتوبة في AIDL. يتم ربط جميع AIDL HALs.

  • HALs ملزم. يتم التعبير عن HALs بلغة تعريف واجهة HAL (HIDL) أو لغة تعريف واجهة Android (AIDL). تحل HALs هذه محل كلاً من HALs التقليدية والقديمة المستخدمة في الإصدارات السابقة من Android. في Binderized HAL ، يتواصل إطار عمل Android و HALs مع بعضهما البعض باستخدام مكالمات اتصال بين العمليات (IPC). يجب أن تدعم جميع الأجهزة التي يتم تشغيلها بنظام Android 8.0 أو إصدار أحدث HALs المرتبطة فقط.
  • عبور HALs. A HIDL الملفوفة التقليدية أو HAL إرث . تقوم HALs هذه بتغليف HALs الموجودة ويمكن أن تخدم HAL في أوضاع Binderized ونفس العملية (العبور). يمكن للأجهزة التي تقوم بالترقية إلى Android 8.0 استخدام HALs العبور.

متطلبات وضع HAL

جهاز يمر من خلال موثق
ابدأ باستخدام Android 8.0 طبقة تجريد المدرجة في طبقة تجريد العبور يجب أن يكون العبور. يتم ربط كافة HALs الأخرى (بما في ذلك HALs التي تعد امتدادات البائعين).
قم بالترقية إلى Android 8.0 طبقة تجريد المدرجة في طبقة تجريد العبور يجب أن يكون العبور. طبقة تجريد المدرجة في طبقة تجريد Binderized يجب binderized.
يمكن أن تكون جميع HALs الأخرى التي توفرها صورة البائع في وضع العبور أو وضع الربط. في جهاز متوافق تمامًا مع Treble ، يجب ربط كل هذه الأشياء.

HALs ملزم

يتطلب Android أن يتم ربط HALS التالية على جميع أجهزة Android بغض النظر عما إذا كانت أجهزة إطلاق أو أجهزة ترقية:

  • android.hardware.biometrics.fingerprint@2.1 . يستبدل fingerprintd الذي لم يعد في الروبوت 8.0.
  • android.hardware.configstore@1.0 . الجديد في Android 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 . الجديد في Android 8.0.
  • android.hardware.wifi@1.0 . الجديد في أندرويد 8.0، يحل محل تراث مكتبة واي فاي HAL التي تم تحميلها إلى system_server .
  • android.hardware.wifi.supplicant@1.0 . واجهة HIDL على القائمة wpa_supplicant العملية.

ملاحظة: يوفر الروبوت واجهات HIDL التالية التي سوف يكون دائما في وضع binderized: android.frameworks.* ، android.system.* ، و android.hidl.* (باستثناء android.hidl.memory@1.0 كما هو موضح أدناه).

عبور HALs

يتطلب Android أن تكون HALs التالية في وضع العبور على جميع أجهزة Android بغض النظر عما إذا كانت أجهزة تشغيل أو أجهزة ترقية:

  • android.hardware.graphics.mapper@1.0 . ذاكرة الخرائط في العملية التي تعيش فيها.
  • android.hardware.renderscript@1.0 . يمر البنود في نفس العملية (أي ما يعادل openGL ).

يجب ربط جميع HALs غير المدرجة أعلاه لأجهزة التشغيل.

HALs بنفس العملية

يتم فتح HALs للعملية نفسها (SP-HALs) دائمًا في نفس العملية التي يتم استخدامها فيها. وهي تشمل كل طبقة تجريد ليس أعرب في HIDL وكذلك بعض التي لا binderized. تتحكم Google فقط في العضوية في مجموعة SP-HAL ، بدون استثناءات.

تتضمن SP-HALs ما يلي:

  • openGL
  • Vulkan
  • android.hidl.memory@1.0 (التي قدمها نظام أندرويد، ودائما العبور)
  • android.hardware.graphics.mapper@1.0 .
  • android.hardware.renderscript@1.0

HALs التقليدية والموروثة

تعد HALs التقليدية (التي تم إهمالها في Android 8.0) واجهات تتوافق مع واجهة تطبيق ثنائية (ABI) محددة وذات إصدار محدد. الجزء الأكبر من واجهات نظام أندرويد ( الكاميرا ، الصوت ، أجهزة الاستشعار ، وغيرها) في شكل طبقة تجريد التقليدية، والتي تعرف تحت الأجهزة / libhardware / وتشمل / الأجهزة .

تعد HALs القديمة (التي تم إهمالها أيضًا في Android 8.0) واجهات تسبق HALs التقليدية. بعض الأنظمة الفرعية المهمة (Wi-Fi وطبقة واجهة الراديو والبلوتوث) هي HALs قديمة. على الرغم من عدم وجود طريقة موحدة أو موحدة لوصف HAL ​​القديم ، فإن أي شيء يسبق Android 8.0 ليس HAL تقليديًا هو عبارة عن HAL قديم. وترد أجزاء من بعض طبقة تجريد إرث في libhardware_legacy ، في حين تتناثر أجزاء أخرى في جميع أنحاء مصدر برنامج.