Android Gradle प्लगिन 2.2.0 (सितंबर 2016)

डिपेंडेंसी:
सबसे पुराना वर्शन डिफ़ॉल्ट वर्शन नोट
ग्रेडल 2.14.1 2.14.1 ज़्यादा जानकारी के लिए, Gradle को अपडेट करने का तरीका देखें.
एसडीके बिल्ड टूल 23.0.2 23.0.2 इंस्टॉल करें या कॉन्फ़िगर करें एसडीके बिल्ड टूल.
नया:
  • इसमें Gradle 2.14.1 का इस्तेमाल किया गया है. इसमें परफ़ॉर्मेंस से जुड़े सुधार और नई सुविधाएं शामिल हैं. साथ ही, इसमें सुरक्षा से जुड़ी एक ऐसी गड़बड़ी को ठीक किया गया है जिसकी वजह से, Gradle डेमॉन का इस्तेमाल करते समय, स्थानीय तौर पर ज़्यादा अधिकारों का इस्तेमाल किया जा सकता था. ज़्यादा जानकारी के लिए, Gradle की रिलीज़ से जुड़े नोट देखें.
  • अब Gradle, externalNativeBuild {} DSL का इस्तेमाल करके, आपको अपने नेटिव सोर्स से लिंक करने और CMake या ndk-build का इस्तेमाल करके नेटिव लाइब्रेरी कंपाइल करने की सुविधा देता है. नेटिव लाइब्रेरी बनाने के बाद, Gradle उन्हें आपके APK में पैकेज करता है. Gradle के साथ CMake और ndk-build का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, अपने प्रोजेक्ट में C और C++ कोड जोड़ना लेख पढ़ें.
  • कमांड लाइन से बिल्ड चलाने पर, Gradle अब आपके प्रोजेक्ट के लिए ज़रूरी, एसडीके के किसी भी कॉम्पोनेंट या अपडेट को अपने-आप डाउनलोड करने की कोशिश करता है. ज़्यादा जानने के लिए, Gradle की मदद से, डाउनलोड न किए गए पैकेज अपने-आप डाउनलोड करना लेख पढ़ें.
  • कैश मेमोरी में सेव करने की एक नई सुविधा, एक्सपेरिमेंट के तौर पर उपलब्ध है. इसकी मदद से, Gradle, बिल्ड के समय को कम कर सकता है. इसके लिए, वह आपकी लाइब्रेरी के प्री-डेक्स किए गए वर्शन को पहले से डेक्स करके, सेव करके, और फिर से इस्तेमाल करता है. एक्सपेरिमेंट के तौर पर उपलब्ध इस सुविधा का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, बिल्ड कैश मेमोरी की गाइड पढ़ें.
  • बिल्ड की परफ़ॉर्मेंस को बेहतर बनाने के लिए, पैकेजिंग के लिए डिफ़ॉल्ट तौर पर इस्तेमाल होने वाली नई पाइपलाइन का इस्तेमाल किया गया है. यह पाइपलाइन, एक ही टास्क में ज़िप करने, साइन करने, और zipalign करने का काम करती है. `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 को आपके ऐप्लिकेशन की क्लास को आपकी मुख्य DEX फ़ाइल में कंपाइल करना चाहिए. Android सिस्टम, आपके ऐप्लिकेशन को शुरू करते समय, सबसे पहले मुख्य DEX फ़ाइल लोड करता है. इसलिए, मुख्य DEX फ़ाइल में कुछ क्लास को कंपाइल करके, स्टार्टअप के दौरान उन्हें प्राथमिकता दी जा सकती है. मुख्य DEX फ़ाइल के लिए, ProGuard कॉन्फ़िगरेशन फ़ाइल बनाने के बाद, buildTypes.multiDexKeepProguard का इस्तेमाल करके, Gradle को कॉन्फ़िगरेशन फ़ाइल का पाथ पास करें. इस DSL का इस्तेमाल करना, buildTypes.proguardFiles का इस्तेमाल करने से अलग है. buildTypes.proguardFiles आपके ऐप्लिकेशन के लिए, ProGuard के सामान्य नियम उपलब्ध कराता है. साथ ही, यह मुख्य DEX फ़ाइल के लिए क्लास तय नहीं करता.
  • इसमें android:extractNativeLibs फ़्लैग के लिए सहायता जोड़ी गई है. इससे, किसी डिवाइस पर ऐप्लिकेशन इंस्टॉल करने पर, उसका साइज़ कम किया जा सकता है. अपने ऐप्लिकेशन के मेनिफ़ेस्ट के <application> एलिमेंट में, इस फ़्लैग को false पर सेट करने पर, Gradle, आपकी नेटिव लाइब्रेरी के बिना कंप्रेस किए गए और अलाइन किए गए वर्शन को आपके APK के साथ पैकेज करता है. इससे, इंस्टॉल करने के दौरान,PackageManager APK से आपकी नेटिव लाइब्रेरी को डिवाइस के फ़ाइल सिस्टम में कॉपी नहीं करता. साथ ही, आपके ऐप्लिकेशन के डेल्टा अपडेट का साइज़ भी कम हो जाता है.
  • अब प्रॉडक्ट फ़्लेवर के लिए, versionNameSuffix और applicationIdSuffix तय किए जा सकते हैं. (गड़बड़ी 59614)
बदलाव:
  • getDefaultProguardFile अब Android प्लगिन के लिए, Gradle की डिफ़ॉल्ट ProGuard फ़ाइलें दिखाता है. साथ ही, अब यह Android SDK में मौजूद फ़ाइलों का इस्तेमाल नहीं करता.
  • Jack कंपाइलर की परफ़ॉर्मेंस और सुविधाओं में सुधार:
    • अब Jack, Jacoco टेस्ट कवरेज के साथ काम करता है जब testCoverageEnabled को true पर सेट किया जाता है.
    • एनोटेशन प्रोसेसर के लिए बेहतर सहायता. आपके क्लासपाथ पर मौजूद एनोटेशन प्रोसेसर, जैसे कि कोई compile डिपेंडेंसी, आपके बिल्ड पर अपने-आप लागू हो जाती हैं. अपने बिल्ड में, एनोटेशन प्रोसेसर भी तय किया जा सकता है. साथ ही, मॉड्यूल-लेवल की build.gradle फ़ाइल में javaCompileOptions.annotationProcessorOptions {} DSL का इस्तेमाल करके, आर्ग्युमेंट पास किए जा सकते हैं:

      शानदार

      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
      }
          
    • सेट किए जा सकने वाले पैरामीटर की सूची देखने के लिए, कमांड लाइन से यह कोड चलाएं:

      java -jar /build-tools/jack.jar --help-properties
      

    • डिफ़ॉल्ट तौर पर, अगर Gradle डेमॉन का हीप साइज़ कम से कम 1.5 जीबी है, तो अब Jack, Gradle की तरह ही प्रोसेस में चलता है. डेमॉन के हीप साइज़ को अडजस्ट करने के लिए, अपनी gradle.properties फ़ाइल में यह कोड जोड़ें:

      # This sets the daemon heap size to 1.5GB.
      org.gradle.jvmargs=-Xmx1536M