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

डिपेंडेंसी:
कम से कम वर्शन डिफ़ॉल्ट वर्शन नोट
Gradle 2.2.1 2.2.1 ज़्यादा जानने के लिए, Gradle को अपडेट करना लेख पढ़ें.
SDK टूल के लिए बिल्ड टूल 21.1.1 21.1.1 SDK Build Tools को इंस्टॉल या कॉन्फ़िगर करें.
सामान्य जानकारी:
  • Gradle के लिए Android प्लग इन में, डेटा बाइंडिंग प्लग इन को इंटिग्रेट किया गया. इसे चालू करने के लिए, प्लग इन का इस्तेमाल करने वाली हर प्रोजेक्ट build.gradle फ़ाइल में यह कोड जोड़ें:
  • android {
        dataBinding {
            enabled = true
        }
    }
            
    android {
        dataBinding {
            enabled = true
        }
    }
            
  • तीसरे पक्ष के प्लग इन को .dex फ़ाइलों में बदलने से पहले, इकट्ठा की गई .class फ़ाइलों में बदलाव करने की अनुमति देने के लिए, नया ट्रांसफ़ॉर्म एपीआई जोड़ा गया है. 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 टास्क को ऐक्सेस नहीं किया जा सकता, क्योंकि अब इसे ट्रांसफ़ॉर्म की मदद से पूरा किया जाता है. फ़िलहाल, डीईएक्स प्रोसेस को कंट्रोल करने के लिए कोई दूसरा विकल्प उपलब्ध नहीं है.
  • एसेट के लिए इंक्रीमेंटल डेटा अपलोड करने की सुविधा को ठीक किया गया.
  • जांच प्रोजेक्ट के लिए 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 प्लग इन, ऐसे हर वेक्टर ड्रॉबल के लिए PNG जनरेट करता है जो किसी ऐसी संसाधन डायरेक्ट्री में मिलता है जिसमें एपीआई वर्शन की जानकारी नहीं दी गई है या ऐप्लिकेशन मेनिफ़ेस्ट में <uses-sdk> एलिमेंट में android:minSdkVersion एट्रिब्यूट की वैल्यू 20 या उससे कम दी गई है. build.gradle फ़ाइल के defaultConfig या productFlavor सेक्शन में generatedDensities प्रॉपर्टी का इस्तेमाल करके, PNG डेंसिटी सेट की जा सकती है.
  • मॉक किए जा सकने वाले android.jar को शेयर करने की सुविधा जोड़ी गई है. प्लग इन इसे सिर्फ़ एक बार जनरेट करता है और यूनिट टेस्टिंग के लिए इस्तेमाल करता है. app और lib जैसे कई मॉड्यूल, अब इसे शेयर करते हैं. इसे फिर से जनरेट करने के लिए, $rootDir/build को मिटाएं.
  • APK को पैकेज करने के दौरान, Java रिसॉर्स की प्रोसेसिंग करने के बजाय, अब उसे कोड को बदलने से पहले प्रोसेस किया जाएगा. इस बदलाव की वजह से, पैकेज को गुप्त करने के बाद, Java रिसॉर्स को अडैप्ट करने के लिए, टास्क को गुप्त करने की सुविधा का इस्तेमाल किया जा सकता है.
  • एक्सपेरिमेंट के तौर पर उपलब्ध लाइब्रेरी प्लग इन में, Java नेटिव इंटरफ़ेस (JNI) कोड इस्तेमाल करने से जुड़ी समस्या ठीक की गई.
  • एक्सपेरिमेंटल लाइब्रेरी प्लग इन में, प्लैटफ़ॉर्म वर्शन को android:compileSdkVersion एट्रिब्यूट से अलग से सेट करने की सुविधा जोड़ी गई है.