Android Gradle प्लग इन 3.4.0 (अप्रैल 2019)

Android प्लग इन के इस वर्शन के लिए, ये ज़रूरी हैं:

कम से कम वर्शन डिफ़ॉल्ट वर्शन नोट
Gradle 5.1.1 5.1.1 ज़्यादा जानने के लिए, Gradle को अपडेट करना लेख पढ़ें. Gradle 5.0 और इसके बाद के वर्शन का इस्तेमाल करने पर, Gradle डेमन मेमोरी हेप का डिफ़ॉल्ट साइज़ 1 जीबी से घटकर 512 एमबी हो जाता है. इससे, बिल्ड की परफ़ॉर्मेंस में गिरावट आ सकती है. इस डिफ़ॉल्ट सेटिंग को बदलने के लिए, अपने प्रोजेक्ट की gradle.properties फ़ाइल में Gradle डेमन हेप का साइज़ तय करें.
SDK टूल बनाने वाले टूल 28.0.3 28.0.3 SDK Build Tools को इंस्टॉल या कॉन्फ़िगर करें.

3.4.3 (जुलाई 2020)

इस मामूली अपडेट में, नई डिफ़ॉल्ट सेटिंग और सुविधाओं के साथ काम करने की सुविधा जोड़ी गई है. ये सुविधाएं, Android 11 में पैकेज की दिखने की सुविधा के लिए हैं.

ज़्यादा जानकारी के लिए, 4.0.1 के रिलीज़ नोट देखें.

3.4.2 (जुलाई 2019)

यह मामूली अपडेट, Android Studio 3.4.2 के साथ काम करता है. इसमें कई गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस में सुधार किए गए हैं. गड़बड़ियों को ठीक करने से जुड़ी अहम जानकारी देखने के लिए, रिलीज़ से जुड़े अपडेट वाले ब्लॉग पर जाकर, उससे जुड़ी पोस्ट पढ़ें.

3.4.1 (मई 2019)

यह मामूली अपडेट, Android Studio 3.4.1 के साथ काम करता है. इसमें कई गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस में सुधार किए गए हैं. गड़बड़ियों को ठीक करने से जुड़ी अहम जानकारी देखने के लिए, रिलीज़ से जुड़े अपडेट वाले ब्लॉग पर जाकर, उससे जुड़ी पोस्ट पढ़ें.

नई सुविधाएं

  • लिंट की जांच करने की नई डिपेंडेंसी कॉन्फ़िगरेशन: lintChecks के काम करने के तरीके में बदलाव हुआ है. साथ ही, डिपेंडेंसी से जुड़ा एक नया कॉन्फ़िगरेशन lintPublish लॉन्च किया गया है. इससे आपको यह बेहतर तरीके से कंट्रोल करने में मदद मिलेगी कि आपकी Android लाइब्रेरी में कौनसे लिंट चेक पैकेज किए जाएंगे.

    • lintChecks: यह एक मौजूदा कॉन्फ़िगरेशन है. इसका इस्तेमाल, लिंट की उन जांचों के लिए किया जाना चाहिए जिन्हें आपको सिर्फ़ प्रोजेक्ट को स्थानीय तौर पर बिल्ड करते समय चलाना है. अगर आपने पब्लिश किए गए AAR में, लिंट की जांच शामिल करने के लिए, पहले lintChecks डिपेंडेंसी कॉन्फ़िगरेशन का इस्तेमाल किया था, तो आपको उन डिपेंडेंसी को माइग्रेट करना होगा. इसके बाद, यहां बताए गए नए lintPublish कॉन्फ़िगरेशन का इस्तेमाल किया जा सकता है.
    • lintPublish: लाइब्रेरी प्रोजेक्ट में इस नए कॉन्फ़िगरेशन का इस्तेमाल करें. ऐसा उन लिंट जांच के लिए करें जिन्हें आपको पब्लिश किए गए AAR में शामिल करना है. इसके लिए, यहां दिया गया तरीका अपनाएं. इसका मतलब है कि आपकी लाइब्रेरी का इस्तेमाल करने वाले प्रोजेक्ट पर भी ये लिंट जांच लागू होती हैं.

    नीचे दिए गए कोड सैंपल में, किसी लोकल Android लाइब्रेरी प्रोजेक्ट में, डिपेंडेंसी कॉन्फ़िगरेशन के दोनों तरीकों का इस्तेमाल किया गया है.

    dependencies {
      // Executes lint checks from the ':lint' project at build time.
      lintChecks project(':lint')
      // Packages lint checks from the ':lintpublish' in the published AAR.
      lintPublish project(':lintpublish')
    }
            
    dependencies {
      // Executes lint checks from the ':lint' project at build time.
      lintChecks(project(":lint"))
      // Packages lint checks from the ':lintpublish' in the published AAR.
      lintPublish(project(":lintpublish"))
        }
            
    • आम तौर पर, पैकेजिंग और साइनिंग टास्क में बिल्ड की रफ़्तार में सुधार देखने को मिलता है. अगर आपको इन टास्क से जुड़ी परफ़ॉर्मेंस में गिरावट दिखती है, तो कृपया गड़बड़ी की शिकायत करें.

