Android Gradle प्लगिन 3.2.0 (सितंबर 2018)

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

सबसे पुराना वर्शन डिफ़ॉल्ट वर्शन नोट
ग्रेडल 4.6 4.6 ज़्यादा जानकारी के लिए, Gradle को अपडेट करने का तरीका देखें.
एसडीके बिल्ड टूल 28.0.3 28.0.3 एसडीके बिल्ड टूल इंस्टॉल करें या कॉन्फ़िगर करें.

3.2.1 (अक्टूबर 2018)

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

नई सुविधाएं

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

  • एनोटेशन प्रोसेसर का इस्तेमाल करते समय, इंक्रीमेंटल बिल्ड की स्पीड को बेहतर बनाने की सुविधा: AnnotationProcessorOptions DSL अब CommandLineArgumentProvider तक पहुंच गया है. इससे आपको या एनोटेशन प्रोसेसर के लेखक को, इंक्रीमेंटल बिल्ड प्रॉपर्टी टाइप एनोटेशन का इस्तेमाल करके, प्रोसेसर के लिए आर्ग्युमेंट को एनोटेट करने की सुविधा मिलती है. इन एनोटेशन का इस्तेमाल करने से, इंक्रीमेंटल और कैश मेमोरी में सेव किए गए क्लीन बिल्ड की परफ़ॉर्मेंस बेहतर होती है और वे ज़्यादा सटीक होते हैं. ज़्यादा जानने के लिए, एनोटेशन प्रोसेसर को पास किए जाने वाले आर्ग्युमेंट लेख पढ़ें.

  • AndroidX के लिए माइग्रेशन टूल: Android 3.2 और उसके बाद वाले वर्शन के साथ Android Gradle प्लगिन 3.2.0 का इस्तेमाल करते समय, अपने प्रोजेक्ट की लोकल और Maven डिपेंडेंसी को नई AndroidX लाइब्रेरी का इस्तेमाल करने के लिए माइग्रेट किया जा सकता है. इसके लिए, मेन्यू बार में जाकर रीफ़ैक्टर > AndroidX पर माइग्रेट करें को चुनें. इस माइग्रेशन टूल का इस्तेमाल करने पर, आपकी gradle.properties फ़ाइल में ये फ़्लैग भी true पर सेट हो जाते हैं:

    • android.useAndroidX: इसे true पर सेट करने पर, Android प्लगिन, सपोर्ट लाइब्रेरी के बजाय सही AndroidX लाइब्रेरी का इस्तेमाल करता है. अगर इस फ़्लैग को सेट नहीं किया जाता है, तो प्लगिन इसे डिफ़ॉल्ट रूप से false पर सेट कर देता है.

    • android.enableJetifier: true पर सेट होने पर, Android प्लगिन तीसरे पक्ष की मौजूदा लाइब्रेरी को अपने-आप AndroidX पर माइग्रेट कर देता है. इसके लिए, वह उनके बाइनरी कोड को फिर से लिखता है. अगर इस फ़्लैग को सेट नहीं किया जाता है, तो प्लगिन इसे डिफ़ॉल्ट रूप से false पर सेट कर देता है. इस फ़्लैग को सिर्फ़ तब true पर सेट किया जा सकता है, जब android.useAndroidX को भी true पर सेट किया गया हो. ऐसा न करने पर, आपको बिल्ड से जुड़ी गड़बड़ी दिखेगी.

      ज़्यादा जानने के लिए, AndroidX की खास जानकारी लेख पढ़ें.

  • कोड छोटा करने वाला नया टूल, R8: R8, कोड छोटा करने और उसे छिपाने वाला नया टूल है. यह ProGuard की जगह इस्तेमाल किया जाता है. R8 के प्रीव्यू वर्शन का इस्तेमाल शुरू करने के लिए, अपने प्रोजेक्ट की gradle.properties फ़ाइल में यह शामिल करें:

            android.enableR8 = true
            
            android.enableR8 = true
            

व्यवहार में हुए बदलाव

  • D8 की मदद से डिसुगरिंग की सुविधा अब डिफ़ॉल्ट रूप से चालू होती है.

  • AAPT2 अब Google की मेवन रिपो पर उपलब्ध है. AAPT2 का इस्तेमाल करने के लिए, पक्का करें कि आपकी build.gradle फ़ाइल में google() डिपेंडेंसी मौजूद हो. यह डिपेंडेंसी यहां दिखाई गई है:

              buildscript {
                    repositories {
                        google() // here
                        jcenter()
                    }
                    dependencies {
                        classpath 'com.android.tools.build:gradle:3.2.0'
                    }
                }
                allprojects {
                    repositories {
                        google() // and here
                        jcenter()
                }
              
              buildscript {
                    repositories {
                        google() // here
                        jcenter()
                    }
                    dependencies {
                        classpath 'com.android.tools.build:gradle:3.2.0'
                    }
                }
                allprojects {
                    repositories {
                        google() // and here
                        jcenter()
                }
              
  • नेटिव मल्टीडेक्स की सुविधा अब डिफ़ॉल्ट रूप से चालू रहती है. Android Studio के पिछले वर्शन में, Android एपीआई लेवल 21 या उसके बाद के वर्शन पर चलने वाले डिवाइस पर ऐप्लिकेशन का डीबग वर्शन डिप्लॉय करते समय, नेटिव मल्टीडेक्स की सुविधा चालू होती थी. अब, चाहे आपको किसी डिवाइस पर ऐप्लिकेशन डिप्लॉय करना हो या रिलीज़ के लिए APK बनाना हो, Android Gradle प्लगिन उन सभी मॉड्यूल के लिए नेटिव मल्टीडेक्स की सुविधा चालू करता है जो minSdkVersion=21 या इसके बाद के वर्शन पर सेट हैं.

  • यह प्लगिन अब protobuf प्लगिन (0.8.6), Kotlin प्लगिन (1.2.50), और Crashlytics प्लगिन (1.25.4) के कम से कम वर्शन को लागू करता है.

  • फ़ीचर मॉड्यूल प्लगिन,com.android.feature, अब मॉड्यूल का नाम तय करते समय सिर्फ़ अक्षरों, अंकों, और अंडरस्कोर का इस्तेमाल करने के लिए कहता है. उदाहरण के लिए, अगर आपके फ़ीचर मॉड्यूल के नाम में डैश शामिल हैं, तो आपको बिल्ड से जुड़ी गड़बड़ी दिखेगी. यह व्यवहार, डाइनैमिक फ़ीचर प्लगिन के व्यवहार से मेल खाता है.

गड़बड़ियां ठीक की गईं

  • डेटा बाइंडिंग की सुविधा वाले प्रोजेक्ट में, JavaCompile को अब कैश मेमोरी में सेव किया जा सकता है. (समस्या #69243050)
  • डेटा बाइंडिंग की सुविधा वाले लाइब्रेरी मॉड्यूल के लिए, बेहतर कंपाइल अवॉइडेंस. (समस्या #77539932)
  • अगर आपने बिल्ड से जुड़ी कुछ गड़बड़ियों की वजह से, पिछले वर्शन में configure-on-demand सुविधा बंद कर दी थी, तो अब इसे फिर से चालू किया जा सकता है. (समस्या #77910727)