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

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

सबसे पुराना वर्शन डिफ़ॉल्ट वर्शन नोट
ग्रेडल 4.4 4.4 ज़्यादा जानकारी के लिए, Gradle को अपडेट करने का तरीका देखें.
SDK Build Tools 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 के बजाय, SDK बिल्ड टूल में शामिल लाइब्रेरी के हिसाब से कंपाइल होता है. इसलिए, अगर JDK में मौजूद एपीआई को ऐक्सेस किया जा रहा है, लेकिन वे एसडीके बिल्ड टूल की लाइब्रेरी में मौजूद नहीं हैं, तो आपको कंपाइल करने में गड़बड़ी का मैसेज मिलेगा.

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

  • अलग-अलग एबीआई को टारगेट करने वाले कई 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 प्लगिन शामिल होता है.