Android Gradle प्लग इन 3.1.0 (मार्च 2018)
Android प्लगिन के इस वर्शन के लिए, ये ज़रूरी शर्तें पूरी होनी चाहिए:
कम से कम वर्शन | डिफ़ॉल्ट वर्शन | नोट | |
---|---|---|---|
Gradle | 4.4 | 4.4 | ज़्यादा जानने के लिए, Gradle को अपडेट करना लेख पढ़ें. |
एसडीके बिल्ड टूल | 27.0.3 | 27.0.3 | एसडीके बिल्ड टूल इंस्टॉल करें या कॉन्फ़िगर करें. ध्यान रखें कि अब आपको android.buildToolsVersion प्रॉपर्टी का इस्तेमाल करके, बिल्ड टूल के लिए वर्शन तय करने की ज़रूरत नहीं है. प्लगिन, डिफ़ॉल्ट रूप से ज़रूरी कम से कम वर्शन का इस्तेमाल करता है. |
नया DEX कंपाइलर, D8
डिफ़ॉल्ट रूप से, Android Studio अब D8 नाम के नए DEX कंपाइलर का इस्तेमाल करता है. DEX कंपाइलेशन, .class
बाइटकोड को Android रनटाइम (या Android के पुराने वर्शन के लिए Dalvik) के लिए .dex
बाइटकोड में बदलने की प्रोसेस है. DX नाम के पिछले कंपाइलर की तुलना में, D8 तेज़ी से कंपाइल करता है और छोटी DEX फ़ाइलें आउटपुट करता है. साथ ही, ऐप्लिकेशन के रनटाइम की परफ़ॉर्मेंस पहले जैसी या उससे बेहतर होती है.
D8 से, ऐप्लिकेशन डेवलपमेंट के आपके रोज़मर्रा के वर्कफ़्लो में कोई बदलाव नहीं होना चाहिए. हालांकि, अगर आपको नए कंपाइलर से जुड़ी कोई समस्या आती है, तो कृपया गड़बड़ी की शिकायत करें. D8 को कुछ समय के लिए बंद किया जा सकता है और DX का इस्तेमाल किया जा सकता है. इसके लिए, अपने प्रोजेक्ट की gradle.properties
फ़ाइल में यह शामिल करें:
android.enableD8=false
जिन प्रोजेक्ट में Java 8 की भाषा से जुड़ी सुविधाओं का इस्तेमाल किया जाता है उनमें इंक्रीमेंटल डिसुगरिंग की सुविधा डिफ़ॉल्ट रूप से चालू होती है. इसे बंद करने के लिए, अपने प्रोजेक्ट की gradle.properties
फ़ाइल में यह जानकारी दें:
android.enableIncrementalDesugaring=false.
झलक देखने वाले उपयोगकर्ता: अगर D8 के प्रीव्यू वर्शन का इस्तेमाल किया जा रहा है, तो ध्यान दें कि अब यह SDK बिल्ड टूल में शामिल लाइब्रेरी के साथ कंपाइल होता है, न कि JDK के साथ. इसलिए, अगर JDK में मौजूद एपीआई को ऐक्सेस किया जा रहा है, लेकिन SDK बिल्ड टूल लाइब्रेरी में मौजूद एपीआई को ऐक्सेस नहीं किया जा रहा है, तो आपको कंपाइल करने से जुड़ी गड़बड़ी का मैसेज मिलेगा.
व्यवहार में बदलाव
-
अलग-अलग एबीआई को टारगेट करने वाले कई APK बनाते समय, अब डिफ़ॉल्ट रूप से इन एबीआई के लिए APK जनरेट नहीं करता:
mips
,mips64
, औरarmeabi
.अगर आपको इन एबीआइ को टारगेट करने वाले APK बनाने हैं, तो आपको NDK r16b या इससे पहले के वर्शन का इस्तेमाल करना होगा. साथ ही, यहां दिखाए गए तरीके से अपनी
build.gradle
फ़ाइल में एबीआइ तय करने होंगे:splits { abi { include 'armeabi', 'mips', 'mips64' ... } }
splits { abi { include("armeabi", "mips", "mips64") ... } }
-
Android प्लगिन का बिल्ड कैश अब 30 दिन से ज़्यादा पुरानी कैश मेमोरी की एंट्री हटा देता है.
-
"auto"
कोresConfig
पर पास करने से, अब आपके APK में पैकेज करने के लिए स्ट्रिंग रिसॉर्स अपने-आप नहीं चुने जाते."auto"
का इस्तेमाल जारी रखने पर, प्लगिन आपके ऐप्लिकेशन और उसकी डिपेंडेंसी से मिलने वाले सभी स्ट्रिंग संसाधनों को पैकेज करता है. इसलिए, आपको हर उस स्थान-भाषा के बारे में बताना चाहिए जिसे आपको प्लग इन के ज़रिए अपने APK में पैकेज करना है. -
लोकल मॉड्यूल, आपके ऐप्लिकेशन के टेस्ट APK पर निर्भर नहीं हो सकते. इसलिए,
androidTestImplementation
के बजायandroidTestApi
कॉन्फ़िगरेशन का इस्तेमाल करके, इंस्ट्रुमेंट किए गए टेस्ट में डिपेंडेंसी जोड़ने पर, Gradle यह चेतावनी जारी करता है:WARNING: Configuration 'androidTestApi' is obsolete and has been replaced with 'androidTestImplementation'
WARNING: Configuration 'androidTestApi' is obsolete and has been replaced with 'androidTestImplementation'
समाधान
- इस अपडेट में, Android Studio में कंपोज़िट बिल्ड में डिपेंडेंसी को ठीक से पहचान न पाने की समस्या को ठीक किया गया है.
- इस अपडेट में, उस समस्या को ठीक किया गया है जिसमें एक ही बिल्ड में Android प्लगिन को कई बार लोड करने पर, प्रोजेक्ट सिंक करने से जुड़ी गड़बड़ी दिखती है. उदाहरण के लिए, जब कई सबप्रोजेक्ट में से हर एक में, बिल्डस्क्रिप्ट क्लासपाथ में Android प्लगिन शामिल होता है.