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

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

कम से कम वर्शन डिफ़ॉल्ट वर्शन नोट
Gradle 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 plugin 3.2.0 का इस्तेमाल करते समय, अपने प्रोजेक्ट की लोकल और Maven डिपेंडेंसी को नई AndroidX लाइब्रेरी का इस्तेमाल करने के लिए माइग्रेट किया जा सकता है. इसके लिए, मेन्यू बार में जाकर रीफ़ैक्टर > AndroidX पर माइग्रेट करें को चुनें. इस माइग्रेशन टूल का इस्तेमाल करने पर, आपकी gradle.properties फ़ाइल में ये फ़्लैग भी true पर सेट हो जाते हैं:

    • android.useAndroidX: true पर सेट होने पर, Android प्लगिन, Support Library के बजाय 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 के Maven repo पर उपलब्ध है. 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 API लेवल 21 या उसके बाद के वर्शन पर चलने वाले डिवाइस पर ऐप्लिकेशन का डीबग वर्शन डिप्लॉय करते समय, नेटिव मल्टीडेक्स की सुविधा चालू करते थे. अब, चाहे आपको किसी डिवाइस पर ऐप्लिकेशन डिप्लॉय करना हो या रिलीज़ के लिए कोई एपीके बनाना हो, 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)