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

डिपेंडेंसी:
कम से कम वर्शन डिफ़ॉल्ट वर्शन नोट
Gradle 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 getter को बंद कर दिया गया है. अब वैरिएंट एपीआई के ज़रिए 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 के साथ काम करने से जुड़ी समस्या ठीक की गई है, ताकि यह उन फ़ाइलों को अनदेखा कर सके जो क्लास नहीं हैं.
  • पुराने सिस्टम के साथ काम करने की सुविधा के लिए, बिल्ड के समय PNG जनरेट करने के लिए, वेक्टर ड्रॉएबल की सुविधा जोड़ी गई. 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 एट्रिब्यूट से अलग प्लैटफ़ॉर्म वर्शन सेट करने की सुविधा जोड़ी गई.