| Key concepts | Set up your development environment | Build an RE SDK | Consume the RE SDK | Testing, and building for distribution |
मुख्य सिद्धांत
इस सेक्शन में, एसडीके रनटाइम के आर्किटेक्चर, रनटाइम के साथ काम करने वाले एसडीके को इंस्टॉल करने के तरीके, बैकवर्ड कंपैटिबिलिटी, और मौजूदा एसडीके को एसडीके रनटाइम पर माइग्रेट करने के तरीके के बारे में बताया गया है.
शब्दावली
- रनटाइम के साथ काम करने वाला एसडीके (आरई एसडीके): यह एसडीके, एसडीके रनटाइम एनवायरमेंट में काम करने के लिए बनाया गया है. साथ ही, यह इंटर-प्रोसेस कम्यूनिकेशन (आईपीसी) के ज़रिए ऐप्लिकेशन से कम्यूनिकेट करता है.
- रनटाइम के साथ काम करने वाला एसडीके (आरए एसडीके): यह रनटाइम के साथ काम नहीं करता है. इसे ऐप्लिकेशन के साथ स्टैटिक तौर पर लिंक किया जाता है. इसमें आपके मौजूदा एसडीके का कोड और रनटाइम के साथ काम करने वाले एसडीके को कॉल करने के लिए नया कोड भी शामिल हो सकता है.
- इसे कभी-कभी स्टैटिक तौर पर लिंक किया गया या स्टैटिक एसडीके भी कहा जाता है.
- Shim: यह एक Jetpack लाइब्रेरी है. यह अलग-अलग प्रोसेस या इंटर-प्रोसेस कम्यूनिकेशन (आईपीसी) के बीच कम्यूनिकेशन को बेहतर बनाने में मदद करती है. साथ ही, ऐप्लिकेशन-एसडीके इंटरफ़ेस को एक जैसा बनाए रखती है.
एसडीके रनटाइम का आर्किटेक्चर
एसडीके रनटाइम, क्लाइंट-सर्वर मॉडल का इस्तेमाल करता है.
इन दोनों में मुख्य अंतर यह है कि "क्लाइंट" (ऐप्लिकेशन) और "सर्वर" (रनटाइम के साथ काम करने वाले SDK) एक ही डिवाइस पर काम करते हैं. साथ ही, यह कम्यूनिकेशन अलग-अलग प्रोसेस के बीच होता है.
इन चुनौतियों से निपटने में आपकी मदद करने के लिए, हमने ये Jetpack लाइब्रेरी और टूल बनाए हैं. इनकी मदद से, एसडीके रनटाइम में ऐप्लिकेशन-एसडीके इंटिग्रेशन को आसान बनाया जा सकता है:
- शिम लाइब्रेरी: रैपर लाइब्रेरी (या शिम) की मदद से, प्रोसेस के बीच कम्यूनिकेशन या इंटर-प्रोसेस कम्यूनिकेशन (आईपीसी) को बेहतर बनाया जा सकता है. इससे ऐप्लिकेशन और एसडीके के इंटरफ़ेस को एक जैसा बनाए रखने में भी मदद मिलती है.
- Backcompat लाइब्रेरी: यह लाइब्रेरी, पुराने सिस्टम के साथ काम करने की सुविधा को मैनेज करती है. इससे यह पक्का किया जाता है कि आपका एसडीके, एसडीके रनटाइम की उपलब्धता के बावजूद काम करता है.
- यूज़र इंटरफ़ेस (यूआई) लाइब्रेरी: हम रिमोट प्रज़ेंटेशन को मैनेज करने के लिए भी लाइब्रेरी उपलब्ध कराते हैं. जैसे, रनटाइम के दौरान चालू होने वाले एसडीके से यूज़र इंटरफ़ेस (यूआई) फ़ेच करना या व्यू का साइज़ बदलना और उन्हें फिर से लेआउट करना.
ऐप्लिकेशन इंस्टॉल करने के फ़्लो में बदलाव
Android Studio या अन्य टूल में रनटाइम के साथ काम करने वाला एसडीके बनाने पर, आपको Android SDK बंडल (एएसबी) बनाना होता है. यह रनटाइम के साथ काम करने वाले एसडीके के लिए पब्लिश किया जाने वाला फ़ॉर्मैट है.
bundletool, ASB को प्रोसेस करके, रनटाइम के साथ काम करने वाले SDK टूल के लिए एक APK बनाता है. इस अलग APK में, आपके SDK टूल का कोड होता है, लेकिन ऐप्लिकेशन का कोड नहीं होता.
ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल, रनटाइम के साथ काम करने वाले SDK टूल के नाम और वर्शन पर निर्भरता का एलान करती है. साथ ही, इस निर्भरता को इंस्टॉलर ऐप्लिकेशन से हल किया जाता है.
जब इंस्टॉलर को एसडीके एपीके मिल जाता है, तब एसडीके एपीके इंस्टॉल करने की प्रोसेस शुरू होती है. सफल होने पर, यह ऐप्लिकेशन का APK इंस्टॉल करता है.
अगर ऐप्लिकेशन, Android 13 और इससे पहले के वर्शन पर इंस्टॉल है और SDK टूल के रनटाइम के साथ काम नहीं करने वाले डिवाइसों पर इंस्टॉल है, तो यह प्रोसेस अलग होती है. इस स्थिति में, स्टोर एक ऐसा APK इंस्टॉल करता है जिसमें रनटाइम के साथ काम करने वाला SDK टूल और ऐप्लिकेशन कोड, दोनों शामिल होते हैं. ज़्यादा जानने के लिए, वितरण सेक्शन पढ़ें.
जब भी कोई ऐप्लिकेशन प्रोडक्शन में इस एसडीके पर निर्भर करता है, तो ऐप्लिकेशन स्टोर इस ASB से सही एसडीके APK बनाता है और उसे इंस्टॉल करता है.
पिछले वर्शन के गेम खेलने की सुविधा
SDK टूल के रनटाइम को Android 14 में लॉन्च किया गया है. इसलिए, हमें SDK टूल या ऐप्लिकेशन डेवलपर के लिए कोई अतिरिक्त शुल्क लिए बिना, Android के पुराने वर्शन के साथ काम करने की सुविधा देनी थी.
Android 13 और इससे पहले के वर्शन पर, पुराने सिस्टम के साथ काम करने की सुविधा को मैनेज करने के लिए, हमने एक Jetpack लाइब्रेरी लॉन्च की है. यह लाइब्रेरी, रनटाइम की सुविधा वाले SDK टूल को आसानी से चला सकती है. भले ही, डिवाइस पर SDK टूल के रनटाइम की सुविधा काम करती हो या नहीं.
इस गाइड का पालन करने से, रनटाइम के साथ काम करने वाला एसडीके डिफ़ॉल्ट रूप से पुराने सिस्टम के साथ काम करने लगता है. इसके बाद, आपको कुछ और करने की ज़रूरत नहीं होती.
हम आपको यह जानकारी देते हैं कि बैकवर्ड कंपैटिबिलिटी से जुड़ी कार्रवाइयां, डेवलपमेंट के किन चरणों में की जा सकती हैं. हालांकि, सामान्य तौर पर आपको यह पक्का करना चाहिए कि आपने सही डिपेंडेंसी का एलान किया हो. साथ ही, आपको यह भी पक्का करना चाहिए कि आपने जहां भी ज़रूरी हो वहां *Compat क्लास का इस्तेमाल किया हो.
मौजूदा SDK टूल माइग्रेट करना
अगर आपके पास कोई ऐसा एसडीके है जिसे आपको रनटाइम पर माइग्रेट करना है, तो आपको एक बार में पूरे कोडबेस को फिर से फ़ैक्टर करने की ज़रूरत नहीं है. इसके बजाय, आपके पास मौजूदा एसडीके के लॉजिक को, रनटाइम की सुविधा वाले नए एसडीके में धीरे-धीरे माइग्रेट करने का विकल्प होता है.
हमारा सुझाव है कि मौजूदा एसडीके को एसडीके रनटाइम में माइग्रेट करने के लिए, इन तीन चरणों का इस्तेमाल करें:
- ट्रांज़िशन पीरियड के लिए, रनटाइम की सुविधा वाला एसडीके और रनटाइम की जानकारी रखने वाला एसडीके बनाना. इससे आपको अपने मौजूदा एसडीके से कारोबार के लॉजिक को धीरे-धीरे माइग्रेट करने में मदद मिलती है. साथ ही, आपको A/B टेस्टिंग के लिए एक टेस्टिंग प्लैटफ़ॉर्म मिलता है
- ऐप्लिकेशन माइग्रेट करने की प्रोसेस को आसान बनाने के लिए, सभी मौजूदा SDK टूल के बिज़नेस लॉजिक को स्थिर स्थिति में ले जाना. साथ ही, रनटाइम के बारे में जानकारी देने वाले SDK टूल को भी साथ में ले जाना
- उन ऐप्लिकेशन के साथ काम करना जिनमें पूरी तरह से माइग्रेट किया गया है, ताकि वे रनटाइम की सुविधा वाले एसडीके का सीधे तौर पर इस्तेमाल कर सकें. इसके लिए, उन्हें रनटाइम की जानकारी रखने वाले एसडीके की ज़रूरत नहीं होगी
पहला चरण - ट्रांज़िशन पीरियड: थिक रनटाइम-अवेयर एसडीके
इसके लिए, अपने कारोबार के कुछ लॉजिक को रनटाइम-अवेयर एसडीके में सेव करके शुरुआत की जा सकती है. हम इसे थिक रनटाइम-अवेयर एसडीके या इन-ऐप्लिकेशन रैपर कहते हैं.
इस तरीके से, अपने एसडीके की सभी या कुछ सुविधाओं को स्टैटिक ऐप्लिकेशन लाइब्रेरी में रखा जा सकता है. साथ ही, रनटाइम के साथ काम करने वाला नया एसडीके बनाया जा सकता है.
इससे, इस्तेमाल के उदाहरणों को रनटाइम के साथ काम करने वाले एसडीके टूल में धीरे-धीरे माइग्रेट किया जा सकता है. साथ ही, रनटाइम के साथ काम करने वाले एसडीके टूल की तुलना, मौजूदा एसडीके टूल से की जा सकती है.
इस फ़ेज़ में, ऐप्लिकेशन डेवलपर को आपके एसडीके को इस्तेमाल करने के तरीके में कोई बदलाव करने की ज़रूरत नहीं होती. ऐसा इसलिए, क्योंकि आपकी स्टैटिक ऐप्लिकेशन लाइब्रेरी (रनटाइम-अवेयर एसडीके) ही आपके रनटाइम-अवेयर एसडीके को इस्तेमाल करने के लिए ज़रूरी काम करती है.
दूसरा चरण - स्टेबल स्टेट: थिन रनटाइम-अवेयर एसडीके
थिन रैपर या थिन रनटाइम-अवेयर एसडीके (थिन RA_SDK) में, थिक रनटाइम-अवेयर एसडीके के उलट, सिर्फ़ एपीआई ट्रांसलेशन और रनटाइम-इनेबल एसडीके कॉलिंग कोड होता है. यह कोड, आपकी स्टैटिक तौर पर लिंक की गई लाइब्रेरी एसडीके में होता है.
इस चरण में, आपको अपने सभी एसडीके कोड को स्टैटिक ऐप्लिकेशन लाइब्रेरी एसडीके से रनटाइम के साथ काम करने वाले एसडीके में माइग्रेट कर देना चाहिए.
ऐप्लिकेशन डेवलपर को पहले चरण में कोई बदलाव नहीं करना होगा, क्योंकि आपका इन-ऐप्लिकेशन थिन रनटाइम-अवेयर एसडीके, एसडीके रनटाइम के अंदर रनटाइम के साथ काम करने वाले एसडीके को कॉल करने की सुविधा देता है.
तीसरा चरण - पूरा माइग्रेशन
इस आखिरी फ़ेज़ में, आपने अपने सभी एसडीके की क्षमताओं को रनटाइम के दौरान चालू होने वाले एसडीके में माइग्रेट कर दिया है. साथ ही, ऐप्लिकेशन से सभी स्टैटिक लाइब्रेरी हटा दी हैं.
इस समय, आपके ऐप्लिकेशन क्लाइंट को अपनी बिल्ड में आपकी लाइब्रेरी शामिल करने की ज़रूरत नहीं होती. हालांकि, उन्हें मेनिफ़ेस्ट में एसडीके की डिपेंडेंसी की सूची बनानी होती है और अपने ऐप्लिकेशन कोड में एसडीके कॉल शामिल करने होते हैं.
सिस्टम, एसडीके कॉल को एसडीके रनटाइम में रूट करता है. यहां रनटाइम के साथ काम करने वाला एसडीके अपने-आप लोड हो जाता है.
दूसरा चरण: डेवलपमेंट एनवायरमेंट सेट अप करना