Android ऐप्लिकेशन बंडल के साथ काम करने के लिए, अपना इंस्टैंट ऐप्लिकेशन माइग्रेट करें

अगर अब भी Android Gradle प्लग इन का इस्तेमाल किया जा रहा है जो अब काम नहीं करता (com.android.feature) का इस्तेमाल करके, अपने Android Instant App मॉड्यूल के लिए, आपको ये काम करने होंगे बेस ऐप्लिकेशन प्लगिन (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 ऐप्लिकेशन बंडल पब्लिश करने के लिए.

अगर आप अपने ऐप्लिकेशन के लिए नए झटपट अनुभव बना रहे हैं, तो इसके बजाय पढ़ें तुरंत चालू होने वाला फ़ीचर मॉड्यूल बनाएं.

बदलावों को समझें

जब आप अपने प्रोजेक्ट को इसके बजाय डाइनैमिक फ़ीचर प्लग इन का इस्तेमाल करने के लिए माइग्रेट करते हैं, Android ऐप्लिकेशन बंडल, ऐप्लिकेशन बनाने और उसे पब्लिश करने का नया तरीका देते हैं जो आपके ऐप्लिकेशन के लिए ऑप्टिमाइज़ किए गए APKs डिस्ट्रिब्यूट करने को बहुत आसान बनाता है उपयोगकर्ता.

ऐप्लिकेशन बंडल, आपके ऐप्लिकेशन के कंपाइल किए गए सभी कोड की पैकेजिंग करके, डिस्ट्रिब्यूशन को आसान बनाते हैं और संसाधनों को अपलोड करने के लिए डिज़ाइन किया गया है. हालांकि, यह APK जनरेट करने और Google Play में साइन इन करने में रुकावट डालता है. Google Play का नया ऐप्लिकेशन सेवा देने वाला मॉडल, आपके ऐसा ऐप्लिकेशन बंडल जो हर उपयोगकर्ता के डिवाइस के हिसाब से, ऑप्टिमाइज़ किए गए APK जनरेट करता है और उन्हें उपलब्ध कराता है कॉन्फ़िगरेशन की निगरानी करता है, ताकि वे सिर्फ़ वही कोड और संसाधन डाउनलोड करें जिनकी उन्हें ज़रूरत होती है आपका ऐप्लिकेशन. बेहतर तरीके से काम करने के लिए, अब आपको एक से ज़्यादा APKs बनाने, साइन करने, और उन्हें मैनेज करने की ज़रूरत नहीं है और उपयोगकर्ताओं को छोटे और ज़्यादा ऑप्टिमाइज़ किए गए डाउनलोड मिलते हैं.

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

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

अपने मौजूदा इंस्टैंट ऐप्लिकेशन प्रोजेक्ट को माइग्रेट करने और Android ऐप्लिकेशन बंडल की ज़्यादा ऑप्टिमाइज़ किए गए डिस्ट्रिब्यूशन मॉडल के लिए, सेक्शन में दिए गए तरीके अपनाएं देखें.

बेस फ़ीचर मॉड्यूल को ऐप्लिकेशन मॉड्यूल में बदलें

आपको पहले बेस फ़ीचर मॉड्यूल की build.gradle फ़ाइल में बदलाव करना होगा उसे मुख्य ऐप्लिकेशन मॉड्यूल में बदलने की सुविधा नीचे दी गई है:

  1. baseFeature true लाइन मिटाएं.
  2. feature या application डिपेंडेंसी का इस्तेमाल करने वाली सभी डिपेंडेंसी हटाएं कॉन्फ़िगरेशन.

    ग्रूवी

    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"))
    }
    
  3. applicationId को अन्य बिल्ड स्क्रिप्ट कॉन्फ़िगरेशन के साथ ले जाएं मौजूदा वर्शन से, आपके बेस ऐप्लिकेशन मॉड्यूल में होने की उम्मीद होगी com.android.feature मॉड्यूल में com.android.application मॉड्यूल जोड़ा. कुछ सूचनाएं मिल रही हैं उदाहरण नीचे दिए गए हैं. इस चरण के लिए, आपकी चुनी हुई build.gradle सेटअप है, तो android को कॉपी करके चिपकाना ज़्यादा आसान हो सकता है पिछले ऐप्लिकेशन मॉड्यूल से नए ऐप्लिकेशन में build.gradle का ब्लॉक मॉड्यूल की build.gradle फ़ाइल है. हालांकि, आपको डिजिटल बटन बनाते समय सावधानी बरतनी चाहिए तो.

    ग्रूवी

    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"
                )
            }
        }
    }
    
  4. सही बंडल जोड़कर, फ़ीचर मॉड्यूल को 'तुरंत चालू करें' के तौर पर मार्क करें डिस्ट्रिब्यूशन टैग को मेनिफ़ेस्ट में जोड़ना होगा, जैसा कि नीचे दिखाया गया है.

    <manifest ... xmlns:dist="http://schemas.android.com/apk/distribution">
        <dist:module dist:instant="true" />
        ...
    </manifest>
    
  5. फ़ीचर मॉड्यूल का प्लग इन बदलकर, उसे अपने बेस ऐप्लिकेशन मॉड्यूल में बदलें com.android.application लिखें:

    ग्रूवी

    // 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 के अन्य बदलावों के बारे में जानकारी यहां दी गई है:

  1. प्लग इन प्रकार को com.android.application से इसमें बदलें com.android.dynamic-feature.

    ग्रूवी

    // 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")
    }
    
  2. जैसा कि पिछले सेक्शन में बताया गया है, पक्का करें कि आपने बिल्ड को मूव किया है कॉन्फ़िगरेशन जो com.android.application प्लगिन के लिए ज़रूरी हैं, बेस ऐप्लिकेशन मॉड्यूल, जैसे कि applicationId या proguardFiles नियम.

  3. मॉड्यूल का नाम बदलकर "Install_feature" जैसा कुछ रखें इस तरह से:

    1. प्रोजेक्ट पैनल को खोलने के लिए View > को चुनें टूल की विंडो > प्रोजेक्ट पर क्लिक करें.
    2. फ़ीचर मॉड्यूल पर राइट क्लिक करें और Refactor > को चुनें नाम बदलें.
    3. आपको एक डायलॉग बॉक्स दिखेगा. उसमें मॉड्यूल का नाम बदलें चुनें और ठीक है पर क्लिक करें.
    4. मॉड्यूल के लिए नया नाम डालें और OK पर क्लिक करें.
  4. तीसरे चरण की तरह ही, पिछले चरण में बनाए गए नए ऐप्लिकेशन मॉड्यूल का नाम बदलें सेक्शन में जोड़ा जा सकता है.

  5. सुविधा में, “ऐप्लिकेशन” मॉड्यूल पर लागू करने के लिए डिपेंडेंसी जोड़ें मॉड्यूल की build.gradle फ़ाइल है, जैसा कि नीचे दिखाया गया है.

    ग्रूवी

    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"))
    }
    
  6. सुविधा को नए ऐप्लिकेशन मॉड्यूल की build.gradle फ़ाइल में जोड़ें.

    ग्रूवी

    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"))
    }
    
  7. फ़ीचर मॉड्यूल के मेनिफ़ेस्ट में, फ़ीचर मॉड्यूल को इसके तौर पर मार्क करें बंडल डिस्ट्रिब्यूशन टैग को जोड़कर इंस्टॉल किया जा सकने वाला मॉड्यूल मेनिफ़ेस्ट.

    <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>
    

