इस पेज पर, Android Gradle प्लगिन (एजीपी) की प्रीव्यू रिलीज़ के लिए रिलीज़ नोट दिए गए हैं.
Android Gradle प्लगिन 9.0
Android Gradle प्लग इन 9.0, AGP का नया मेजर वर्शन है. इसमें एपीआई और व्यवहार से जुड़े बदलाव किए गए हैं.
Android Gradle प्लग इन 9.0.0-alpha11 पर अपडेट करने के लिए, Android Studio Otter 2 Feature Drop | 2025.2.2 में Android Gradle प्लग इन अपग्रेड असिस्टेंट का इस्तेमाल करें.
AGP अपग्रेड असिस्टेंट, आपके प्रोजेक्ट को अपग्रेड करते समय मौजूदा व्यवहारों को बनाए रखने में मदद करता है. इससे आपको AGP 9.0 का इस्तेमाल करने के लिए, अपने प्रोजेक्ट को अपग्रेड करने की सुविधा मिलती है. भले ही, आप AGP 9.0 में सभी नए डिफ़ॉल्ट सेटिंग को अपनाने के लिए तैयार न हों.
इनके साथ काम करता है
Android Gradle प्लग इन 9.0.0-alpha11, ज़्यादा से ज़्यादा Android API लेवल 36 के साथ काम करता है.
Android Gradle प्लग इन 9.0.0-alpha11 के लिए, Gradle 9.0.0 की ज़रूरत होती है.
कम से कम वर्शन | डिफ़ॉल्ट वर्शन | नोट | |
---|---|---|---|
Gradle | 9.0.0 | 9.0.0 | ज़्यादा जानने के लिए, Gradle को अपडेट करने का तरीका देखें. |
एसडीके बिल्ड टूल | 36.0.0 | 36.0.0 | एसडीके बिल्ड टूल इंस्टॉल करें या कॉन्फ़िगर करें. |
NDK | लागू नहीं | 28.2.13676358 | एनडीके का कोई दूसरा वर्शन इंस्टॉल करें या कॉन्फ़िगर करें. |
जेडीके | 17 | 17 | ज़्यादा जानने के लिए, जेडीके वर्शन सेट करना लेख पढ़ें. |
android
डीएसएल क्लास अब सिर्फ़ नए सार्वजनिक इंटरफ़ेस लागू करती हैं
पिछले कुछ सालों में, हमने अपने डीएसएल और एपीआई के लिए नए इंटरफ़ेस लॉन्च किए हैं. इससे यह बेहतर तरीके से कंट्रोल किया जा सकता है कि कौनसे एपीआई सार्वजनिक हैं. AGP के 7.x और 8.x वर्शन में अब भी पुराने डीएसएल टाइप (उदाहरण के लिए, BaseExtension
) का इस्तेमाल किया जाता है. इनमें नए सार्वजनिक इंटरफ़ेस भी लागू किए गए हैं, ताकि इंटरफ़ेस पर काम जारी रहने के दौरान भी कंपैटिबिलिटी बनी रहे.
AGP 9.0 में, सिर्फ़ हमारे नए डीएसएल इंटरफ़ेस का इस्तेमाल किया जाता है. साथ ही, लागू करने के तरीके को नए टाइप में बदल दिया गया है, जो पूरी तरह से छिपे हुए हैं. इससे, काम न करने वाले पुराने वैरिएंट एपीआई का ऐक्सेस भी हट जाता है.
AGP 9.0 पर अपडेट करने के लिए, आपको ये काम करने पड़ सकते हैं:
- पक्का करें कि आपका प्रोजेक्ट, पहले से मौजूद
Kotlin के साथ काम करता हो:
org.jetbrains.kotlin.android
प्लगिन, नए डीएसएल के साथ काम नहीं करता. KMP प्रोजेक्ट को Android Gradle Library Plugin for KMP पर स्विच करें:
org.jetbrains.kotlin.multiplatform
प्लगिन का इस्तेमाल,com.android.library
औरcom.android.application
प्लगिन के साथ एक ही Gradle सबप्रोजेक्ट में नहीं किया जा सकता. यह नए डीएसएल के साथ काम नहीं करता.अपनी बिल्ड फ़ाइलें अपडेट करें: इंटरफ़ेस में बदलाव करने का मकसद, डीएसएल को ज़्यादा से ज़्यादा एक जैसा रखना है. हालांकि, इसमें कुछ छोटे बदलाव हो सकते हैं.
अपने कस्टम बिल्ड लॉजिक को अपडेट करके, नए डीएसएल और एपीआई का रेफ़रंस दें: इंटरनल डीएसएल के सभी रेफ़रंस को, सार्वजनिक डीएसएल इंटरफ़ेस से बदलें. ज़्यादातर मामलों में, यह एक-से-एक रिप्लेसमेंट होगा.
applicationVariants
और इसी तरह के अन्य एपीआई की जगह, नएandroidComponents
एपीआई का इस्तेमाल करें. यह प्रोसेस ज़्यादा मुश्किल हो सकती है, क्योंकिandroidComponents
API को ज़्यादा स्थिर बनाने के लिए डिज़ाइन किया गया है, ताकि प्लगिन लंबे समय तक काम कर सकें. उदाहरणों के लिए, हमारे Gradle Recipes देखें.तीसरे पक्ष के प्लगिन अपडेट करें: ऐसा हो सकता है कि तीसरे पक्ष के कुछ प्लगिन अब भी उन इंटरफ़ेस या एपीआई पर निर्भर हों जो अब उपलब्ध नहीं हैं. उन प्लगिन के ऐसे वर्शन पर माइग्रेट करें जो AGP 9.0 के साथ काम करते हैं.
नए डीएसएल इंटरफ़ेस पर स्विच करने से, प्लगिन और Gradle बिल्ड स्क्रिप्ट को इन एपीआई का इस्तेमाल करने से रोका जा सकता है:
android ब्लॉक में बंद किया गया एपीआई |
फ़ंक्शन | प्रतिस्थापन |
---|---|---|
applicationVariants ,libraryVariants ,testVariants , औरunitTestVariants
|
AGP में नई सुविधाएं जोड़ने के लिए, प्लगिन के लिए एक्सटेंशन पॉइंट. |
इसे androidComponents.onVariants एपीआई से बदलें. उदाहरण के लिए:
androidComponents { onVariants() { variant -> variant.signingConfig .enableV1Signing.set(false) } } |
variantFilter
|
इस कुकी की मदद से, चुने गए वैरिएंट को बंद किया जा सकता है. |
इसे androidComponents.beforeVariants एपीआई से बदलें. उदाहरण के लिए:
androidComponents { beforeVariants( selector() .withBuildType("debug") .withFlavor("color", "blue") ) { variantBuilder -> variantBuilder.enable = false } } |
deviceProvider औरtestServer
|
Android डिवाइसों और एम्युलेटर पर टेस्ट चलाने के लिए, कस्टम टेस्ट एनवायरमेंट रजिस्टर करना. | Gradle मैनेज किए गए डिवाइसों पर स्विच करें. |
sdkDirectory ,ndkDirectory ,bootClasspath ,adbExecutable , औरadbExe
|
कस्टम टास्क के लिए, Android SDK के अलग-अलग कॉम्पोनेंट का इस्तेमाल करना. |
androidComponents.sdkComponents पर स्विच करें.
|
registerArtifactType ,registerBuildTypeSourceProvider ,registerProductFlavorSourceProvider ,registerJavaArtifact ,registerMultiFlavorSourceProvider , औरwrapJavaSourceSet |
यह सुविधा अब काम नहीं करती. यह सुविधा, Android Studio में जनरेट किए गए सोर्स को हैंडल करने से जुड़ी है. यह AGP 7.2.0 में काम नहीं करती. | इन एपीआई के बदले कोई दूसरी सुविधा नहीं जोड़ी गई है. |
अगर आपने AGP 9.0 पर अपडेट किया है और आपको गड़बड़ी का यह मैसेज दिखता है, तो इसका मतलब है कि आपका प्रोजेक्ट अब भी कुछ पुराने टाइप के रेफ़रंस दे रहा है:
java.lang.ClassCastException: class com.android.build.gradle.internal.dsl.ApplicationExtensionImpl$AgpDecorated_Decorated
cannot be cast to class com.android.build.gradle.BaseExtension
अगर तीसरे पक्ष के ऐसे प्लगिन की वजह से आपको ब्लॉक किया गया है जो काम नहीं करते हैं, तो आपके पास ऑप्ट आउट करने का विकल्प होता है. ऐसा करने पर, आपको डीएसएल के साथ-साथ पुराने वैरिएंट एपीआई के लिए, पुराने तरीके से लागू किए गए कोड वापस मिल जाएंगे.
ऐसा करते समय, नए इंटरफ़ेस भी उपलब्ध होते हैं. साथ ही, आपके पास अब भी अपने बिल्ड लॉजिक को नए एपीआई में अपडेट करने का विकल्प होता है. ऑप्ट आउट करने के लिए, अपनी gradle.properties
फ़ाइल में यह लाइन शामिल करें:
android.newDsl=false
AGP 9.0 पर अपग्रेड करने से पहले, नए एपीआई पर अपग्रेड किया जा सकता है. नए इंटरफ़ेस, AGP के कई वर्शन में मौजूद हैं. इसलिए, आपके पास नए और पुराने इंटरफ़ेस का मिक्सचर हो सकता है. AGP API के रेफ़रंस दस्तावेज़ों में, AGP के हर वर्शन के लिए एपीआई सर्फ़ेस दिखाया गया है. साथ ही, यह भी बताया गया है कि हर क्लास, तरीके, और फ़ील्ड को कब जोड़ा गया था.
हम 9.0 के ऐल्फ़ा फ़ेज़ के दौरान, प्लगिन बनाने वाले लोगों से संपर्क कर रहे हैं. इससे उन्हें ऐसे प्लगिन बनाने और रिलीज़ करने में मदद मिलेगी जो नए मोड के साथ पूरी तरह से काम करते हैं. साथ ही, हम Android Studio में AGP अपग्रेड असिस्टेंट को बेहतर बनाएंगे, ताकि आपको माइग्रेशन के बारे में जानकारी दी जा सके.
अगर आपको लगता है कि नए डीएसएल या वैरिएंट एपीआई में कुछ सुविधाएं या फ़ंक्शन मौजूद नहीं हैं, तो कृपया जल्द से जल्द समस्या की शिकायत करें.
Kotlin में पहले से मौजूद
Android Gradle प्लग इन 9.0 में, Kotlin के लिए पहले से मौजूद सहायता की सुविधा जोड़ी गई है. साथ ही, इसे डिफ़ॉल्ट रूप से चालू किया गया है. इसका मतलब है कि अब आपको Kotlin सोर्स फ़ाइलों को कंपाइल करने के लिए, अपनी बिल्ड फ़ाइलों में org.jetbrains.kotlin.android
(या kotlin-android
) प्लगिन लागू करने की ज़रूरत नहीं है.
इससे AGP के साथ Kotlin को इंटिग्रेट करना आसान हो जाता है. साथ ही, इससे बंद किए गए एपीआई का इस्तेमाल नहीं करना पड़ता और कुछ मामलों में परफ़ॉर्मेंस बेहतर होती है.
इसलिए, जब अपने प्रोजेक्ट को AGP 9.0 पर अपग्रेड किया जाता है, तब आपको बिल्ट-इन Kotlin पर माइग्रेट करना या ऑप्ट आउट करना होगा.
Kotlin Gradle प्लगिन 2.2.10 पर रनटाइम डिपेंडेंसी
Android Gradle प्लग इन 9.0 को Kotlin Gradle प्लग इन (KGP) 2.2.10 की ज़रूरत होती है. यह Kotlin के साथ काम करने वाले बिल्ट-इन टूल के लिए ज़रूरी कम से कम वर्शन है.
इसका मतलब है कि अगर आपने Kotlin के बिल्ट-इन वर्शन का इस्तेमाल नहीं किया है और KGP का 2.2.10 से कम वर्शन इस्तेमाल किया है, तो Gradle, KGP के वर्शन को अपने-आप 2.2.10 पर अपग्रेड कर देगा.
इसी तरह, अगर KSP का इस्तेमाल किया जा रहा है और उसका वर्शन 2.2.10-2.0.2 से कम है, तो AGP, KSP के वर्शन को 2.2.10-2.0.2 पर अपग्रेड कर देगा, ताकि वह KGP के वर्शन से मैच हो सके.
इसलिए, अगर आपको Kotlin के बिल्ट-इन वर्शन का इस्तेमाल नहीं करना है और KGP या KSP के पुराने वर्शन का इस्तेमाल करना है, तो आपको टॉप-लेवल की बिल्ड फ़ाइल में यह कोड जोड़ना होगा:
buildscript {
dependencies {
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") {
version { strictly("KGP_VERSION") }
}
classpath("com.google.devtoolsksp:symbol-processing-gradle-plugin") {
version { strictly("KSP_VERSION") }
}
}
}
टेस्ट फ़िक्चर के लिए IDE की सुविधा
AGP 9.0 में, Android Studio IDE के लिए टेस्ट फ़िक्चर की सुविधा पूरी तरह से उपलब्ध है. इस सुविधा का इस्तेमाल करने के लिए, AGP 9.0.0-alpha07 या इसके बाद के वर्शन का इस्तेमाल करें.
व्यवहार में बदलाव
Android Gradle प्लग इन 9.0 में ये नई सुविधाएं जोड़ी गई हैं:
व्यवहार | सुझाव |
---|---|
Android Gradle प्लग इन 9.0, डिफ़ॉल्ट रूप से NDK के r28c वर्शन का इस्तेमाल करता है.
|
आपको जिस NDK वर्शन का इस्तेमाल करना है उसे साफ़ तौर पर बताएं. |
Android Gradle प्लग इन 9.0 में, लाइब्रेरी का इस्तेमाल करने वाले लोगों को डिफ़ॉल्ट रूप से, कंपाइल एसडीके के एक ही या इससे ज़्यादा वर्शन का इस्तेमाल करना होता है. |
किसी लाइब्रेरी का इस्तेमाल करते समय, उसी या उससे ज़्यादा कंपाइल SDK टूल का इस्तेमाल करें.
अगर ऐसा नहीं किया जा सकता या आपको लाइब्रेरी का इस्तेमाल करने वाले लोगों को स्विच करने के लिए ज़्यादा समय देना है, तो AarMetadata.minCompileSdk को साफ़ तौर पर सेट करें.
|
AGP 9.0 में, Gradle की इन प्रॉपर्टी की डिफ़ॉल्ट वैल्यू अपडेट की गई हैं. इससे आपको अपग्रेड करते समय, AGP 8.13 के व्यवहार को बनाए रखने का विकल्प मिलता है:
प्रॉपर्टी | फ़ंक्शन | AGP 8.13 से AGP 9.0 में बदलाव | सुझाव |
---|---|---|---|
android.newDsl |
android ब्लॉक के लेगसी वर्शन को दिखाए बिना, नए डीएसएल इंटरफ़ेस का इस्तेमाल करें.इसका यह भी मतलब है कि अब लेगसी वैरिएंट एपीआई, जैसे कि android.applicationVariants
को ऐक्सेस नहीं किया जा सकता.
|
false → true |
android.newDsl=false सेट करके, ऑप्ट आउट किया जा सकता है.आपके प्रोजेक्ट में इस्तेमाल किए गए सभी प्लगिन और बिल्ड लॉजिक के साथ काम करने वाले प्लगिन उपलब्ध होने पर, ऑप्ट आउट करने की सुविधा हटा दें. |
android.builtInKotlin |
इस नीति से, Kotlin में पहले से मौजूद सुविधाएं चालू होती हैं | false → true |
अगर हो सके, तो बिल्ट-इन Kotlin पर माइग्रेट करें या ऑप्ट आउट करें. |
android.uniquePackageNames |
यह नियम लागू करता है कि हर लाइब्रेरी के लिए पैकेज का नाम अलग-अलग हो. | false → true |
अपने प्रोजेक्ट में मौजूद सभी लाइब्रेरी के लिए, पैकेज के यूनीक नाम डालें. अगर ऐसा नहीं किया जा सकता, तो माइग्रेट करते समय इस फ़्लैग को बंद किया जा सकता है. |
android.dependency.useConstraints |
यह कॉन्फ़िगरेशन के बीच, डिपेंडेंसी की शर्तों के इस्तेमाल को कंट्रोल करता है. AGP 9.0 में डिफ़ॉल्ट वैल्यू false है. यह सिर्फ़ ऐप्लिकेशन डिवाइस टेस्ट (AndroidTest) में कंस्ट्रेंट का इस्तेमाल करता है.
इसे true पर सेट करने से, 8.13 वर्शन के हिसाब से काम करने लगेगा.
|
true → false |
जब तक ज़रूरी न हो, तब तक हर जगह डिपेंडेंसी की शर्तों का इस्तेमाल न करें. इस फ़्लैग के नए डिफ़ॉल्ट को स्वीकार करने से, प्रोजेक्ट इंपोर्ट करने की प्रोसेस में ऑप्टिमाइज़ेशन भी चालू हो जाते हैं. इससे, Android लाइब्रेरी वाले कई सबप्रोजेक्ट के साथ बिल्ड इंपोर्ट करने में लगने वाला समय कम हो जाता है. |
aandroid.enableAppCompileTimeRClass |
ऐप्लिकेशन में, नॉन-फ़ाइनल आर क्लास के ख़िलाफ़ कोड कंपाइल किया जाता है. इससे ऐप्लिकेशन कंपाइलेशन, लाइब्रेरी कंपाइलेशन के मुताबिक हो जाता है. इससे इंक्रीमेंटैलिटी बेहतर होती है. साथ ही, संसाधन प्रोसेसिंग फ़्लो की परफ़ॉर्मेंस को आने वाले समय में ऑप्टिमाइज़ करने का रास्ता खुलता है. |
false → true |
कई प्रोजेक्ट, सोर्स कोड में बदलाव किए बिना ही नई सुविधा का इस्तेमाल कर सकते हैं. अगर R क्लास के फ़ील्ड का इस्तेमाल ऐसी किसी जगह पर किया जाता है जहां कॉन्स्टेंट की ज़रूरत होती है, जैसे कि स्विच केस, तो चेन किए गए if स्टेटमेंट का इस्तेमाल करने के लिए रीफ़ैक्टर करें. |
android.sdk.defaultTargetSdkToCompileSdkIfUnset |
यह ऐप्लिकेशन और टेस्ट में, टारगेट एसडीके के वर्शन के लिए डिफ़ॉल्ट वैल्यू के तौर पर, कंपाइल एसडीके के वर्शन का इस्तेमाल करता है. इस बदलाव से पहले, टारगेट SDK टूल का वर्शन डिफ़ॉल्ट रूप से SDK टूल के कम से कम लेवल वाले वर्शन पर सेट होता था. |
false → true |
ऐप्लिकेशन और टेस्ट के लिए, टारगेट SDK टूल का वर्शन साफ़ तौर पर बताएं. |
android.onlyEnableUnitTestForTheTestedBuildType |
यह सिर्फ़ टेस्ट किए गए बिल्ड टाइप के लिए यूनिट टेस्ट कॉम्पोनेंट बनाता है. डिफ़ॉल्ट प्रोजेक्ट में, इससे डीबग के लिए एक यूनिट टेस्ट मिलती है, जबकि पहले डीबग या रिलीज़ के लिए यूनिट टेस्ट की जाती थीं. |
false → true |
अगर आपके प्रोजेक्ट में, डीबग और रिलीज़, दोनों के लिए टेस्ट चलाने की ज़रूरत नहीं है, तो कोई बदलाव करने की ज़रूरत नहीं है. |
android.proguard.failOnMissingFiles |
अगर एजीपी डीएसएल में बताई गई कोई भी फ़ाइल डिस्क पर मौजूद नहीं है, तो यह विकल्प गड़बड़ी के साथ बिल्ड को पूरा नहीं होने देता. इस बदलाव से पहले, फ़ाइल के नाम में टाइप की गई गलतियों की वजह से फ़ाइलों को अनदेखा कर दिया जाता था. | false → true |
proguard.txt फ़ाइल में किए गए अमान्य एलान हटाएं |
android.r8.optimizedResourceShrinking |
इस विकल्प की मदद से, R8 को कम Android संसाधन रखने की अनुमति मिलती है. ऐसा इसलिए, क्योंकि यह क्लास और Android संसाधनों, दोनों पर एक साथ विचार करता है. | false → true |
अगर आपके प्रोजेक्ट के डेटा को सुरक्षित रखने से जुड़े नियम पहले से ही पूरे हैं, तो कोई बदलाव करने की ज़रूरत नहीं है. |
android.r8.strictFullModeForKeepRules |
इस विकल्प की मदद से, R8 को किसी क्लास को बनाए रखते समय डिफ़ॉल्ट कंस्ट्रक्टर को बनाए रखने की ज़रूरत नहीं पड़ती. इससे R8 को कम मेमोरी इस्तेमाल करने में मदद मिलती है.
इसका मतलब है कि -keep class A अब -keep class A { <init>(); } के बराबर नहीं है |
false → true |
अगर आपके प्रोजेक्ट के डेटा को सुरक्षित रखने से जुड़े नियम पहले से ही पूरे हैं, तो कोई बदलाव करने की ज़रूरत नहीं है.
बदलें -keep class A
को
-keep class A { <init>(); }
अपने प्रोजेक्ट के कीप नियमों में. ऐसा उन मामलों में करें जहां आपको डिफ़ॉल्ट कंस्ट्रक्टर को बनाए रखने की ज़रूरत है.
|
android.defaults.buildfeatures.resvalues |
यह सभी सबप्रोजेक्ट में resValues को चालू करता है
|
true → false |
resValues को सिर्फ़ उन सबप्रोजेक्ट में चालू करें जिनमें इसकी ज़रूरत है. इसके लिए, उन प्रोजेक्ट की Gradle बिल्ड फ़ाइलों में यह सेटिंग करें:
android { buildFeatures { resValues = true } } |
android.defaults.buildfeatures.shaders |
इस विकल्प से, सभी सबप्रोजेक्ट में शेडर कंपाइलेशन की सुविधा चालू हो जाती है | true → false |
सिर्फ़ उन सबप्रोजेक्ट में शेडर कंपाइलेशन चालू करें जिनमें कंपाइल किए जाने वाले शेडर मौजूद हैं. इसके लिए, उन प्रोजेक्ट की Gradle बिल्ड फ़ाइलों में यह सेटिंग करें:
android { buildFeatures { shaders = true } } |
android.r8.proguardAndroidTxt.disallowed |
AGP 9.0 में, getDefaultProguardFile() सिर्फ़ proguard-android-optimize.txt के साथ काम करेगा, न कि proguard-android.txt के साथ. ऐसा इसलिए किया जाता है, ताकि dontoptimize फ़्लैग का इस्तेमाल गलती से न हो. यह फ़्लैग, proguard-android.txt में शामिल है.
|
false → true |
अगर आपको ऑप्टिमाइज़ेशन से बचना है, तो dontoptimize का इस्तेमाल करने के साथ-साथ, कस्टम proguardFile में dontoptimize को साफ़ तौर पर बताया जा सकता है.proguard-android-optimize.txt अगर हो सके, तो इस फ़ाइल से dontoptimize फ़्लैग हटा दें. इससे R8 ऑप्टिमाइज़ेशन के फ़ायदे कम हो जाते हैं. अगर ऐसा नहीं है, तो android.r8.globalOptionsInConsumerRules.disallowed=false को सेट करके ऑप्ट आउट करें.
|
android.r8.globalOptionsInConsumerRules.disallowed |
AGP 9.0 से, Android लाइब्रेरी और सुविधा वाले मॉड्यूल को पब्लिश नहीं किया जा सकेगा. ऐसा तब होगा, जब उपभोक्ता कीप फ़ाइलों में Proguard के कॉन्फ़िगरेशन में कोई समस्या होगी. उपयोगकर्ता कीप फ़ाइलों में, dontoptimize या dontobfuscate जैसे ग्लोबल विकल्प शामिल होते हैं. इनका इस्तेमाल सिर्फ़ ऐप्लिकेशन मॉड्यूल में किया जाना चाहिए. साथ ही, इनसे लाइब्रेरी का इस्तेमाल करने वाले लोगों के लिए ऑप्टिमाइज़ेशन के फ़ायदे कम हो सकते हैं. अगर Android ऐप्लिकेशन मॉड्यूल को पहले से कंपाइल की गई किसी डिपेंडेंसी (JAR या AAR) में एम्बेड किया गया है, तो मॉड्यूल कंपाइलेशन के दौरान ऐसे ग्लोबल विकल्पों को अनदेखा कर दिया जाएगा. यह कब होता है, यह देखने के लिए configuration.txt फ़ाइल देखें. आम तौर पर, यह फ़ाइल <app_module>/build/outputs/mapping/<build_variant>/configuration.txt जैसे पाथ में होती है. इसमें इस तरह की टिप्पणियां होती हैं: # REMOVED CONSUMER RULE: dontoptimize
|
false → true |
पब्लिश की गई लाइब्रेरी में, काम न करने वाले नियमों को हटा देना चाहिए. इंटरनल लाइब्रेरी को, काम न करने वाले लेकिन ज़रूरी नियमों को ऐप्लिकेशन मॉड्यूल में proguardFile में ले जाना चाहिए. android.r8.globalOptionsInConsumerRules.disallowed=false सेट करके ऑप्ट आउट करें. जब आपकी सभी उपभोक्ता फ़ाइलें, Keep फ़ाइलों के साथ काम करने लगें, तब ऑप्ट आउट करने की सुविधा हटा दें.
|
हटाई गई सुविधाएं
Android Gradle प्लग इन 9.0 में, ये सुविधाएं हटा दी गई हैं:
- Wear OS ऐप्लिकेशन को एम्बेड करने की सुविधा
AGP 9.0 में, Wear OS ऐप्लिकेशन को एम्बेड करने की सुविधा हटा दी गई है. यह सुविधा अब Play में काम नहीं करती. इसमेंwearApp
कॉन्फ़िगरेशन औरAndroidSourceSet.wearAppConfigurationName
डीएसएल को हटाना शामिल है. Wear OS पर अपना ऐप्लिकेशन पब्लिश करने का तरीका जानने के लिए, Wear OS पर ऐप्लिकेशन उपलब्ध कराना लेख पढ़ें. androidDependencies
औरsourceSets
रिपोर्ट टास्क
बदला गया डीएसएल
Android Gradle प्लग इन 9.0 में, डीएसएल से जुड़े ये बदलाव किए गए हैं:
CommonExtension
के पैरामीटर को हटा दिया गया है.यह बदलाव सिर्फ़ सोर्स लेवल पर किया गया है, ताकि आने वाले समय में सोर्स लेवल पर होने वाले बदलावों से बचा जा सके. हालांकि, इसका यह भी मतलब है कि ब्लॉक करने के तरीकों को
CommonExtension
सेApplicationExtension
,LibraryExension
,DynamicFeatureExtension
, औरTestExtension
पर ले जाना होगा.अपने प्रोजेक्ट को AGP 9.0 पर अपग्रेड करते समय, Gradle प्लगिन कोड को फिर से फ़ैक्टर करें. यह कोड, उन पैरामीटर या ब्लॉक के तरीकों का इस्तेमाल करता है. उदाहरण के लिए, टाइप पैरामीटर को हटाने के लिए इस प्लगिन को अपडेट किया गया है. साथ ही, अब यह हटाए गए ब्लॉक के तरीकों पर निर्भर नहीं करता:
AGP 8.13
val commonExtension: CommonExtension<*, *, *, *, *, *> = extensions.getByType(CommonExtension::class) commonExtension.apply { defaultConfig { minSdk { version = release(28) } } }
AGP 9.0
val commonExtension: CommonExtension = extensions.getByType(CommonExtension::class) commonExtension.apply { defaultConfig.apply { minSdk { version = release(28) } } }
AGP के अलग-अलग वर्शन को टारगेट करने वाले प्लगिन के लिए, सीधे तौर पर getter का इस्तेमाल करना, AGP के 9.0 से पहले के वर्शन के साथ बाइनरी के तौर पर काम करता है.
डीएसएल हटाया गया
Android Gradle प्लग इन 9.0 में ये सुविधाएं हटा दी गई हैं:
AndroidSourceSet.jni
, क्योंकि यह काम नहीं कर रहा था.AndroidSourceSet.wearAppConfigurationName
, क्योंकि यह Wear OS ऐप्लिकेशन के लिए एम्बेड की गई सुविधा को हटाने से जुड़ा है.BuildType.isRenderscriptDebuggable
, क्योंकि यह काम नहीं कर रहा था.DependencyVariantSelection
. इसेDependencySelection
से बदल दिया गया है. इसेkotlin.android.localDependencySelection
के तौर पर दिखाया जाता हैInstallation.installOptions(String)
. इसेInstallation.installOptions
की बदली जा सकने वाली प्रॉपर्टी से बदल दिया गया है.एक्सपेरिमेंट के तौर पर उपलब्ध, लेकिन कभी भी स्थिर नहीं होने वाला
PostProcessing
ब्लॉक.ProductFlavor.setDimension
, जिसेdimension
प्रॉपर्टी से बदल दिया गया हैLanguageSplitOptions
, जो सिर्फ़ Google Play झटपट के लिए काम का था. हालांकि, अब यह काम नहीं करता.
हटाए गए एपीआई
Android Gradle प्लग इन 9.0 में ये सुविधाएं हटा दी गई हैं:
AndroidComponentsExtension.finalizeDSl
. इसेfinalizeDsl
से बदल दिया गया हैComponent.transformClassesWith
. इसेInstrumentation.transformClassesWith
से बदल दिया गया हैComponent.setAsmFramesComputationMode
. इसेInstrumentation.setAsmFramesComputationMode
से बदल दिया गया हैComponentBuilder.enabled
. इसकी जगहComponentBuilder.enable
ने ले ली है.DependenciesInfoBuilder.includedInApk
. इसेincludeInApk
से बदल दिया गया हैDependenciesInfoBuilder.includedInBundle
. इसेincludeInBundle
से बदल दिया गया हैGeneratesApk.targetSdkVersion
. इसेtargetSdk
से बदल दिया गया हैVariant.minSdkVersion
. इसेminSdk
से बदल दिया गया हैVariant.maxSdkVersion
. इसेmaxSdk
से बदल दिया गया हैVariant.targetSdkVersion
. इसेtargetSdk
से बदल दिया गया हैVariant.unitTest
, क्योंकि यहcom.android.test
प्लगिन पर लागू नहीं होता था.unitTest
,VariantBuilder
के सबटाइप पर उपलब्ध है. यहHasUnitTest
तक उपलब्ध है.VariantBuilder.targetSdk
औरtargetSdkPreview
, क्योंकि ये लाइब्रेरी में काम के नहीं थे. इसके बजाय,GeneratesApkBuilder.targetSdk
याGeneratesApkBuilder.targetSdkPreview
का इस्तेमाल करें.VariantBuilder.enableUnitTest
, क्योंकि यहcom.android.test
प्लगिन पर लागू नहीं होता था.enableUnitTest
,VariantBuilder
के सबटाइप पर उपलब्ध है. यहHasUnitTestBuilder
तक उपलब्ध है.VariantBuilder
केHasUnitTestBuilder
एक्सटेंड करने वाले सबटाइप पर,VariantBuilder.unitTestEnabled
को हटा दिया गया है. इसकी जगह,enableUnitTest
का इस्तेमाल किया जाएगा.VariantOutput.enable
. इसेenabled
से बदल दिया गया हैFeaturePlugin
औरFeatureExtension
के इस्तेमाल पर रोक लगा दी गई है और इन्हें बंद कर दिया गया है.बंद किए गए और बंद किए गए
BaseExtension.registerTransform
एपीआई. इनका इस्तेमाल सिर्फ़ इसलिए किया जाता था, ताकि AGP 4.2 या इससे पहले के वर्शन पर चलने वाले ऐप्लिकेशन को टारगेट करते समय, उन्हें AGP के सबसे नए वर्शन के साथ कंपाइल किया जा सके.
हटाई गई Gradle प्रॉपर्टी
शुरुआत में, इन Gradle प्रॉपर्टी को डिफ़ॉल्ट रूप से चालू की गई सुविधाओं को ग्लोबल लेवल पर बंद करने के तरीकों के तौर पर जोड़ा गया था.
AGP 8.0 या इससे पहले के वर्शन में, ये सुविधाएं डिफ़ॉल्ट रूप से बंद कर दी गई हैं. इन सुविधाओं को सिर्फ़ उन उप-प्रोजेक्ट में चालू करें जिनमें इनका इस्तेमाल किया जाता है, ताकि ज़्यादा असरदार तरीके से बनाया जा सके.
प्रॉपर्टी | फ़ंक्शन | प्रतिस्थापन |
---|---|---|
android.defaults.buildfeatures.aidl |
यह सभी सबप्रोजेक्ट में AIDL कंपाइलेशन की सुविधा चालू करता है |
सिर्फ़ उन सबप्रोजेक्ट में AIDL कंपाइलेशन चालू करें जिनमें AIDL सोर्स मौजूद हैं. इसके लिए, उन प्रोजेक्ट की Gradle बिल्ड फ़ाइलों में यह प्रॉपर्टी सेट करें:
android { buildFeatures { aidl = true } } |
android.defaults.buildfeatures.renderscript |
यह सभी सबप्रोजेक्ट में, RenderScript कंपाइलेशन को चालू करता है |
सिर्फ़ उन सबप्रोजेक्ट में renderscript कंपाइलेशन चालू करें जिनमें renderscript सोर्स मौजूद हैं. इसके लिए, उन प्रोजेक्ट की Gradle बिल्ड फ़ाइलों में यह प्रॉपर्टी सेट करें:
android { buildFeatures { renderScript = true } } |
लागू की गई Gradle प्रॉपर्टी
अगर आपने Gradle की इन प्रॉपर्टी को सेट किया है, तो AGP 9.0 में गड़बड़ी होगी.
Android Gradle प्लगिन अपग्रेड असिस्टेंट, इन प्रॉपर्टी का इस्तेमाल करने वाले प्रोजेक्ट को AGP 9.0 पर अपग्रेड नहीं करेगी.
प्रॉपर्टी | फ़ंक्शन |
---|---|
android.r8.integratedResourceShrinking |
संसाधन कम करने की प्रोसेस अब हमेशा R8 के हिस्से के तौर पर चलती है. पिछले वर्शन को हटा दिया गया है. |
ठीक की गई समस्याएं
Android Gradle प्लगिन 9.0.0-alpha10
ठीक की गई समस्याएं | ||||
---|---|---|---|---|
Android Gradle Plugin |
|
|||
लिंट |
|
Android Gradle प्लगिन 9.0.0-alpha09
ठीक की गई समस्याएं | ||||
---|---|---|---|---|
Android Gradle Plugin |
|
Android Gradle प्लगिन 9.0.0-alpha08
ठीक की गई समस्याएं | |
---|---|
AGP 9.0.0-alpha08 में, सार्वजनिक तौर पर बताई गई किसी भी समस्या को 'ठीक की गई' के तौर पर मार्क नहीं किया गया है |
Android Gradle प्लगिन 9.0.0-alpha07
ठीक की गई समस्याएं | |||||||||
---|---|---|---|---|---|---|---|---|---|
Android Gradle Plugin |
|
Android Gradle प्लगिन 9.0.0-alpha06
ठीक की गई समस्याएं | |||||
---|---|---|---|---|---|
Android Gradle Plugin |
|
||||
लिंट |
|
Android Gradle प्लगिन 9.0.0-alpha05
ठीक की गई समस्याएं | |||||
---|---|---|---|---|---|
Android Gradle Plugin |
|
||||
लिंट |
|
Android Gradle प्लगिन 9.0.0-alpha04
ठीक की गई समस्याएं | ||||
---|---|---|---|---|
Android Gradle Plugin |
|
|||
लिंट |
|
Android Gradle प्लग इन 9.0.0-alpha03
ठीक की गई समस्याएं | ||||
---|---|---|---|---|
Android Gradle Plugin |
|
|||
लिंट |
|
Android Gradle प्लग-इन 9.0.0-alpha02
ठीक की गई समस्याएं | ||||
---|---|---|---|---|
Android Gradle Plugin |
|
Android Gradle प्लगिन 9.0.0-alpha01
ठीक की गई समस्याएं | |||||||
---|---|---|---|---|---|---|---|
Android Gradle Plugin |
|