Gradle के लिए Android प्लगिन, बदलाव के बाद का वर्शन 1.5.0 (नवंबर 2015)

डिपेंडेंसी:
सबसे पुराना वर्शन डिफ़ॉल्ट वर्शन नोट
ग्रेडल 2.2.1 2.2.1 ज़्यादा जानकारी के लिए, Gradle को अपडेट करने का तरीका देखें.
एसडीके बिल्ड टूल 21.1.1 21.1.1 एसडीके बिल्ड टूल को इंस्टॉल करें या कॉन्फ़िगर करें.
सामान्य नोट:
  • डेटा बाइंडिंग प्लगिन को, Gradle के लिए Android प्लगिन में इंटिग्रेट किया गया है. इसे चालू करने के लिए, हर प्रोजेक्ट के हिसाब से build.gradle फ़ाइल में यह कोड जोड़ें. यह फ़ाइल, प्लगिन का इस्तेमाल करती है:
  • android {
        dataBinding {
            enabled = true
        }
    }
            
    android {
        dataBinding {
            enabled = true
        }
    }
            
  • एक नया Transform API जोड़ा गया है, ताकि तीसरे पक्ष के प्लगिन, कंपाइल की गई .class फ़ाइलों में बदलाव कर सकें. ऐसा तब किया जा सकेगा, जब इन फ़ाइलों को .dex फ़ाइलों में बदला जाएगा. Transform API की मदद से, कस्टम क्लास में बदलाव करना आसान हो जाता है. साथ ही, यह आपको यह तय करने की ज़्यादा सुविधा देता है कि आपको किस चीज़ में बदलाव करना है. किसी बिल्ड में ट्रांसफ़ॉर्म डालने के लिए, Transform इंटरफ़ेस में से किसी एक को लागू करने वाली नई क्लास बनाएं. इसके बाद, उसे android.registerTransform(theTransform) या android.registerTransform(theTransform, dependencies) के साथ रजिस्टर करें. टास्क को एक-दूसरे से जोड़ने की ज़रूरत नहीं है. Transform API के बारे में यहां दी गई बातों का ध्यान रखें:
    • ट्रांसफ़ॉर्म को इनमें से किसी एक या उससे ज़्यादा पर लागू किया जा सकता है: मौजूदा प्रोजेक्ट, सबप्रोजेक्ट, और बाहरी लाइब्रेरी.
    • ट्रांसफ़ॉर्म को ग्लोबल लेवल पर रजिस्टर किया जाना चाहिए, ताकि उन्हें सभी वैरिएंट पर लागू किया जा सके.
    • Java Code Coverage Library (JaCoCo), ProGuard, और MultiDex के ज़रिए इंटरनल कोड प्रोसेसिंग के लिए, अब Transform API का इस्तेमाल किया जाता है. हालांकि, Java Android Compiler Kit (Jack) इस एपीआई का इस्तेमाल नहीं करता है. सिर्फ़ javac/dx कोड पाथ इसका इस्तेमाल करता है.
    • Gradle, ट्रांसफ़ॉर्म को इस क्रम में लागू करता है: JaCoCo, तीसरे पक्ष के प्लगिन, ProGuard. तीसरे पक्ष के प्लगिन के लिए, एक्ज़ीक्यूशन का क्रम वही होता है जिसमें तीसरे पक्ष के प्लगिन ट्रांसफ़ॉर्म जोड़े जाते हैं. तीसरे पक्ष के प्लगिन डेवलपर, एपीआई के ज़रिए ट्रांसफ़ॉर्म के एक्ज़ीक्यूशन के क्रम को कंट्रोल नहीं कर सकते.
  • ApplicationVariant क्लास से dex गेटर को बंद कर दिया गया है. अब वैरिएंट एपीआई के ज़रिए Dex टास्क को ऐक्सेस नहीं किया जा सकता, क्योंकि अब इसे ट्रांसफ़ॉर्म के ज़रिए पूरा किया जाता है. फ़िलहाल, dex प्रोसेस को कंट्रोल करने के लिए कोई दूसरा विकल्प उपलब्ध नहीं है.
  • ऐसेट के लिए इंक्रीमेंटल सहायता से जुड़ी समस्या ठीक की गई.
  • MultiDex के लिए बेहतर सपोर्ट उपलब्ध कराया गया है. अब यह टेस्ट प्रोजेक्ट के लिए भी उपलब्ध है. साथ ही, अब टेस्ट में com.android.support:multidex-instrumentation डिपेंडेंसी अपने-आप शामिल हो जाती है.
  • Gradle बिल्ड को सही तरीके से फ़ेल करने और गड़बड़ी की वजह की जानकारी देने की सुविधा जोड़ी गई है. ऐसा तब होता है, जब Gradle बिल्ड एसिंक्रोनस टास्क शुरू करता है और वर्कर प्रोसेस में कोई गड़बड़ी होती है.
  • ऐसे वैरिएंट में किसी खास ऐप्लिकेशन बाइनरी इंटरफ़ेस (एबीआई) को कॉन्फ़िगर करने की सुविधा जोड़ी गई है जिनमें एक से ज़्यादा एबीआई शामिल हैं.
  • टेस्ट इंस्टॉल या चलाने के दौरान, ANDROID_SERIAL एनवायरमेंट वैरिएबल के लिए, डिवाइसों के सीरियल नंबर की कॉमा लगाकर अलग की गई लिस्ट का इस्तेमाल करने की सुविधा जोड़ी गई है.
  • Android 5.0 (एपीआई लेवल 20) और इसके बाद के वर्शन पर चलने वाले डिवाइसों पर, APK का नाम स्पेस वाला होने पर, ऐप्लिकेशन इंस्टॉल न होने की समस्या ठीक की गई है.
  • Android ऐसेट पैकेजिंग टूल (AAPT) के गड़बड़ी वाले आउटपुट से जुड़ी कई समस्याओं को ठीक किया गया है.
  • इंक्रीमेंटल बिल्ड को तेज़ी से बनाने के लिए, JaCoCo इंक्रीमेंटल इंस्ट्रूमेंटेशन की सुविधा जोड़ी गई. Gradle के लिए Android प्लगिन अब सीधे तौर पर JaCoCo इंस्ट्रुमेंटर को चालू करता है. JaCoCo इंस्ट्रुमेंटर के नए वर्शन को इस्तेमाल करने के लिए, आपको इसे बिल्ड स्क्रिप्ट डिपेंडेंसी के तौर पर जोड़ना होगा.
  • JaCoCo के साथ काम करने से जुड़ी समस्या को ठीक किया गया है, ताकि यह उन फ़ाइलों को अनदेखा कर सके जो क्लास नहीं हैं.
  • पुराने सिस्टम के साथ काम करने की सुविधा के लिए, बिल्ड प्रोसेस में लगने वाले समय पर पीएनजी जनरेट करने के लिए, वेक्टर ड्रॉएबल की सुविधा जोड़ी गई. Gradle के लिए Android प्लगिन, संसाधन डायरेक्ट्री में मौजूद हर वेक्टर ड्रॉएबल के लिए पीएनजी जनरेट करता है. हालांकि, ऐसा तब होता है, जब डायरेक्ट्री में एपीआई वर्शन के बारे में जानकारी न दी गई हो या ऐप्लिकेशन मेनिफ़ेस्ट में मौजूद <uses-sdk> एलिमेंट में android:minSdkVersion एट्रिब्यूट की वैल्यू 20 या इससे कम दी गई हो. build.gradle फ़ाइल के defaultConfig या productFlavor सेक्शन में मौजूद generatedDensities प्रॉपर्टी का इस्तेमाल करके, PNG डेंसिटी सेट की जा सकती हैं.
  • मॉक किए जा सकने वाले android.jar को शेयर करने की सुविधा जोड़ी गई है. इसे प्लगिन सिर्फ़ एक बार जनरेट करता है और यूनिट टेस्टिंग के लिए इस्तेमाल करता है. अब कई मॉड्यूल, जैसे कि app और lib, इसे शेयर करते हैं. इसे फिर से जनरेट करने के लिए, $rootDir/build मिटाएं.
  • Java संसाधनों को प्रोसेस करने के तरीके में बदलाव किया गया है. अब ये संसाधन, APK पैकेजिंग के दौरान प्रोसेस होने के बजाय, ओब्फ़स्केशन टास्क से पहले प्रोसेस होंगे. इस बदलाव की वजह से, पैकेज को अस्पष्ट करने के बाद, अस्पष्ट करने से जुड़े टास्क को Java संसाधनों के हिसाब से ढालने का मौका मिलता है.
  • एक्सपेरिमेंटल लाइब्रेरी प्लगिन में Java Native Interface (JNI) कोड इस्तेमाल करने से जुड़ी समस्या ठीक की गई.
  • एक्सपेरिमेंटल लाइब्रेरी प्लगिन में, android:compileSdkVersion एट्रिब्यूट से अलग प्लैटफ़ॉर्म वर्शन सेट करने की सुविधा जोड़ी गई है.