सुविधा वाले अन्य मॉड्यूल को झटपट-खुलने वाले सुविधा मॉड्यूल में बदलें

अगर आपने अपने ऐप्लिकेशन की अतिरिक्त सुविधाओं को अलग-अलग सुविधाओं में मॉड्यूलराइज़ किया है मॉड्यूल हैं, तो आपको मॉड्यूल बदलने के लिए इस सेक्शन में दिए गए चरणों का पालन करना होगा का इस्तेमाल, झटपट-खुलने वाले सुविधाओं वाले मॉड्यूल में करना चाहिए.

अपने प्रोजेक्ट के बचे हुए हर फ़ीचर मॉड्यूल को बदलने के लिए, यहां दिया गया तरीका अपनाएं तुरंत चालू होने वाली सुविधाओं में शामिल करें:

  1. build.gradle फ़ाइल में प्लग इन प्रकार को इसमें बदलें com.android.dynamic-feature, जैसा कि नीचे दिखाया गया है:

    ग्रूवी

    // 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")
    }
    
  2. नीचे दी गई चीज़ें जोड़कर, हर फ़ीचर मॉड्यूल को झटपट-चालू है के तौर पर मार्क करें को मेनिफ़ेस्ट में बदलना होगा.

    <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>
    
  3. नए ऐप्लिकेशन मॉड्यूल की build.gradle फ़ाइल में, फ़ीचर मॉड्यूल जोड़ें जहां आपने फ़ीचर मॉड्यूल की सूची में installed_feature को जोड़ा.

    ग्रूवी

    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 मैनेज किए जा सकते हैं. साथ ही, उपयोगकर्ताओं की संख्या बढ़ती है, इससे ज़्यादा ऑप्टिमाइज़ किए गए डाउनलोड मिलते हैं.

झटपट-खुलने वाले ऐप्लिकेशन बंडल को बनाने और उनकी जांच करने के लिए, यहां जाएं ऐप्लिकेशन बंडल बनाएं.