चेतावनी: Google Play Instant अब उपलब्ध नहीं होगा. दिसंबर 2025 से, इंस्टैंट ऐप्लिकेशन को Google Play से पब्लिश नहीं किया जा सकेगा. साथ ही, सभी Google Play services के इंस्टैंट एपीआई काम नहीं करेंगे. उपयोगकर्ताओं को अब Play के ज़रिए, किसी भी तरीके से इंस्टैंट ऐप्लिकेशन नहीं दिखाए जाएंगे.
हम यह बदलाव, डेवलपर के सुझावों के आधार पर कर रहे हैं. साथ ही, Google Play इंस्टैंट की सुविधा लॉन्च करने के बाद से, हम लगातार इस नेटवर्क को बेहतर बनाने के लिए काम कर रहे हैं.
उपयोगकर्ताओं की संख्या बढ़ाने के लिए, हम डेवलपर को अपने ऐप्लिकेशन या गेम पर उपयोगकर्ताओं को भेजने का सुझाव देते हैं. इसके लिए, डीपलिंक का इस्तेमाल करके, उपयोगकर्ताओं को ज़रूरत के हिसाब से किसी खास प्रोसेस या सुविधा पर रीडायरेक्ट करें.
अगर अब भी Android इंस्टैंट ऐप्लिकेशन मॉड्यूल के लिए, बंद किए गए फ़ीचर Android Gradle प्लग इन (com.android.feature
) का इस्तेमाल किया जा रहा है, तो आपको बेस ऐप्लिकेशन प्लग इन (com.android.application
) और डाइनैमिक फ़ीचर प्लग इन (com.android.dynamic-feature
) का इस्तेमाल करने के लिए माइग्रेट करना होगा.
Android Gradle प्लग इन 3.3.0 और इसके बाद के वर्शन में, बेस ऐप्लिकेशन प्लग इन में तुरंत ऐक्सेस करने की सुविधा शामिल होती है. इसका मतलब है कि अगर बेस ऐप्लिकेशन मॉड्यूल, इंस्टैंट इस्तेमाल की सुविधा देने के लिए ज़रूरी शर्तें पूरी करता है, तो आपको इसका फ़ायदा अपने-आप मिल जाता है. इसके बाद, डाइनैमिक सुविधा वाले प्लग इन का इस्तेमाल करके, उपयोगकर्ताओं को ज़रूरत पड़ने पर, तुरंत इस्तेमाल की जा सकने वाली अतिरिक्त सुविधाएं भी दी जा सकती हैं. इस सेटअप की मदद से, एक ही प्रोजेक्ट से ऐप्लिकेशन के इंस्टॉल किए गए और इंस्टॉल किए बिना इस्तेमाल किए जा सकने वाले वर्शन, दोनों को आसानी से उपलब्ध कराया जा सकता है. साथ ही, Android ऐप्लिकेशन बंडल की मदद से पब्लिश करने के फ़ायदे भी पाए जा सकते हैं.
नीचे दी गई टेबल में, यह बेहतर तरीके से बताया गया है कि आपको किन प्लग इन पर माइग्रेट करना होगा:
मॉड्यूल की जानकारी | पुराना प्लग इन | मौजूदा प्लग इन |
---|---|---|
यह एक ऐसा मॉड्यूल है जिसमें आपके इंस्टॉल किए गए या इंस्टॉल किए बिना इस्तेमाल किए जा सकने वाले ऐप्लिकेशन के लिए, बुनियादी कोड, रिसॉर्स, और फ़ंक्शन शामिल होते हैं. | com.android.feature (baseFeature = true के साथ)
|
com.android.application
ध्यान दें: इस मॉड्यूल में, मेनिफ़ेस्ट और साइन करने से जुड़ी वह सारी जानकारी शामिल होती है जो आपके ऐप्लिकेशन को Android ऐप्लिकेशन बंडल या APK के तौर पर बनाने और पैकेज करने के लिए ज़रूरी होती है. |
अतिरिक्त मॉड्यूलर सुविधाएं, जिन्हें उपयोगकर्ता मांगने पर डाउनलोड कर सकते हैं | com.android.feature |
com.android.dynamic-feature (मॉड्यूल के मेनिफ़ेस्ट में
dist:instant="true" और
dist:onDemand="false" के साथ) |
सिर्फ़ आपके ऐप्लिकेशन के इंस्टॉल किए गए वर्शन के लिए उपलब्ध सुविधा का कोड और रिसॉर्स. | com.android.application |
com.android.dynamic-feature (मॉड्यूल के मेनिफ़ेस्ट में
dist:instant="false" और dist:onDemand="false"
के साथ) |
इस पेज पर, अपने मौजूदा इंस्टैंट ऐप्लिकेशन प्रोजेक्ट को माइग्रेट करके, झटपट चालू होने वाला Android ऐप्लिकेशन बंडल बनाने का तरीका बताया गया है. इसमें, झटपट चालू होने वाले Android App Bundle को बनाने, टेस्ट करने, और पब्लिश करने का तरीका भी बताया गया है.
अगर आपको अपने ऐप्लिकेशन के लिए इंस्टैंट इस्तेमाल की सुविधा देने वाले नए वर्शन बनाने हैं, तो झटपट इस्तेमाल की सुविधा देने वाला सुविधा मॉड्यूल बनाना लेख पढ़ें.
बदलावों को समझना
अपने प्रोजेक्ट को डायनैमिक फ़ीचर प्लग इन का इस्तेमाल करने के लिए माइग्रेट करने पर, Android ऐप्लिकेशन बंडल, आपके ऐप्लिकेशन को बनाने और पब्लिश करने का एक नया तरीका उपलब्ध कराते हैं. इससे, उपयोगकर्ताओं को ऑप्टिमाइज़ किए गए APKs को डिस्ट्रिब्यूट करना काफ़ी आसान हो जाता है.
ऐप्लिकेशन बंडल, आपके ऐप्लिकेशन के सभी कोड और संसाधनों को पैकेज करके, उन्हें अपलोड करने के लिए आसान बनाते हैं. हालांकि, APK जनरेट करने और Google Play पर साइन करने की प्रोसेस को बाद में किया जाता है. इसके बाद, Google Play का ऐप्लिकेशन उपलब्ध कराने वाला नया मॉडल, आपके ऐप्लिकेशन बंडल का इस्तेमाल करके, हर उपयोगकर्ता के डिवाइस कॉन्फ़िगरेशन के लिए ऑप्टिमाइज़ किए गए APK जनरेट और उपलब्ध कराता है. इससे, उपयोगकर्ता सिर्फ़ वही कोड और संसाधन डाउनलोड करते हैं जो आपके ऐप्लिकेशन को चलाने के लिए ज़रूरी होते हैं. अब आपको अलग-अलग डिवाइसों के लिए, कई APK बनाने, उन पर हस्ताक्षर करने, और उन्हें मैनेज करने की ज़रूरत नहीं है. साथ ही, उपयोगकर्ताओं को छोटे और ज़्यादा ऑप्टिमाइज़ किए गए डाउनलोड मिलते हैं.
अब काम न करने वाले सुविधा प्लग इन का इस्तेमाल करते समय, इंस्टैंट ऐप्लिकेशन बनाने के लिए, एक बुनियादी सुविधा मॉड्यूल बनाना ज़रूरी था. इसमें आपके सभी मॉड्यूल के लिए शेयर किया गया कोड और संसाधन शामिल होते थे. इनमें इंस्टैंट ऐप्लिकेशन मॉड्यूल भी शामिल होता था. आपका बाकी कोड, कई ऐसे मॉड्यूल में शामिल किया गया था जो बेस सुविधाओं के मॉड्यूल नहीं थे. इनमें आपके इंस्टैंट अनुभवों के लिए एंट्री पॉइंट शामिल थे. आपके ऐप्लिकेशन के इंस्टॉल किए गए वर्शन के लिए, आपके प्रोजेक्ट में एक अलग ऐप्लिकेशन मॉड्यूल शामिल हो सकता है. इसमें सिर्फ़ आपके इंस्टॉल किए गए ऐप्लिकेशन के लिए ज़रूरी कोड और गतिविधियां शामिल होती हैं.
Android ऐप्लिकेशन बंडल के साथ काम करने के लिए, अपने ऐप्लिकेशन को माइग्रेट करने पर, आपका ऐप्लिकेशन मॉड्यूल, बेस मॉड्यूल की भूमिका फिर से हासिल कर लेता है. साथ ही, इंस्टॉल किए गए या झटपट इस्तेमाल किए जा सकने वाले अन्य वर्शन को सुविधा मॉड्यूल के तौर पर व्यवस्थित किया जाता है. इसका मतलब है कि आपका प्रोजेक्ट अब एक स्टैंडर्ड ऐप्लिकेशन प्रोजेक्ट की तरह ही दिखता है. इसमें, इंस्टैंट ऐप्लिकेशन के लिए उपलब्ध बेस मॉड्यूल के साथ-साथ, इंस्टैंट ऐप्लिकेशन के अन्य मॉड्यूलर अनुभव शामिल किए जा सकते हैं.
अपने मौजूदा इंस्टैंट ऐप्लिकेशन प्रोजेक्ट को माइग्रेट करने और Android ऐप्लिकेशन बंडल के ज़्यादा ऑप्टिमाइज़ किए गए डिस्ट्रिब्यूशन मॉडल को अपनाने के लिए, यहां दिए गए सेक्शन में बताया गया तरीका अपनाएं.
बुनियादी सुविधाओं के मॉड्यूल को ऐप्लिकेशन मॉड्यूल में बदलना
मुख्य ऐप्लिकेशन मॉड्यूल में बदलने से पहले, आपको सबसे पहले बुनियादी सुविधा वाले मॉड्यूल की build.gradle
फ़ाइल में बदलाव करना होगा. इसके लिए, यह तरीका अपनाएं:
baseFeature true
लाइन मिटाएं.feature
याapplication
डिपेंडेंसी कॉन्फ़िगरेशन का इस्तेमाल करने वाली सभी डिपेंडेंसी हटाएं.Groovy
dependencies { ... // delete any lines that look like // feature project(":foo") // feature project(":bar") // application project(":app") }
Kotlin
dependencies { ... // delete any lines that look like // feature(project(":foo")) // feature(project(":bar")) // application(project(":app")) }
applicationId
को मौजूदाcom.android.application
मॉड्यूल सेcom.android.feature
मॉड्यूल में ले जाएं. साथ ही, ऐसे सभी बिल्ड स्क्रिप्ट कॉन्फ़िगरेशन को भी ले जाएं जो आपके बेस ऐप्लिकेशन मॉड्यूल में होने चाहिए. नीचे कुछ उदाहरण दिए गए हैं. इस चरण के लिए, आपकेbuild.gradle
सेटअप के आधार पर, पिछले ऐप्लिकेशन मॉड्यूल सेbuild.gradle
केandroid
ब्लॉक को कॉपी करके, नए ऐप्लिकेशन मॉड्यूल कीbuild.gradle
फ़ाइल में चिपकाना आसान हो सकता है. हालांकि, ऐसा करते समय आपको सावधानी बरतनी चाहिए.Groovy
android { ... defaultConfig { // You need to move the application ID from the app module // to your feature module. applicationId "com.example.myapp" ... } // Some additional build configurations you might want to // copy from your current ‘app’ module may include ProGuard // rules and code shrinking settings. buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile( 'proguard-android-optimize.txt'), 'proguard-rules.pro' } } }
Kotlin
android { ... defaultConfig { // You need to move the application ID from the app module // to your feature module. applicationId = "com.example.myapp" ... } // Some additional build configurations you might want to // copy from your current ‘app’ module may include ProGuard // rules and code shrinking settings. buildTypes { getByName("release") { minifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } }
मेनिफ़ेस्ट में सही बंडल डिस्ट्रिब्यूशन टैग जोड़कर, सुविधा मॉड्यूल को तुरंत चालू होने के तौर पर मार्क करें, जैसा कि यहां दिखाया गया है.
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution"> <dist:module dist:instant="true" /> ... </manifest>
सुविधा वाले मॉड्यूल को अपने ऐप्लिकेशन के बुनियादी मॉड्यूल में बदलने के लिए, इसके प्लग इन टाइप को
com.android.application
में बदलें:Groovy
// Replace "plugins { id 'com.android.feature' }" // with the following plugins { id 'com.android.application' }
Kotlin
// Replace "plugins { id("com.android.feature") }" // with the following plugins { id("com.android.application") }
पुराने ऐप्लिकेशन मॉड्यूल को, इंस्टॉल के समय काम करने वाले सुविधा मॉड्यूल में बदलना
अगर आपके पुराने ऐप्लिकेशन मॉड्यूल में कोई कोड या संसाधन नहीं है, तो उसे आसानी से मिटाया जा सकता है. ऐसा इसलिए, क्योंकि पिछले सेक्शन में बताए गए तरीके से, आपके फ़ीचर मॉड्यूल को आपके ऐप्लिकेशन के बेस ऐप्लिकेशन मॉड्यूल में बदल दिया गया है.
हालांकि, अगर आपके पुराने ऐप्लिकेशन मॉड्यूल में ऐसा कोड और संसाधन है जो उस फ़ंक्शन के बारे में बताता है जिसे आपको ऐप्लिकेशन इंस्टॉल करने पर उपयोगकर्ताओं के लिए उपलब्ध कराना है, तो ऐप्लिकेशन मॉड्यूल को सुविधा मॉड्यूल में बदलने के लिए, इस सेक्शन में दिया गया तरीका अपनाएं.
सुविधा वाला मॉड्यूल बनाने के लिए, प्लग इन टाइप को com.android.application
से com.android.dynamic-feature
पर बदलना होता है. साथ ही, कुछ और build.gradle
बदलाव भी करने होते हैं. ये बदलाव इस तरह किए जा सकते हैं:
प्लग इन टाइप को
com.android.application
से बदलकरcom.android.dynamic-feature
करें.Groovy
// Replace "plugins { id 'com.android.feature' }" // with the following: plugins { id 'com.android.dynamic-feature' }
Kotlin
// Replace "plugins { id("com.android.application") }" // with the following: plugins { id("com.android.dynamic-feature") }
पिछले सेक्शन में बताए गए तरीके से, पक्का करें कि आपने
com.android.application
प्लग इन के लिए ज़रूरी बाइल्ड कॉन्फ़िगरेशन को, बेस ऐप्लिकेशन मॉड्यूल में ले जाया हो. जैसे,applicationId
याproguardFiles
नियम.मॉड्यूल का नाम बदलकर "installed_feature" जैसा कुछ इस तरह से रखें:
- मेन्यू बार से व्यू > टूल विंडो > प्रोजेक्ट चुनकर, प्रोजेक्ट पैनल खोलें.
- सुविधा मॉड्यूल पर दायां क्लिक करें और Refactor > Rename चुनें.
- इसके बाद, आपको एक डायलॉग बॉक्स दिखेगा. इसमें, मॉड्यूल का नाम बदलें को चुनें और ठीक है पर क्लिक करें.
- मॉड्यूल के लिए नया नाम डालें और ठीक है पर क्लिक करें.
तीसरे चरण की तरह ही, पिछले सेक्शन में बनाए गए नए ऐप्लिकेशन मॉड्यूल का नाम बदलकर “ऐप्लिकेशन” जैसा कुछ रखें.
सुविधा वाले मॉड्यूल की
build.gradle
फ़ाइल में, “ऐप्लिकेशन” मॉड्यूल पर लागू करने की डिपेंडेंसी जोड़ें, जैसा कि यहां दिखाया गया है.Groovy
dependencies { ... // In the feature module, add an implementation dependency // on the base app module. implementation project(":app") }
Kotlin
dependencies { ... // In the feature module, add an implementation dependency // on the base app module. implementation(project(":app")) }
इस सुविधा को ऐप्लिकेशन के नए मॉड्यूल की
build.gradle
फ़ाइल में जोड़ें.Groovy
android { ... // In the base app module, specify each feature module. dynamicFeatures = [":installed_feature"] }
Kotlin
android { ... // In the base app module, specify each feature module. dynamicFeatures.addAll(listOf(":installed_feature")) }
सुविधा वाले मॉड्यूल के मेनिफ़ेस्ट में, मेनिफ़ेस्ट में बंडल डिस्ट्रिब्यूशन टैग जोड़कर, सुविधा वाले मॉड्यूल को इंस्टॉल किए जा सकने वाले मॉड्यूल के तौर पर मार्क करें.
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution"> <dist:module dist:instant="false" dist:onDemand="false" dist:title="@string/title_dynamic_feature"> <dist:fusing dist:include="true" /> </dist:module> ... </manifest>
अन्य फ़ीचर मॉड्यूल को, इंस्टैंट मोड में काम करने वाले फ़ीचर मॉड्यूल में बदलना
अगर आपने अपने ऐप्लिकेशन के अतिरिक्त फ़ंक्शन को कई सुविधा वाले मॉड्यूल में बांटा है, तो आपको उन मॉड्यूल को तुरंत चालू होने वाले सुविधा वाले मॉड्यूल में बदलने के लिए, इस सेक्शन में दिया गया तरीका अपनाना होगा.
अपने प्रोजेक्ट में बचे हर सुविधा मॉड्यूल को, तुरंत चालू होने वाली सुविधाओं में बदलने के लिए, यह तरीका अपनाएं:
build.gradle
फ़ाइल में प्लगिन टाइप कोcom.android.dynamic-feature
में बदलें, जैसा कि यहां दिखाया गया है:Groovy
// Replace 'com.android.feature' with 'com.android.dynamic-feature' plugins { id 'com.android.dynamic-feature' }
Kotlin
// Replace "com.android.feature" with "com.android.dynamic-feature" plugins { id("com.android.dynamic-feature") }
हर सुविधा मॉड्यूल को 'इंस्टैंट-चालू' के तौर पर मार्क करने के लिए, मेनिफ़ेस्ट में ये एट्रिब्यूट जोड़ें.
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution"> <dist:module dist:instant="true" dist:onDemand="false" dist:title="@string/title_dynamic_feature"> <dist:fusing dist:include="true" /> </dist:module> ... </manifest>
नए ऐप्लिकेशन मॉड्यूल की
build.gradle
फ़ाइल में सुविधा मॉड्यूल जोड़ें, जहां आपने सुविधा मॉड्यूल की सूची मेंinstalled_feature
जोड़ा था.Groovy
android { ... dynamicFeatures = [":installed_feature", ":feature_1", ":feature_2"] // or whichever name exists for the instant enabled feature module }
Kotlin
android { ... dynamicFeatures.addAll(listOf(":installed_feature", ":feature_1", ":feature_2")) // or whichever name exists for the instant enabled feature module }
इंस्टैंट इस्तेमाल की सुविधा वाला नया ऐप्लिकेशन बंडल बनाना, टेस्ट करना, और पब्लिश करना
इस पेज पर दिया गया तरीका अपनाने के बाद, आपके प्रोजेक्ट में एक आर्टफ़ैक्ट, यानी Android ऐप्लिकेशन बंडल बन जाएगा. इसका इस्तेमाल, Google Play Console पर अपने ऐप्लिकेशन के इंस्टॉल किए गए और इंस्टैंट, दोनों वर्शन को पब्लिश करने के लिए किया जा सकता है. साथ ही, इंस्टैंट और इंस्टॉल किए गए ट्रैक के लिए, अलग-अलग रोल आउट किया जा सकता है. इसके अलावा, ऐप्लिकेशन बंडल की मदद से, आपको हर उपयोगकर्ता के डिवाइस कॉन्फ़िगरेशन के लिए ऑप्टिमाइज़ किए गए APKs उपलब्ध कराने का फ़ायदा मिलता है. इससे, उपयोगकर्ता सिर्फ़ वही कोड और संसाधन डाउनलोड करते हैं जो आपके ऐप्लिकेशन को चलाने के लिए ज़रूरी होते हैं. इसका मतलब है कि अब आपको अलग-अलग डिवाइसों के लिए, एक से ज़्यादा APKs बनाने, उन पर हस्ताक्षर करने, और उन्हें मैनेज करने की ज़रूरत नहीं है. साथ ही, उपयोगकर्ताओं को कम साइज़ और ज़्यादा ऑप्टिमाइज़ किए गए डाउनलोड मिलते हैं.
झटपट इस्तेमाल की सुविधा वाले ऐप्लिकेशन बंडल को बनाने और उसकी जांच करने के लिए, ऐप्लिकेशन बंडल बनाएं पर जाएं.