उपयोगकर्ता के व्यवहार में बदलाव

  • Android Instant Apps के फ़ीचर प्लग इन के बंद होने की चेतावनी: अगर आपने अब भी अपने झटपट ऐप्लिकेशन को बनाने के लिए, com.android.feature प्लग इन का इस्तेमाल किया है, तो Android Gradle प्लग इन 3.4.0 आपको इस प्लग इन के बंद होने की चेतावनी देगा. यह पक्का करने के लिए कि आप अब भी प्लग इन के आने वाले वर्शन पर इंस्टैंट ऐप्लिकेशन बना सकते हैं, अपने इंस्टैंट ऐप्लिकेशन को डाइनैमिक सुविधा वाले प्लगिन का इस्तेमाल करने पर माइग्रेट करें. इससे, इंस्टॉल किए गए और इंस्टैंट ऐप्लिकेशन के अनुभव एक ही Android ऐप्लिकेशन बंडल से पब्लिश किए जा सकेंगे.

  • डिफ़ॉल्ट रूप से, R8 की सुविधा चालू रहती है: R8 की मदद से, पुराने डिज़ाइन को आसानी से समझा और इस्तेमाल किया जा सकता है. इससे, आपको डिकोड करने, छोटा करने, उलझाने, ऑप्टिमाइज़ करने, और डीक्स करने जैसी सभी सुविधाएं एक ही बार में मिल जाएंगी. इस वजह से, प्रॉडक्ट की परफ़ॉर्मेंस में सुधार हुआ है. R8 को Android Gradle प्लग इन 3.3.0 में लॉन्च किया गया था. अब यह प्लग इन 3.4.0 और इसके बाद के वर्शन का इस्तेमाल करने वाले ऐप्लिकेशन और Android लाइब्रेरी, दोनों प्रोजेक्ट के लिए डिफ़ॉल्ट रूप से चालू है.

नीचे दी गई इमेज में, R8 के आने से पहले, कॉम्पाइल करने की प्रोसेस के बारे में खास जानकारी दी गई है.

R8 से पहले, ProGuard कोड को डीकोड करने और शुगर को हटाने के बाद, कॉम्पाइल करने का एक अलग चरण था.

अब R8 की मदद से, डिसुगरिंग, स्क्रिंकिंग, अस्पष्ट बनाना, ऑप्टिमाइज़ करना, और डिकोड करना (D8) ये सभी काम एक ही चरण में पूरे किए जाते हैं, जैसा कि नीचे बताया गया है.

R8 की मदद से, डेकोड करने, छोटा करने, गुप्त करने, ऑप्टिमाइज़ करने, और डिकोड करने की सभी प्रोसेस, एक ही कंपाइल चरण में पूरी की जाती हैं.

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

अगर आपको R8 का इस्तेमाल करने में समस्याएं आ रही हैं, तो R8 के साथ काम करने के बारे में अक्सर पूछे जाने वाले सवाल पढ़ें. इससे आपको पता चलेगा कि आपकी समस्या का हल मौजूद है या नहीं. अगर समस्या हल करने का तरीका दस्तावेज़ में नहीं दिया गया है, तो कृपया गड़बड़ी की शिकायत करें. अपने प्रोजेक्ट की gradle.properties फ़ाइल में, इनमें से किसी एक लाइन को जोड़कर, R8 को बंद किया जा सकता है:

      # Disables R8 for Android Library modules only.
      android.enableR8.libraries = false
      # Disables R8 for all modules.
      android.enableR8 = false
      
    

ध्यान दें: किसी दिए गए बिल्ड टाइप के लिए, अगर अपने ऐप्लिकेशन मॉड्यूल की build.gradle फ़ाइल में useProguard को false पर सेट किया जाता है, तो 'Android Gradle प्लग इन' उस बिल्ड टाइप के लिए आपके ऐप्लिकेशन के कोड को छोटा करने के लिए, R8 का इस्तेमाल करता है. भले ही, आपने प्रोजेक्ट की gradle.properties फ़ाइल में R8 को बंद किया हो या नहीं.

  • ndkCompile का इस्तेमाल नहीं किया जा सकता: अब नेटिव लाइब्रेरी को कॉम्पाइल करने के लिए, ndkBuild का इस्तेमाल करने पर आपको बिल्ड करने से जुड़ी गड़बड़ी का मैसेज दिखेगा. इसके बजाय, अपने प्रोजेक्ट में C और C++ कोड जोड़ने के लिए, आपको CMake या ndk-build का इस्तेमाल करना चाहिए.

पहले से मालूम समस्याएं

  • फ़िलहाल, यूनीक पैकेज के नाम का सही तरीके से इस्तेमाल करने की सुविधा लागू नहीं की गई है. हालांकि, प्लगिन के बाद के वर्शन के लिए, इन नामों का सही तरीके से इस्तेमाल किया जाएगा. Android Gradle प्लग इन के 3.4.0 वर्शन में, अपनी gradle.properties फ़ाइल में नीचे दी गई लाइन जोड़कर, यह जांचने के लिए ऑप्ट-इन किया जा सकता है कि आपके प्रोजेक्ट में पैकेज के ऐसे नाम इस्तेमाल किए गए हैं जो स्वीकार किए जा सकते हैं या नहीं.

              android.uniquePackageNames = true
              
            

    Android Gradle प्लग-इन की मदद से पैकेज का नाम सेट करने के बारे में ज़्यादा जानने के लिए, ऐप्लिकेशन आईडी सेट करना लेख पढ़ें.