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
फ़ाइल में यह कोड जोड़ें:ग्रूवी
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 {}
डीएसएल का इस्तेमाल करके, आर्ग्युमेंट पास किए जा सकते हैं:ग्रूवी
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
डिपेंडेंसी स्कोप का इस्तेमाल करें:ग्रूवी
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 | एसडीके बिल्ड टूल इंस्टॉल करें या कॉन्फ़िगर करें. |