Android Gradle प्लगिन 3.1.0 (मार्च 2018)

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

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

नया DEX कंपाइलर, D8

Android Studio अब डिफ़ॉल्ट रूप से, D8 नाम के नए DEX कंपाइलर का इस्तेमाल करता है. DEX कंपाइलेशन, .class बाइटकोड को Android रनटाइम (या Android के पुराने वर्शन के लिए Dalvik) के लिए .dex बाइटकोड में बदलने की प्रोसेस है. DX नाम के पिछले कंपाइलर की तुलना में, D8 तेज़ी से कंपाइल करता है और छोटी DEX फ़ाइलें बनाता है. साथ ही, ऐप्लिकेशन के रनटाइम की परफ़ॉर्मेंस पहले जैसी ही रहती है या बेहतर हो जाती है.

D8 से, ऐप्लिकेशन डेवलपमेंट के रोज़मर्रा के काम पर कोई असर नहीं पड़ना चाहिए. हालांकि, अगर आपको नए कंपाइलर से जुड़ी कोई समस्या आती है, तो कृपया गड़बड़ी की शिकायत करें. D8 को कुछ समय के लिए बंद किया जा सकता है और DX का इस्तेमाल किया जा सकता है. इसके लिए, अपने प्रोजेक्ट की gradle.properties फ़ाइल में यह कोड शामिल करें:

      android.enableD8=false
    

Java 8 की भाषा से जुड़ी सुविधाओं का इस्तेमाल करने वाले प्रोजेक्ट के लिए, इंक्रीमेंटल डिसुगरिंग की सुविधा डिफ़ॉल्ट रूप से चालू होती है. इसे बंद करने के लिए, अपने प्रोजेक्ट की gradle.properties फ़ाइल में यह जानकारी दें:

      android.enableIncrementalDesugaring=false.
    

प्रीव्यू वर्शन का इस्तेमाल करने वाले लोग: अगर D8 के प्रीव्यू वर्शन का इस्तेमाल किया जा रहा है, तो ध्यान दें कि अब यह एसडीके बिल्ड टूल में शामिल लाइब्रेरी के साथ कंपाइल होता है, न कि JDK के साथ. इसलिए, अगर JDK में मौजूद एपीआई को ऐक्सेस किया जा रहा है, लेकिन SDK बिल्ड टूल लाइब्रेरी में मौजूद एपीआई को ऐक्सेस नहीं किया जा रहा है, तो आपको कंपाइल करने से जुड़ी गड़बड़ी मिलेगी.

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

  • अलग-अलग एबीआई को टारगेट करने वाले कई APK बनाते समय, अब डिफ़ॉल्ट रूप से इन एबीआई के लिए APK जनरेट नहीं करता: mips, mips64, और armeabi.

    अगर आपको इन एबीआइ को टारगेट करने वाले APK बनाने हैं, तो आपको NDK r16b या इससे पहले के वर्शन का इस्तेमाल करना होगा. साथ ही, आपको अपनी build.gradle फ़ाइल में एबीआइ के बारे में बताना होगा. इसके लिए, यहां दिया गया तरीका अपनाएं:

              splits {
                  abi {
                      include 'armeabi', 'mips', 'mips64'
                      ...
                  }
              }
            
              splits {
                  abi {
                      include("armeabi", "mips", "mips64")
                      ...
                  }
              }
            
  • Android प्लगिन का बिल्ड कैश अब 30 दिन से ज़्यादा पुरानी कैश एंट्री हटा देता है.

  • "auto" को resConfig पर पास करने से, अब आपके APK में पैकेज करने के लिए स्ट्रिंग रिसॉर्स अपने-आप नहीं चुने जाते. "auto" का इस्तेमाल जारी रखने पर, प्लगिन आपके ऐप्लिकेशन और उसकी डिपेंडेंसी के सभी स्ट्रिंग रिसॉर्स को पैकेज करता है. इसलिए, आपको हर उस स्थान-भाषा के बारे में बताना चाहिए जिसे आपको प्लग इन के ज़रिए अपने APK में पैकेज करना है.

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

            WARNING: Configuration 'androidTestApi' is obsolete
            and has been replaced with 'androidTestImplementation'
            
            WARNING: Configuration 'androidTestApi' is obsolete
            and has been replaced with 'androidTestImplementation'
            

समाधान

  • इस अपडेट में, उस समस्या को ठीक किया गया है जिसमें Android Studio, कंपोज़िट बिल्ड में डिपेंडेंसी को सही तरीके से नहीं पहचान पाता था.
  • इस अपडेट में, प्रोजेक्ट सिंक करने से जुड़ी एक समस्या को ठीक किया गया है. यह समस्या तब होती है, जब किसी एक बिल्ड में Android प्लगिन को कई बार लोड किया जाता है. उदाहरण के लिए, जब कई सबप्रोजेक्ट में से हर एक में, Android प्लगिन को अपने buildscript classpath में शामिल किया जाता है.