एआईडीएल के बारे में खास जानकारी

Android इंटरफ़ेस डेफ़िनिशन लैंग्वेज (एआईडीएल) एक ऐसा टूल है जिसकी मदद से आईपीसी की मदद से बनाया गया है. दिया गया इंटरफ़ेस (.aidl में बताया गया है) फ़ाइल) है, तो कई बिल्ड सिस्टम C++ या Java बनाने के लिए aidl बाइनरी का इस्तेमाल करते हैं बाइंडिंग, ताकि इस इंटरफ़ेस का इस्तेमाल सभी प्रोसेस में किया जा सके. भले ही, रनटाइम या बिटनेस दिखा देता है.

एआईडीएल का इस्तेमाल Android की किसी भी प्रोसेस के बीच में किया जा सकता है: जैसे, प्लैटफ़ॉर्म कॉम्पोनेंट के बीच या ऐप्लिकेशन के बीच में दिखता है. हालांकि, इसका इस्तेमाल ऐप्लिकेशन के लिए एपीआई के तौर पर कभी नहीं किया जाता. एआईडीएल का इस्तेमाल किया जा सकता है का इस्तेमाल करें. उदाहरण के लिए, इसमें कभी भी सीधे AIDL API शामिल नहीं किए जाते. एआईडीएल इस्तेमाल करने के तरीके से जुड़े दस्तावेज़ के लिए की मदद से, सीधे अपने काम करने के लिए Android डेवलपर दस्तावेज़ में दिया गया है. जब एआईडीएल का इस्तेमाल प्लैटफ़ॉर्म कॉम्पोनेंट के बीच में अलग-अलग अपडेट किया जाता है, जैसे APEXes के तौर पर (Android 10 और HAL के तौर पर Android 11), वर्शनिंग सिस्टम है. इसे इस नाम से जाना जाता है स्टेबल एआईडीएल का इस्तेमाल करना ज़रूरी है.

उदाहरण

यहां AIDL इंटरफ़ेस का उदाहरण दिया गया है:

    package my.package;

    import my.package.Baz; // defined elsewhere

    interface IFoo {
        void doFoo(Baz baz);
    }

सर्वर प्रोसेस, इंटरफ़ेस को रजिस्टर करती है और उसे कॉल करने के लिए कहती है. इसके अलावा, क्लाइंट को कॉल किया जाता है प्रोसेस के ज़रिए उन इंटरफ़ेस पर कॉल किए जाते हैं. कई मामलों में, एक प्रोसेस दोनों क्लाइंट और एक सर्वर के रूप में भी जाना जाता है, क्योंकि हो सकता है कि यह एक से ज़्यादा इंटरफ़ेस का संदर्भ दे रहा हो. ज़्यादा के लिए एआईडीएल भाषा के बारे में जानकारी, यहां देखें एआईडीएल भाषा. ज़्यादा जानकारी के लिए इन इंटरफ़ेस का इस्तेमाल करने के लिए उपलब्ध अलग-अलग रनटाइम के बारे में जानने के लिए, एआईडीएल बैकएंड. इस तरह के घोषणाएं, किसी खास भाषा में किए जाने वाले क्लास की जानकारी की तरह होती हैं, लेकिन काम करती हैं.

यह कैसे काम करता है

एआईडीएल कॉल करने के लिए, बाइंडर कर्नेल ड्राइवर का इस्तेमाल करता है. कॉल करने पर, तरीका आइडेंटिफ़ायर और सभी ऑब्जेक्ट को बफ़र में पैक किया जाता है और कॉपी किया जाता है एक रिमोट प्रोसेस, जहां बाइंडर थ्रेड, डेटा पढ़ने का इंतज़ार करता है. एक बार बाइंडर थ्रेड को किसी ट्रांज़ैक्शन के लिए डेटा मिलता है और थ्रेड नेटिव स्टब ऑब्जेक्ट को खोजता है में ट्रांसफ़र करता है. यह क्लास डेटा को अनपैक करती है और लोकल इंटरफ़ेस ऑब्जेक्ट होगा. यह लोकल इंटरफ़ेस ऑब्जेक्ट, सर्वर प्रोसेस है बनाता और रजिस्टर करता है. जब कॉल एक ही प्रोसेस में किए जाते हैं बैकएंड में, कोई प्रॉक्सी ऑब्जेक्ट मौजूद नहीं है. इसलिए, बिना किसी रुकावट के कॉल डायरेक्ट होते हैं पैकिंग या अनपैक करना.

डिवाइस पर सेवाओं से इंटरैक्ट करें

यहां दी गई सेवाओं के साथ इंटरैक्ट करने के लिए, Android में कुछ निर्देश दिए होते हैं डिवाइस. ऐसा करके देखें:

    adb shell dumpsys --help # listing and dumping services
    adb shell service --help # sending commands to services for testing