Android Gradle प्लगिन 3.4.0 (अप्रैल 2019)
Android प्लगिन के इस वर्शन के लिए, ये ज़रूरी शर्तें पूरी होनी चाहिए:
| सबसे पुराना वर्शन | डिफ़ॉल्ट वर्शन | नोट | |
|---|---|---|---|
| ग्रेडल | 5.1.1 | 5.1.1 | ज़्यादा जानकारी के लिए, Gradle को अपडेट करने का तरीका देखें. Gradle 5.0 और इसके बाद के वर्शन का इस्तेमाल करने पर, Gradle डेमॉन मेमोरी हीप का डिफ़ॉल्ट साइज़ 1 जीबी से घटकर 512 एमबी हो जाता है. इससे, बिल्ड की परफ़ॉर्मेंस में गिरावट आ सकती है. इस डिफ़ॉल्ट सेटिंग को बदलने के लिए, अपने प्रोजेक्ट की gradle.properties फ़ाइल में Gradle डेमॉन हीप का साइज़ तय करें. |
| एसडीके बिल्ड टूल | 28.0.3 | 28.0.3 | इंस्टॉल करें या कॉन्फ़िगर करें एसडीके बिल्ड टूल. |
इस छोटे अपडेट में, Android 11 में पैकेज की जानकारी देखने से जुड़ी नई डिफ़ॉल्ट सेटिंग और सुविधाओं के साथ काम करने के लिए सपोर्ट जोड़ा गया है.
ज़्यादा जानकारी के लिए, 4.0.1 के रिलीज़ नोट देखें.
3.4.2 (जुलाई 2019)
इस छोटे अपडेट में, Android Studio 3.4.2 के लिए सपोर्ट जोड़ा गया है. साथ ही, इसमें कई गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस में सुधार किया गया है. जिन अहम गड़बड़ियों को ठीक किया गया है उनकी सूची देखने के लिए, रिलीज़ अपडेट ब्लॉग पर इससे जुड़ी पोस्ट पढ़ें.
3.4.1 (मई 2019)
इस छोटे अपडेट में, Android Studio 3.4.1 के लिए सपोर्ट जोड़ा गया है. साथ ही, इसमें कई गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस में सुधार किया गया है. जिन अहम गड़बड़ियों को ठीक किया गया है उनकी सूची देखने के लिए, रिलीज़ अपडेट ब्लॉग पर इससे जुड़ी पोस्ट पढ़ें.
नई सुविधाएं
-
लिंट चेक डिपेंडेंसी के नए कॉन्फ़िगरेशन: `lintChecks` के काम करने के तरीके में बदलाव किया गया है. साथ ही, डिपेंडेंसी का नया कॉन्फ़िगरेशन,
lintPublishजोड़ा गया है. इससे, आपको यह तय करने का ज़्यादा कंट्रोल मिलता है कि आपकी Android लाइब्रेरी में कौनसे लिंट चेक पैकेज किए जाएं.lintChecks-
lintChecks: यह मौजूदा कॉन्फ़िगरेशन है. इसका इस्तेमाल उन लिंट चेक के लिए किया जाना चाहिए जिन्हें आपको सिर्फ़ अपने प्रोजेक्ट को स्थानीय तौर पर बनाते समय चलाना है. अगर आपने पब्लिश किए गए AAR में लिंट चेक शामिल करने के लिए, पहलेlintChecksडिपेंडेंसी कॉन्फ़िगरेशन का इस्तेमाल किया था, तो आपको उन डिपेंडेंसी को माइग्रेट करना होगा. इसके लिए, नीचे बताए गएlintPublishके नए कॉन्फ़िगरेशन का इस्तेमाल करें. -
lintPublish: लाइब्रेरी प्रोजेक्ट में, इस नए कॉन्फ़िगरेशन का इस्तेमाल उन लिंट चेक के लिए करें जिन्हें आपको पब्लिश किए गए AAR में शामिल करना है. इसके लिए, नीचे दिया गया तरीका अपनाएं. इसका मतलब है कि आपकी लाइब्रेरी का इस्तेमाल करने वाले प्रोजेक्ट भी उन लिंट चेक को लागू करते हैं.
यहां दिए गए कोड सैंपल में, स्थानीय Android लाइब्रेरी प्रोजेक्ट में डिपेंडेंसी के दोनों कॉन्फ़िगरेशन का इस्तेमाल किया गया है.
dependencies { // Executes lint checks from the ':lint' project at build time. lintChecks project(':lint') // Packages lint checks from the ':lintpublish' in the published AAR. lintPublish project(':lintpublish') }
dependencies { // Executes lint checks from the ':lint' project at build time. lintChecks(project(":lint")) // Packages lint checks from the ':lintpublish' in the published AAR. lintPublish(project(":lintpublish")) }
-
आम तौर पर, पैकेजिंग और साइन करने के टास्क में, बिल्ड स्पीड में कुल मिलाकर सुधार होना चाहिए. अगर आपको इन टास्क से जुड़ी परफ़ॉर्मेंस में गिरावट दिखती है, तो कृपया गड़बड़ी की शिकायत करें.
-
व्यवहार में बदलाव
-
Android के झटपट ऐप्लिकेशन की सुविधा देने वाले प्लगिन को बंद करने की चेतावनी: अगर अब भी
com.android.featureप्लगिन का इस्तेमाल करके, झटपट ऐप्लिकेशन बनाया जा रहा है, तो Android Gradle प्लगिन 3.4.0 आपको प्लगिन को बंद करने की चेतावनी देगा. यह पक्का करने के लिए कि प्लगिन के आने वाले वर्शन में भी झटपट ऐप्लिकेशन बनाया जा सके, अपने झटपट ऐप्लिकेशन को डाइनैमिक फ़ीचर प्लगिन पर माइग्रेट करें. इससे, इंस्टॉल किए गए और झटपट ऐप्लिकेशन, दोनों को एक ही Android ऐप्लिकेशन बंडल से पब्लिश किया जा सकता है. -
R8 डिफ़ॉल्ट रूप से चालू है: R8, डिसुगरिंग, श्रिंक करने, ऑफ़स्केट करने, ऑप्टिमाइज़ करने, और डेक्सिंग को एक ही चरण में इंटिग्रेट करता है. इससे, बिल्ड की परफ़ॉर्मेंस में काफ़ी सुधार होता है. R8 को Android Gradle प्लगिन 3.3.0 में जोड़ा गया था और अब यह प्लगिन 3.4.0 और इसके बाद के वर्शन का इस्तेमाल करने वाले ऐप्लिकेशन और Android लाइब्रेरी प्रोजेक्ट, दोनों के लिए डिफ़ॉल्ट रूप से चालू है.
नीचे दी गई इमेज में, R8 को जोड़े जाने से पहले, कंपाइल करने की प्रोसेस की खास जानकारी दी गई है.
अब R8 की मदद से, डिसुगरिंग, श्रिंक करने, ऑफ़स्केट करने, ऑप्टिमाइज़ करने, और डेक्सिंग (D8) की प्रोसेस एक ही चरण में पूरी की जाती है. इसके लिए, नीचे दी गई इमेज देखें.
ध्यान रखें कि R8 को आपके मौजूदा ProGuard नियमों के साथ काम करने के लिए डिज़ाइन किया गया है. इसलिए, R8 का फ़ायदा पाने के लिए, आपको शायद कोई कार्रवाई न करनी पड़े. हालांकि, यह ProGuard से अलग टेक्नोलॉजी है. इसे खास तौर पर Android प्रोजेक्ट के लिए डिज़ाइन किया गया है. इसलिए, श्रिंक करने और ऑप्टिमाइज़ करने की प्रोसेस में, ऐसा कोड हटाया जा सकता है जिसे ProGuard ने न हटाया हो. इसलिए, इस तरह की स्थिति में, आपको बिल्ड आउटपुट में उस कोड को बनाए रखने के लिए, अतिरिक्त नियम जोड़ने पड़ सकते हैं.
अगर आपको R8 का इस्तेमाल करने में समस्याएं आ रही हैं, तो
R8 की सुसंगतता से जुड़े अक्सर पूछे जाने वाले सवाल
पढ़ें. इससे आपको यह पता चलेगा कि आपकी समस्या का कोई समाधान है या नहीं. अगर किसी समाधान के बारे में जानकारी नहीं दी गई है,
कृपया गड़बड़ी की शिकायत करें.
R8 को बंद करने के लिए, अपने प्रोजेक्ट की
gradle.properties फ़ाइल में इनमें से कोई एक लाइन जोड़ें:
# Disables R8 for Android Library modules only.
android.enableR8.libraries = false
# Disables R8 for all modules.
android.enableR8 = false
ध्यान दें: किसी खास बिल्ड टाइप के लिए, अगर आपने अपने ऐप्लिकेशन मॉड्यूल की build.gradle फ़ाइल में useProguard को false पर सेट किया है, तो Android Gradle प्लगिन, उस बिल्ड टाइप के लिए आपके ऐप्लिकेशन के कोड को श्रिंक करने के लिए R8 का इस्तेमाल करेगा. भले ही, आपने अपने प्रोजेक्ट की gradle.properties फ़ाइल में R8 को बंद किया हो.
-
ndkCompileको बंद किया जा रहा है: अब अगर नेटिव लाइब्रेरी को कंपाइल करने के लिएndkBuildका इस्तेमाल किया जाता है, तो आपको बिल्ड की गड़बड़ी मिलेगी. इसके बजाय, आपको अपने प्रोजेक्ट में C और C++ कोड जोड़ने के लिए, CMake या ndk-build का इस्तेमाल करना चाहिए.
पहले से मालूम समस्याएं
-
फ़िलहाल, यूनीक पैकेज के नामों के सही इस्तेमाल को लागू नहीं किया जाता हालांकि, प्लगिन के बाद के वर्शन में इसे ज़्यादा सख्ती से लागू किया जाएगा. Android Gradle प्लगिन के वर्शन 3.4.0 में, यह देखने के लिए ऑप्ट-इन किया जा सकता है कि आपके प्रोजेक्ट में स्वीकार किए जा सकने वाले पैकेज के नाम तय किए गए हैं या नहीं. इसके लिए, अपनी
gradle.propertiesफ़ाइल में यह लाइन जोड़ें.android.uniquePackageNames = trueAndroid Gradle प्लगिन की मदद से पैकेज का नाम सेट करने के बारे में ज़्यादा जानने के लिए, ऐप्लिकेशन आईडी सेट करना लेख पढ़ें.