हार्डवेयर ऐब्स्ट्रैक्शन लेयर (एचएएल), एक तरह की ऐब्स्ट्रैक्शन लेयर है. इसमें हार्डवेयर वेंडर के लिए, स्टैंडर्ड इंटरफ़ेस होता है. एचएएल की मदद से, हार्डवेयर वेंडर, डिवाइस के हिसाब से बनी सुविधाओं को लागू कर सकते हैं. ऐसा करने पर, हार्डवेयर के लेयर में मौजूद कोड पर कोई असर नहीं पड़ता और न ही उसमें बदलाव होता है.
ज़रूरी शर्तें
दस्तावेज़ के इस सेक्शन में इस्तेमाल हुए शब्दों की परिभाषाएं यहां दी गई हैं:
- Android इंटरफ़ेस डेफ़िनिशन लैंग्वेज (AIDL)
- Java जैसी भाषा, जिसका इस्तेमाल इंटरफ़ेस को इस तरह से तय करने के लिए किया जाता है कि वह इस्तेमाल की जा रही प्रोग्रामिंग भाषा से अलग हो. एआईडीएल की मदद से, एचएएल क्लाइंट और एचएएल सेवाओं के बीच कम्यूनिकेशन किया जा सकता है.
- बाइंडर वाला एचएएल
- ऐसा एचएएल जो बाइंडर इंटर-प्रोसेस कम्यूनिकेशन (आईपीसी) कॉल का इस्तेमाल करके अन्य प्रोसेस से संपर्क करता है. बाइंडर वाले एचएएल, उनका इस्तेमाल करने वाले क्लाइंट से अलग प्रोसेस में चलते हैं. बाइंडर्ड एचएएल को सर्विस मैनेजर के साथ रजिस्टर किया जाता है, ताकि क्लाइंट इन सेवाओं का इस्तेमाल कर सकें. Android 8 और उसके बाद के वर्शन के लिए लिखे गए एचएएल, बाइंडर में बदले जाते हैं.
- HAL क्लाइंट
- HAL सेवा को ऐक्सेस करने वाली प्रोसेस.
- HAL इंटरफ़ेस
- यह एक सामान्य इंटरफ़ेस है, जिसका इस्तेमाल HAL क्लाइंट और सेवा, दोनों के बीच कम्यूनिकेट करने के लिए करते हैं.
- एचएएल की सेवा
हार्डवेयर के हिसाब से कोड, जैसे कि आपके डिवाइस के कैमरे पर ले जाने वाला कोड. आपको वेंडर पार्टीशन में टारगेट की गई रिलीज़ के लिए, काम करने वाले मैट्रिक्स में बताए गए सभी ज़रूरी एचएएल लागू करने होंगे. कंपैटिबिलिटी मैट्रिक के बारे में ज़्यादा जानने के लिए, कंपैटिबिलिटी मैट्रिक देखें.
अपने हार्डवेयर की खास सुविधाओं के साथ काम करने के लिए, नया एचएएल इंटरफ़ेस बनाया जा सकता है या एचएएल के इंटरफ़ेस को बड़ा किया जा सकता है.
- हार्डवेयर इंटरफ़ेस डेफ़िनिशन लैंग्वेज (एचआईडीएल)
इंटरफ़ेस को इस तरह से तय करने के लिए इस्तेमाल की जाने वाली भाषा, जो इस्तेमाल की जा रही प्रोग्रामिंग भाषा से अलग हो. HIDL, एचएएल क्लाइंट और एचएएल सेवाओं के बीच कम्यूनिकेशन की सुविधा देता है.
- एक ही प्रोसेस (एसपी) एचएएल
रैप किए गए एचएएल का सीमित सेट. सेट में सदस्यता को Google कंट्रोल करता है. एसपी एचएएल में ये शामिल हैं:
- स्टेबल C मैपर 5 एचएएल
- OpenGL
- Vulkan
- android.hidl.memory@1.0 (Android सिस्टम से मिला, हमेशा रैप किया जाता है)
- android.hardware.renderscript@1.0
- रैप किया गया एचएएल
Android 8 से पहले बनाई गई HAL सेवा, जिसे Android 8 और उसके बाद के वर्शन के साथ काम करने के लिए, AIDL या HIDL रैपर में रैप किया गया है.
आगे क्या करना है?
- एचएएल सेवा लागू करने का तरीका जानने के लिए, एचएएल के लिए एआईडीएल लेख पढ़ें.
- मौजूदा एचएएल बनाने या उसे बड़ा करने का तरीका जानने के लिए, अटैच किए गए एक्सटेंडेड इंटरफ़ेस देखें.