चेतावनी: Google Play इंस्टैंट अब उपलब्ध नहीं होगा. दिसंबर 2025 से, इंस्टैंट ऐप्लिकेशन को Google Play से पब्लिश नहीं किया जा सकेगा और Google Play services के इंस्टैंट एपीआई काम नहीं करेंगे. उपयोगकर्ताओं को अब Play के ज़रिए, किसी भी तरीके से इंस्टैंट ऐप्लिकेशन नहीं दिखाए जाएंगे.
हम यह बदलाव, डेवलपर से मिले सुझावों के आधार पर कर रहे हैं. साथ ही, Google Play Instant के लॉन्च होने के बाद से, हम लगातार इस नेटवर्क को बेहतर बनाने के लिए निवेश कर रहे हैं.
उपयोगकर्ताओं की संख्या बढ़ाने के लिए, हम डेवलपर को अपने रेगुलर ऐप्लिकेशन या गेम पर उपयोगकर्ताओं को भेजने का सुझाव देते हैं. इसके लिए, डीपलिंक का इस्तेमाल करके, उपयोगकर्ताओं को ज़रूरत के हिसाब से किसी खास प्रोसेस या सुविधा पर रीडायरेक्ट करें.
Google Play Instant की मदद से, वेब लिंक पर टैप करके बेहतरीन और नेटिव अनुभव मिलता है. लोग, ऐप्लिकेशन को पहले इंस्टॉल किए बिना ही उसका इस्तेमाल कर सकते हैं. इससे, ऐप्लिकेशन में लोगों की दिलचस्पी बढ़ती है और वे बेहतर तरीके से जुड़ पाते हैं. हालांकि, किसी इंस्टेंट ऐप्लिकेशन को मोबाइल वेबपेज की तरह तेज़ी से लोड करने के लिए, आपको अच्छी तरह से स्ट्रक्चर किया गया और असरदार इंस्टेंट ऐप्लिकेशन बनाना होगा. आपके इंस्टेंट ऐप्लिकेशन का बाइनरी जितना छोटा होगा, वह उतनी ही तेज़ी से लोड होगा और उपयोगकर्ता को उतना ही बेहतर अनुभव मिलेगा.
इस दस्तावेज़ में, ऐप्लिकेशन के स्ट्रक्चर और बाइनरी साइज़ को मैनेज करने के सबसे सही तरीके बताए गए हैं. इससे इंस्टैंट ऐप्लिकेशन का इस्तेमाल आसानी से किया जा सकता है. इन्हीं तरीकों को इंस्टॉल किए जा सकने वाले ऐप्लिकेशन के लिए भी इस्तेमाल किया जा सकता है.
कई फ़ीचर मॉड्यूल में फिर से फ़ैक्टर करना
ऐप्लिकेशन के बाइनरी साइज़ में सबसे ज़्यादा सुधार तब होता है, जब ऐप्लिकेशन को कई फ़ीचर मॉड्यूल में फिर से बनाया जाता है. सबसे पहले, बुनियादी सुविधाओं का मॉड्यूल बनाएं. इसके बाद, थीम से जुड़े वर्कफ़्लो को उनके फ़ीचर मॉड्यूल में एक्सट्रैक्ट करें. हर सुविधा वाले मॉड्यूल को एक शुरुआती गतिविधि और यूनीक यूआरएल असाइन करें, ताकि उपयोगकर्ता मॉड्यूल का वर्कफ़्लो पूरा कर सकें.
फ़ीचर मॉड्यूल बनाते समय, बुनियादी सुविधाओं वाले मॉड्यूल को जितना हो सके उतना छोटा रखें. खास तौर पर, अपने ऐप्लिकेशन के उन हिस्सों पर ध्यान दें जिनके लिए, आपकी डिपेंडेंट लाइब्रेरी को ऐक्सेस करने की ज़रूरत होती है. अगर कोई लाइब्रेरी सिर्फ़ एक फ़ीचर मॉड्यूल इस्तेमाल करती है, तो उस लाइब्रेरी को बेस फ़ीचर मॉड्यूल में इंपोर्ट न करें. इसके बजाय, उसे फ़ीचर मॉड्यूल में ही इंपोर्ट करें. ध्यान रखें कि किसी सुविधा वाले मॉड्यूल के लिए इंस्टेंट ऐप्लिकेशन रिलीज़ करने के लिए, उस सुविधा वाले मॉड्यूल और बेस फ़ीचर मॉड्यूल का कुल साइज़ 15 एमबी से कम होना चाहिए.
सबसे सही तरीके
अपने ऐप्लिकेशन को फिर से बनाते समय, इन सबसे सही तरीकों को ध्यान में रखें:
- दोनों तरह के ऐप्लिकेशन के लिए एक ही कोडबेस का इस्तेमाल करना
- अपने ऐप्लिकेशन के प्रोजेक्ट को आसानी से मैनेज करने के लिए, एक ही मॉड्यूलर कोडबेस का इस्तेमाल करके, इंस्टॉल किए गए ऐप्लिकेशन और इंस्टेंट ऐप्लिकेशन दोनों बनाए जा सकते हैं.
- एक से ज़्यादा फ़ीचर मॉड्यूल के लिए डिज़ाइन करना
- अगर आपके ऐप्लिकेशन में सिर्फ़ एक वर्कफ़्लो है और फ़िलहाल सिर्फ़ एक सुविधा मॉड्यूल की ज़रूरत है, तो भी कई सुविधा मॉड्यूल के लिए डिज़ाइन करना एक अच्छा विकल्प है. इस तरह, ओरिजनल फ़ीचर मॉड्यूल के साइज़ पर कोई असर डाले बिना, अपने ऐप्लिकेशन में मौजूदा मॉड्यूल जोड़े जा सकते हैं.
- शुरुआत में, फ़ीचर मॉड्यूल के साइज़ की सीमा पर ध्यान न दें
- फ़ीचर मॉड्यूल के साइज़ की सीमाएं, स्थानीय तौर पर बनाए गए बाइनरी पर लागू नहीं होती हैं. आपके पास संगठन में काम करने वाले लोगों के लिए उपलब्ध रिलीज़ ट्रैक के ज़रिए भी इंस्टेंट ऐप्लिकेशन रिलीज़ करने का विकल्प होता है. इस ट्रैक पर, सुविधा वाले मॉड्यूल के साइज़ के लिए 15 एमबी की सीमा लागू होती है. सिर्फ़ ऐल्फ़ा और प्रोडक्शन ट्रैक पर 15 एमबी की सीमा लागू होती है.
ऐप्लिकेशन के संसाधन अपडेट करना
कुछ ऐप्लिकेशन, खास तौर पर वे जिनका कोडबेस काफ़ी पुराना है, उनमें ऐसे संसाधन होते हैं जिनका इस्तेमाल आपके ऐप्लिकेशन के बाइनरी अब नहीं करते. अपने ऐप्लिकेशन के मॉड्यूल को छोटा करने के तरीके ढूंढते समय, कोड के इन सामान्य सोर्स पर ध्यान दें.
इमेज का साइज़ कम करना
PNG के बजाय WebP फ़ाइल फ़ॉर्मैट का इस्तेमाल करके, अपने ऐप्लिकेशन के ड्रॉएबल का कुल साइज़ काफ़ी कम किया जा सकता है. Google Play Instant, WebP फ़ॉर्मैट के साथ पूरी तरह से काम करता है. इसमें पारदर्शिता और लॉसलेस कंप्रेशन (इमेज की क्वालिटी को कम किए बिना कंप्रेस करना) शामिल है, ताकि इमेज की क्वालिटी में कोई बदलाव न हो.
अगर हो सके, तो अन्य पीएनजी इमेज इस्तेमाल करने के लिए, पुराने वर्शन के साथ काम करने से जुड़ी सभी ज़रूरी शर्तें हटा दें. अगर आपको PNG इमेज का इस्तेमाल करना ही है, तो उन्हें उस मॉड्यूल में रखें जिसका इस्तेमाल आपका ऐप्लिकेशन बनाने और इंस्टॉल करने के लिए किया जाता है.
इस्तेमाल नहीं की गई भाषाएं हटाना
अगर आपका ऐप्लिकेशन एक से ज़्यादा भाषाओं में काम करता है, तो स्थानीय भाषा में उपलब्ध संसाधनों की संख्या कम करें. अगर android.support.v7.appcompat जैसी "appcompat" लाइब्रेरी का इस्तेमाल किया जाता है, तो यह चरण पूरा करना खास तौर पर मददगार होता है.
इस लाइब्रेरी में कई भाषाओं में मैसेज शामिल हैं. ऐसा हो सकता है कि आपका ऐप्लिकेशन इनमें से कुछ भाषाओं के साथ काम न करे.
ज़्यादा जानने के लिए, इस्तेमाल न किए गए वैकल्पिक संसाधनों को हटाने का तरीका देखें. खास तौर पर, इस्तेमाल न की गई भाषाओं को हटाने का तरीका देखें.
अतिरिक्त फ़ाइलें हटाना
ऐसा हो सकता है कि आपका ऐप्लिकेशन, उन संसाधनों का इस्तेमाल न करे जिन्हें आपने अपने प्रोजेक्ट में इंपोर्ट किया है. इन संसाधनों को हटाने में मदद करने के लिए, Android Studio में इस खास स्थिति के लिए Lint चेक की सुविधा उपलब्ध है. इस टूल का इस्तेमाल करने के लिए, यह तरीका अपनाएं:
- Control+Alt+Shift+I (Mac OS पर Command+Alt+Shift+I) दबाएं.
- इसके बाद, दिखने वाले डायलॉग बॉक्स में
"unused resources"टाइप करें. - संसाधन के इस्तेमाल की जांच करने की प्रोसेस शुरू करने के लिए, इस्तेमाल नहीं किए गए संसाधन विकल्प चुनें.
अगर आपके ऐप्लिकेशन में अब भी कोई बड़ी फ़ाइल मौजूद है, तो देखें कि क्या उसे ऐप्लिकेशन से अनपैक किया जा सकता है. साथ ही, क्या उपयोगकर्ता के ऐप्लिकेशन से इंटरैक्ट करना शुरू करने के बाद, उसे अलग फ़ाइल के तौर पर डाउनलोड किया जा सकता है. आम तौर पर, इस तरह से इमेज लोड करने के लिए कोड में बदलाव करना पड़ता है. हालांकि, इससे आपके इंस्टेंट ऐप्लिकेशन का फ़ाइल साइज़ काफ़ी कम हो सकता है. ऐसा इसलिए, क्योंकि इसमें सिर्फ़ उन संसाधनों को डाउनलोड किया जाता है जिनके लिए उपयोगकर्ता ने साफ़ तौर पर अनुरोध किया है.
इस्तेमाल न की जा रही लाइब्रेरी हटाना
ऐप्लिकेशन का दायरा बढ़ने पर, उसमें कई डिपेंडेंसी हो सकती हैं. खास तौर पर, इनमें से किसी एक तरह की डिपेंडेंसी:
- नेटिव लाइब्रेरी: ऐसी लाइब्रेरी जिनमें नेटिव कोड होता है. इस कोड को आपका इंस्टेंट ऐप्लिकेशन कभी नहीं चलाता.
- ट्रांज़िटिव डिपेंडेंसी: वे लाइब्रेरी जिन पर आपके ऐप्लिकेशन की इंपोर्ट की गई लाइब्रेरी निर्भर करती हैं.
Android Studio में, आपके ऐप्लिकेशन के प्रोजेक्ट में मौजूद किसी भी गैर-ज़रूरी डिपेंडेंसी का पता लगाने के लिए कई काम के टूल मौजूद हैं:
- बाहरी लाइब्रेरी
Android Studio के प्रोजेक्ट व्यू में, बाहरी लाइब्रेरी सेक्शन शामिल होता है.
इस सेक्शन में, आपके ऐप्लिकेशन में इस्तेमाल की जाने वाली हर लाइब्रेरी शामिल होती है. इसमें नेटिव कोड और सभी ट्रांज़िटिव डिपेंडेंसी भी शामिल होती हैं. इस व्यू में, ऐसी लाइब्रेरी खोजें जिनका इस्तेमाल नहीं किया गया है या जो डुप्लीकेट हैं और जिनकी आपके ऐप्लिकेशन को ज़रूरत नहीं है.
- APK ऐनालाइज़र
झटपट ऐप्लिकेशन की बिल्ड के साथ-साथ अलग-अलग बिल्ड की तुलना करने के लिए, APK Analyzer टूल का इस्तेमाल किया जा सकता है.
यह तय करने के बाद कि आपके ऐप्लिकेशन को किन लाइब्रेरी की ज़रूरत नहीं है, उन्हें बाहर रखें. इसके लिए, अपनी Gradle बिल्ड फ़ाइल में यहां दी गई लाइनों जैसी लाइनें जोड़ें:
<feature_module>/build.gradle
Groovy
dependencies { implementation('some-important-but-large-library') { exclude group: 'com.example.imgtools', module: 'native' } }
Kotlin
dependencies { implementation('some-important-but-large-library') { exclude(group = "com.example.imgtools", module = "native") } }
अपने ऐप्लिकेशन की डिपेंडेंसी के कुल इंपोर्ट साइज़ को कम करने के बारे में ज़्यादा जानने के लिए, Gradle की डिपेंडेंसी मैनेजमेंट गाइड देखें.
ऐसेट की क्लाउड डिलीवरी लागू करना
अगर आपको साइज़ को और कम करना है, तो आपको ऐसेट की क्लाउड डिलीवरी का इस्तेमाल करना पड़ सकता है.