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

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

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

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

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

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

      android.enableD8=false
    

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

      android.enableIncrementalDesugaring=false.
    

झलक देखने वाले उपयोगकर्ता: अगर आपने पहले से ही D8 के झलक वाले वर्शन का इस्तेमाल किया जा रहा है, तो ध्यान दें कि अब यह JDK के बजाय, SDK टूल के साथ काम करने वाली लाइब्रेरी के हिसाब से कॉम्पाइल होता है. इसलिए, अगर 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 प्लग इन शामिल होता है.