Android Gradle प्लगिन 2.2.0 (सितंबर 2016)
- डिपेंडेंसी:
- नया:
-
- Gradle 2.14.1 का इस्तेमाल करता है. इसमें परफ़ॉर्मेंस से जुड़े सुधार और नई सुविधाएं शामिल हैं. साथ ही, इसमें सुरक्षा से जुड़ी एक ऐसी समस्या को ठीक किया गया है जिसकी वजह से Gradle डेमॉन का इस्तेमाल करते समय, स्थानीय विशेषाधिकारों को बढ़ाया जा सकता है. ज़्यादा जानकारी के लिए, Gradle के रिलीज़ नोट देखें.
-
externalNativeBuild {}डीएसएल का इस्तेमाल करके, Gradle अब आपको अपने नेटिव सोर्स से लिंक करने और CMake या ndk-build का इस्तेमाल करके नेटिव लाइब्रेरी कंपाइल करने की सुविधा देता है. नेटिव लाइब्रेरी बनाने के बाद, Gradle उन्हें आपके APK में पैकेज करता है. Gradle के साथ CMake और ndk-build का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, अपने प्रोजेक्ट में C और C++ कोड जोड़ना लेख पढ़ें. - कमांड लाइन से बिल्ड चलाने पर, Gradle अब उन सभी एसडीके कॉम्पोनेंट या अपडेट को अपने-आप डाउनलोड करने की कोशिश करता है जिन पर आपका प्रोजेक्ट निर्भर करता है. ज़्यादा जानने के लिए, Gradle की मदद से, मौजूद नहीं हैं ऐसे पैकेज अपने-आप डाउनलोड होने की सुविधा लेख पढ़ें.
- कैशिंग की नई एक्सपेरिमेंटल सुविधा की मदद से, Gradle को बिल्ड करने में लगने वाले समय को कम किया जा सकता है. इसके लिए, यह सुविधा आपकी लाइब्रेरी के प्री-डेक्स्ड वर्शन को पहले से ही डेक्स करती है, उन्हें सेव करती है, और उनका फिर से इस्तेमाल करती है. एक्सपेरिमेंट के तौर पर उपलब्ध इस सुविधा के इस्तेमाल के बारे में ज़्यादा जानने के लिए, बिल्ड कैश गाइड पढ़ें.
- यह नई डिफ़ॉल्ट पैकेजिंग पाइपलाइन का इस्तेमाल करके, बिल्ड की परफ़ॉर्मेंस को बेहतर बनाता है. यह पाइपलाइन, एक ही टास्क में ज़िप करने, हस्ताक्षर करने, और ज़िपलाइनिंग को मैनेज करती है.
gradle.propertiesफ़ाइल मेंandroid.useOldPackaging=trueजोड़कर, पैकेजिंग के पुराने टूल का इस्तेमाल किया जा सकता है. नए पैकेजिंग टूल का इस्तेमाल करते समय,zipalignDebugटास्क उपलब्ध नहीं होता. हालांकि,createZipAlignTask(String taskName, File inputFile, File outputFile)तरीके को कॉल करके, खुद से एक बनाया जा सकता है. - अब APK साइन करने के लिए, JAR फ़ाइल को साइन करने की पारंपरिक प्रोसेस के साथ-साथ APK सिग्नेचर स्कीम v2 का भी इस्तेमाल किया जाता है. सभी Android प्लैटफ़ॉर्म पर, जनरेट किए गए APK इस्तेमाल किए जा सकते हैं. साइन करने के बाद, इन APK में कोई भी बदलाव करने से, इनके v2 सिग्नेचर अमान्य हो जाते हैं. साथ ही, इन्हें किसी डिवाइस पर इंस्टॉल नहीं किया जा सकता. इस सुविधा को बंद करने के लिए,
मॉड्यूल-लेवल की
build.gradleफ़ाइल में यह कोड जोड़ें:Groovy
android { ... signingConfigs { config { ... v2SigningEnabled false } } }
Kotlin
android { ... signingConfigs { create("config") { ... v2SigningEnabled = false } } }
- मल्टीडेक्स बिल्ड के लिए, अब ProGuard के नियमों का इस्तेमाल किया जा सकता है. इससे यह तय किया जा सकता है कि Gradle को आपके ऐप्लिकेशन की main DEX फ़ाइल में किन क्लास को कंपाइल करना चाहिए. ऐसा इसलिए होता है, क्योंकि Android सिस्टम आपके ऐप्लिकेशन को शुरू करते समय, सबसे पहले मुख्य DEX फ़ाइल लोड करता है. इसलिए, स्टार्टअप के समय कुछ क्लास को प्राथमिकता दी जा सकती है. इसके लिए, उन्हें मुख्य DEX फ़ाइल में कंपाइल करें. अपनी मुख्य DEX फ़ाइल के लिए ProGuard कॉन्फ़िगरेशन फ़ाइल बनाने के बाद,
buildTypes.multiDexKeepProguardका इस्तेमाल करके, कॉन्फ़िगरेशन फ़ाइल का पाथ Gradle को पास करें. इस डीएसएल का इस्तेमाल करना,buildTypes.proguardFilesका इस्तेमाल करने से अलग है.buildTypes.proguardFilesआपके ऐप्लिकेशन के लिए ProGuard के सामान्य नियम उपलब्ध कराता है. साथ ही, यह मुख्य DEX फ़ाइल के लिए क्लास तय नहीं करता है. android:extractNativeLibsफ़्लैग के लिए सहायता जोड़ता है. इससे किसी डिवाइस पर ऐप्लिकेशन इंस्टॉल करते समय, उसका साइज़ कम किया जा सकता है. जब इस फ़्लैग को अपने ऐप्लिकेशन मेनिफ़ेस्ट के<application>एलिमेंट मेंfalseपर सेट किया जाता है, तब Gradle, आपकी नेटिव लाइब्रेरी के बिना कंप्रेस किए गए और अलाइन किए गए वर्शन को आपके APK के साथ पैकेज करता है. इससे, इंस्टॉल करने के दौरानPackageManager, APK से आपकी नेटिव लाइब्रेरी को डिवाइस के फ़ाइल सिस्टम में कॉपी नहीं कर पाता. साथ ही, इससे आपके ऐप्लिकेशन के डेल्टा अपडेट का साइज़ कम हो जाता है.- अब प्रॉडक्ट के फ़्लेवर के लिए,
versionNameSuffixऔरapplicationIdSuffixएट्रिब्यूट की वैल्यू दी जा सकती है. (समस्या 59614)
- बदलाव:
-
-
getDefaultProguardFileअब ProGuard की डिफ़ॉल्ट फ़ाइलें दिखाता है. ये फ़ाइलें, Gradle के लिए Android प्लगिन उपलब्ध कराता है. अब यह Android SDK में मौजूद फ़ाइलों का इस्तेमाल नहीं करता. - Jack कंपाइलर की परफ़ॉर्मेंस और सुविधाओं में सुधार किया गया है:
- Jack अब Jacoco टेस्ट कवरेज के साथ काम करता है. इसके लिए,
testCoverageEnabledकोtrueपर सेट करना होगा. - एनोटेशन प्रोसेसर के लिए बेहतर सहायता. आपके क्लासपाथ पर मौजूद एनोटेशन
प्रोसेसर, जैसे कि कोई भी
compileडिपेंडेंसी, आपके बिल्ड पर अपने-आप लागू हो जाती हैं. अपने बिल्ड में एनोटेशन प्रोसेसर भी तय किया जा सकता है. साथ ही, मॉड्यूल-लेवल कीbuild.gradleफ़ाइल मेंjavaCompileOptions.annotationProcessorOptions {}डीएसएल का इस्तेमाल करके, आर्ग्युमेंट पास किए जा सकते हैं:Groovy
android { ... defaultConfig { ... javaCompileOptions { annotationProcessorOptions { className 'com.example.MyProcessor' // Arguments are optional. arguments = [ foo : 'bar' ] } } } }
Kotlin
android { ... defaultConfig { ... javaCompileOptions { annotationProcessorOptions { className = "com.example.MyProcessor" // Arguments are optional. arguments(mapOf(foo to "bar")) } } } }
अगर आपको कंपाइल करने के समय एनोटेशन प्रोसेसर लागू करना है, लेकिन उसे अपने APK में शामिल नहीं करना है, तो
annotationProcessorडिपेंडेंसी स्कोप का इस्तेमाल करें:Groovy
dependencies { compile 'com.google.dagger:dagger:2.0' annotationProcessor 'com.google.dagger:dagger-compiler:2.0' // or use buildVariantAnnotationProcessor to target a specific build variant }
Kotlin
dependencies { implementation("com.google.dagger:dagger:2.0") annotationProcessor("com.google.dagger:dagger-compiler:2.0") // or use buildVariantAnnotationProcessor to target a specific build variant }
- डिफ़ॉल्ट रूप से, अगर Gradle डेमॉन का हीप साइज़ कम से कम 1.5 जीबी है, तो Jack अब Gradle की तरह ही प्रोसेस में चलता है. डेमॉन के हीप साइज़ को अडजस्ट करने के लिए, अपनी
gradle.propertiesफ़ाइल में यह जोड़ें:# This sets the daemon heap size to 1.5GB. org.gradle.jvmargs=-Xmx1536M
सेट किए जा सकने वाले पैरामीटर की सूची देखने के लिए, कमांड लाइन में यह कमांड चलाएं:
java -jar /build-tools/jack.jar --help-properties
- Jack अब Jacoco टेस्ट कवरेज के साथ काम करता है. इसके लिए,
-
| कम से कम वर्शन | डिफ़ॉल्ट वर्शन | नोट | |
|---|---|---|---|
| Gradle | 2.14.1 | 2.14.1 | ज़्यादा जानने के लिए, Gradle को अपडेट करने का तरीका देखें. |
| एसडीके बिल्ड टूल | 23.0.2 | 23.0.2 | एसडीके बिल्ड टूल इंस्टॉल करें या कॉन्फ़िगर करें. |