हार्डवेयर एब्स्ट्रक्शन लेयर (एचएएल) अवलोकन

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

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

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

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

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

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

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

  • android.hardware.biometrics.fingerprint@2.1fingerprintd को प्रतिस्थापित करता है जो अब Android 8.0 में नहीं है।
  • android.hardware.configstore@1.0 । Android 8.0 में नया।
  • android.hardware.dumpstate@1.0 । इस एचएएल द्वारा प्रदान किए गए मूल इंटरफ़ेस को शिम नहीं किया जा सका और इसे बदल दिया गया। इस वजह से, किसी दिए गए डिवाइस पर dumpstate_board को फिर से लागू किया जाना चाहिए (यह एक वैकल्पिक एचएएल है)।
  • android.hardware.graphics.allocator@2.0 । Android 8.0 में बाइंडराइज़ करने की आवश्यकता है, इसलिए फ़ाइल डिस्क्रिप्टर को विश्वसनीय और अविश्वसनीय प्रक्रियाओं के बीच साझा करने की आवश्यकता नहीं है।
  • android.hardware.radio@1.0rild द्वारा प्रदान किए गए इंटरफ़ेस को प्रतिस्थापित करता है जो अपनी प्रक्रिया में रहता है।
  • android.hardware.usb@1.0 । Android 8.0 में नया।
  • android.hardware.wifi@1.0 । Android 8.0 में नया, पुरानी Wi-Fi HAL लाइब्रेरी को प्रतिस्थापित करता है जिसे system_server में लोड किया गया था।
  • android.hardware.wifi.supplicant@1.0 । मौजूदा wpa_supplicant प्रक्रिया पर एक HIDL इंटरफ़ेस।

नोट : Android निम्न HIDL इंटरफ़ेस प्रदान करता है जो हमेशा बाइंडराइज़्ड मोड में रहेगा: android.frameworks.* , android.system.* , और android.hidl.* (नीचे बताए अनुसार android.hidl.memory@1.0 को छोड़कर)।

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

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

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

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

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

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

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

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

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

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

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