एचएएल प्रकार

एंड्रॉइड 8.0 और उच्चतर में, निचले स्तर की परतों को एक नया, अधिक मॉड्यूलर आर्किटेक्चर अपनाने के लिए फिर से लिखा जाता है। Android 8.0 और उच्चतर पर चलने वाले उपकरणों को नीचे सूचीबद्ध कुछ अपवादों के साथ, HIDL में लिखे गए HALs का समर्थन करना चाहिए। इन एचएएल को बाइंडराइज या पासथ्रू किया जा सकता है। Android 11 में AIDL में लिखे HALs भी सपोर्ट करते हैं। सभी एआईडीएल एचएएल बाइंडराइज्ड हैं।

  • बाइंडराइज्ड एचएएल। एचएएल इंटरफ़ेस परिभाषा भाषा (एचआईडीएल) या एंड्रॉइड इंटरफ़ेस परिभाषा भाषा (एआईडीएल) में व्यक्त एचएएल। ये एचएएल एंड्रॉइड के पुराने संस्करणों में उपयोग किए जाने वाले पारंपरिक और विरासती एचएएल दोनों की जगह लेते हैं। बाइंडराइज्ड एचएएल में, एंड्रॉइड फ्रेमवर्क और एचएएल बाइंडर इंटर-प्रोसेस कम्युनिकेशन (आईपीसी) कॉल का उपयोग करके एक दूसरे के साथ संवाद करते हैं। Android 8.0 या बाद के संस्करण के साथ लॉन्च होने वाले सभी उपकरणों को केवल बाइंडराइज़्ड HALs का समर्थन करना चाहिए।
  • पासथ्रू एचएएल। एक HIDL स्वरुप में पारंपरिक या विरासत एचएएल । ये एचएएल मौजूदा एचएएल को लपेटते हैं और एचएएल को बाइंडराइज्ड और समान-प्रोसेस (पासथ्रू) मोड में सेवा दे सकते हैं। Android 8.0 में अपग्रेड करने वाले डिवाइस पासथ्रू HALs का उपयोग कर सकते हैं।

एचएएल मोड आवश्यकताएँ

युक्ति निकासी बाइंडराइज़्ड
Android 8.0 . के साथ लॉन्च करें में सूचीबद्ध HALs पासथ्रू HALs पासथ्रू होना चाहिए। अन्य सभी एचएएल बाइंडराइज़्ड हैं (एचएएल सहित जो वेंडर एक्सटेंशन हैं)।
Android 8.0 . में अपग्रेड करें में सूचीबद्ध HALs पासथ्रू HALs पासथ्रू होना चाहिए। में सूचीबद्ध HALs Binderized HALs binderized किया जाना चाहिए।
विक्रेता छवि द्वारा प्रदान किए गए अन्य सभी एचएएल पासथ्रू या बाइंडराइज्ड मोड में हो सकते हैं। पूरी तरह से ट्रेबल-संगत डिवाइस में, इन सभी को बाइंडर किया जाना चाहिए।

बाइंडराइज़्ड एचएएल

एंड्रॉइड को सभी एंड्रॉइड डिवाइसों पर निम्नलिखित एचएएलएस को बाइंडर करने की आवश्यकता होती है, भले ही वे लॉन्च डिवाइस हों या अपग्रेड डिवाइस हों:

  • android.hardware.biometrics.fingerprint@2.1 । के स्थान पर fingerprintd जो अब एंड्रॉयड 8.0 में है।
  • android.hardware.configstore@1.0 । एंड्रॉइड 8.0 में नया।
  • android.hardware.dumpstate@1.0 । इस एचएएल द्वारा प्रदान किए गए मूल इंटरफ़ेस को चमकाया नहीं जा सकता था और इसे बदल दिया गया था। इस वजह से, dumpstate_board दिए गए उपकरण पर फिर से लागू किया जाना चाहिए (यह एक वैकल्पिक एचएएल है)।
  • 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 । एंड्रॉयड 8.0 में नई, विरासत वाई-फाई एचएएल पुस्तकालय है कि में लोड किया गया था की जगह system_server
  • android.hardware.wifi.supplicant@1.0 । मौजूदा पर एक HIDL इंटरफ़ेस wpa_supplicant प्रक्रिया।

नोट:: एंड्रॉयड निम्नलिखित HIDL इंटरफेस जो हमेशा binderized मोड में हो जाएगा प्रदान करता है android.frameworks.* , android.system.* , और android.hidl.* (के लिए छोड़कर android.hidl.memory@1.0 नीचे वर्णित के रूप में)।

पासथ्रू एचएएल

एंड्रॉइड को सभी एंड्रॉइड डिवाइसों पर निम्नलिखित एचएएल को पासथ्रू मोड में होने की आवश्यकता होती है, भले ही वे लॉन्च डिवाइस हों या अपग्रेड डिवाइस हों:

  • android.hardware.graphics.mapper@1.0 । मेमोरी को उस प्रक्रिया में मैप करता है जिसमें वह रहता है।
  • android.hardware.renderscript@1.0 । एक ही प्रक्रिया (के बराबर में आइटम पासेस openGL )।

ऊपर सूचीबद्ध नहीं किए गए सभी एचएएल को लॉन्च डिवाइस के लिए बाइंडर किया जाना चाहिए।

समान-प्रक्रिया एचएएल

समान-प्रक्रिया एचएएल (एसपी-एचएएल) हमेशा उसी प्रक्रिया में खुलते हैं जिसमें उनका उपयोग किया जाता है। वे HIDL में व्यक्त नहीं सभी HALs साथ ही कुछ है कि binderized नहीं कर रहे हैं शामिल हैं। SP-HAL सेट में सदस्यता बिना किसी अपवाद के केवल Google द्वारा नियंत्रित की जाती है।

एसपी-एचएएल में निम्नलिखित शामिल हैं:

  • openGL
  • Vulkan
  • android.hidl.memory@1.0 (एंड्रॉयड प्रणाली द्वारा प्रदान की, हमेशा पासथ्रू)
  • android.hardware.graphics.mapper@1.0
  • android.hardware.renderscript@1.0

पारंपरिक और विरासती एचएएल

पारंपरिक एचएएल (एंड्रॉइड 8.0 में बहिष्कृत) इंटरफेस हैं जो एक विशिष्ट नामित और संस्करण वाले एप्लिकेशन बाइनरी इंटरफेस (एबीआई) के अनुरूप हैं। एंड्रॉयड प्रणाली इंटरफेस (के थोक कैमरा , ऑडियो , सेंसर , आदि) पारंपरिक HALs, जिसके तहत परिभाषित कर रहे हैं के रूप में कर रहे हैं हार्डवेयर / libhardware / शामिल / हार्डवेयर

लीगेसी एचएएल (एंड्रॉइड 8.0 में भी बहिष्कृत) ऐसे इंटरफेस हैं जो पारंपरिक एचएएल से पहले के हैं। कुछ महत्वपूर्ण सबसिस्टम (वाई-फाई, रेडियो इंटरफेस लेयर और ब्लूटूथ) लीगेसी एचएएल हैं। हालांकि विरासती एचएएल का वर्णन करने के लिए कोई समान या मानकीकृत तरीका नहीं है, लेकिन एंड्रॉइड 8.0 से पहले की कोई भी चीज जो पारंपरिक एचएएल नहीं है, एक विरासत एचएएल है। कुछ विरासत HALs के कुछ हिस्सों में निहित हैं libhardware_legacy है, जबकि अन्य भागों codebase भर बीच-बीच में कर रहे हैं।