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

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

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

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

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

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

      android.enableD8=false
    

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

      android.enableIncrementalDesugaring=false.
    

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

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

  • ऐसे कई APK बनाते समय, जिनमें से हर एक अलग एबीआई को टारगेट करता है, अब डिफ़ॉल्ट रूप से इन एबीआई के लिए APKs जनरेट नहीं करता: 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 पर निर्भर नहीं हो सकते हैं, इसलिए स्थानीय मॉड्यूल जोड़ने पर आपके इंस्ट्रुमेंट वाले टेस्ट पर डिपेंडेंसी इसके बजाय, androidTestApi कॉन्फ़िगरेशन का इस्तेमाल करें androidTestImplementation की वजह से 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 प्लगिन सब-प्रोजेक्ट के हर प्रोजेक्ट की बिल्डस्क्रिप्ट में Android प्लगिन शामिल होता है क्लासपाथ का इस्तेमाल करें.