यहां Android Studio 3.6 और इससे पुराने वर्शन, और Android Gradle प्लग इन 3.6.0 और इससे पुराने वर्शन के रिलीज़ नोट दिए गए हैं.
Android Studio के पुराने वर्शन
3.6 (फ़रवरी 2020)
Android Studio 3.6 एक मुख्य रिलीज़ है. इसमें कई नई सुविधाएं और सुधार शामिल हैं.
हम उन सभी कम्यूनिटी में योगदान देने वाले लोगों का भी धन्यवाद करना चाहते हैं जिन्होंने इस रिलीज़ में मदद की है.
3.6.3 (अप्रैल 2020)
इस छोटे अपडेट में कई गड़बड़ियां ठीक की गई हैं. गड़बड़ियों को ठीक करने से जुड़ी खास जानकारी देखने के लिए, रिलीज़ से जुड़े अपडेट वाले ब्लॉग पर जाएं.
3.6.2 (मार्च 2020)
इस छोटे अपडेट में कई गड़बड़ियां ठीक की गई हैं. गड़बड़ियों को ठीक करने से जुड़ी खास जानकारी देखने के लिए, रिलीज़ से जुड़े अपडेट वाले ब्लॉग पर जाकर, उससे जुड़ी पोस्ट पढ़ें.
3.6.1 (फ़रवरी 2020)
इस छोटे अपडेट में कई गड़बड़ियां ठीक की गई हैं. गड़बड़ियों को ठीक करने से जुड़ी खास जानकारी देखने के लिए, रिलीज़ से जुड़े अपडेट वाले ब्लॉग पर जाएं.
डिज़ाइन टूल
Android Studio के इस वर्शन में, कई डिज़ाइन टूल के अपडेट शामिल हैं. इनमें लेआउट एडिटर और रिसॉर्स मैनेजर भी शामिल हैं.
डिज़ाइन एडिटर में स्प्लिट व्यू और ज़ूम इन करना
इस रिलीज़ में, विज़ुअल डिज़ाइन एडिटर के लिए ये अपडेट शामिल हैं:
-
लेआउट एडिटर और नेविगेशन एडिटर जैसे डिज़ाइन एडिटर अब एक स्प्लिट व्यू उपलब्ध कराते हैं. इसकी मदद से, एक ही समय में अपने यूज़र इंटरफ़ेस (यूआई) के डिज़ाइन और कोड व्यू देखे जा सकते हैं. एडिटर विंडो के सबसे ऊपर दाएं कोने में, अब व्यू के विकल्पों के बीच टॉगल करने के लिए तीन बटन मौजूद हैं:
- स्प्लिट व्यू चालू करने के लिए, स्प्लिट करें आइकॉन पर क्लिक करें.
- एक्सएमएल सोर्स व्यू चालू करने के लिए, सोर्स आइकॉन पर क्लिक करें.
- डिज़ाइन व्यू चालू करने के लिए, डिज़ाइन आइकॉन पर क्लिक करें.
-
डिज़ाइन एडिटर में ज़ूम इन और पैन करने के कंट्रोल, एडिटर विंडो के सबसे नीचे दाएं कोने में मौजूद फ़्लोटिंग पैनल में ले जाए गए हैं.
ज़्यादा जानने के लिए, लेआउट एडिटर की मदद से यूज़र इंटरफ़ेस (यूआई) बनाना लेख पढ़ें.
कलर पिकर का संसाधन टैब
एक्सएमएल या डिज़ाइन टूल में कलर पिकर का इस्तेमाल करते समय, अपने ऐप्लिकेशन में कलर रिसॉर्स की वैल्यू को तेज़ी से अपडेट करने में आपकी मदद करने के लिए, IDE अब आपके लिए कलर रिसॉर्स की वैल्यू अपने-आप भरता है.
रिसोर्स मैनेजर
संसाधन मैनेजर में ये अपडेट शामिल हैं:
- रिसॉर्स मैनेजर अब ज़्यादातर तरह के रिसॉर्स के साथ काम करता है.
- किसी संसाधन को खोजने पर, संसाधन मैनेजर अब सभी प्रोजेक्ट मॉड्यूल के नतीजे दिखाता है. पहले, खोज करने पर सिर्फ़ चुने गए मॉड्यूल के नतीजे दिखते थे.
- फ़िल्टर बटन की मदद से, डिपेंडेंट लोकल मॉड्यूल, बाहरी लाइब्रेरी, और Android फ़्रेमवर्क के संसाधन देखे जा सकते हैं. फ़िल्टर का इस्तेमाल करके, थीम के एट्रिब्यूट भी दिखाए जा सकते हैं.
- अब इंपोर्ट करने की प्रोसेस के दौरान, संसाधनों का नाम बदला जा सकता है. इसके लिए, संसाधन के ऊपर मौजूद टेक्स्ट बॉक्स पर क्लिक करें.
ज़्यादा जानने के लिए, Resource Manager की मदद से अपने ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) के संसाधन मैनेज करना लेख पढ़ें.
Android Gradle प्लग इन से जुड़े अपडेट
Android Gradle प्लग इन के नए वर्शन में कई अपडेट शामिल हैं. जैसे, बिल्ड की स्पीड को ऑप्टिमाइज़ करने की सुविधा, Maven पब्लिशिंग प्लग इन के साथ काम करने की सुविधा, और व्यू बाइंडिंग की सुविधा. ज़्यादा जानने के लिए, रिलीज़ की पूरी जानकारी पढ़ें.
बाइंडिंग देखना
व्यू बाइंडिंग की मदद से, हर एक्सएमएल लेआउट फ़ाइल के लिए बाइंडिंग क्लास जनरेट करके, व्यू के साथ इंटरैक्ट करने वाला कोड आसानी से लिखा जा सकता है. इन क्लास में, उन सभी व्यू के डायरेक्ट रेफ़रंस होते हैं जिनके लेआउट में आईडी होता है.
व्यू बाइंडिंग, findViewById()
की जगह लेती है. इसलिए, इससे अमान्य व्यू आईडी की वजह से, नल पॉइंटर एक्ससेप्शन का जोखिम कम हो जाता है.
व्यू बाइंडिंग चालू करने के लिए, आपको Android Gradle प्लग इन के 3.6.0 या इसके बाद के वर्शन का इस्तेमाल करना होगा. साथ ही, हर मॉड्यूल की build.gradle
फ़ाइल में ये शामिल करने होंगे:
Groovy
android { buildFeatures.viewBinding = true }
Kotlin
android { buildFeatures.viewBinding = true }
बदलाव लागू करें
अब आपके पास एक क्लास जोड़ने और फिर उस कोड में किए गए बदलाव को अपने ऐप्लिकेशन में डिप्लॉय करने का विकल्प है. इसके लिए, कोड में बदलाव लागू करें या बदलाव लागू करें और गतिविधि को फिर से शुरू करें पर क्लिक करें.
इन दोनों कार्रवाइयों के बीच के अंतर के बारे में ज़्यादा जानने के लिए, बदलाव लागू करें लेख पढ़ें.
इंस्टैंट ऐप्लिकेशन की सुविधा चालू करने के लिए, मेन्यू के विकल्प को फिर से तैयार करना
ऐप्लिकेशन प्रोजेक्ट बनाने के बाद, अब अपने बेस मॉड्यूल को कभी भी तुरंत चालू किया जा सकता है. इसके लिए, यह तरीका अपनाएं:
- मेन्यू बार से व्यू > टूल विंडो > प्रोजेक्ट चुनकर, प्रोजेक्ट पैनल खोलें.
- अपने बेस मॉड्यूल पर राइट क्लिक करें. आम तौर पर, इसका नाम 'ऐप्लिकेशन' होता है. इसके बाद, Refactor > Instant Apps की सुविधा चालू करें को चुनें.
- इसके बाद, दिखने वाले डायलॉग बॉक्स में, ड्रॉपडाउन मेन्यू से अपना बेस मॉड्यूल चुनें.
- ठीक है पर क्लिक करें.
ध्यान दें:नया प्रोजेक्ट बनाएं विज़र्ड से, अपने बुनियादी ऐप्लिकेशन मॉड्यूल को तुरंत चालू करने का विकल्प हटा दिया गया है.
ज़्यादा जानने के लिए, Google Play Instant की खास जानकारी पढ़ें.
APK ऐनालाइज़र में क्लास और मेथड के बाइटकोड को डिकोड करना
DEX फ़ाइलों की जांच करने के लिए, APK विश्लेषक का इस्तेमाल करते समय, क्लास और मेथड के बाइटकोड को इस तरह डिकोड किया जा सकता है:
- मेन्यू बार से, बिल्ड करें > APK का विश्लेषण करें चुनें.
- इसके बाद, आपको एक डायलॉग बॉक्स दिखेगा. इसमें उस APK पर जाएं जिसकी आपको जांच करनी है और उसे चुनें.
- खोलें पर क्लिक करें.
- APK विश्लेषक में, वह DEX फ़ाइल चुनें जिसकी आपको जांच करनी है.
- DEX फ़ाइल व्यूअर में, उस APK के लिए ProGuard मैपिंग फ़ाइल को लोड करें जिसका विश्लेषण किया जा रहा है.
- जिस क्लास या तरीके की जांच करनी है उस पर राइट क्लिक करें और बाइटकोड दिखाएं को चुनें.
नेटिव टूल
यहां दिए गए अपडेट, Android Studio में नेटिव (C/C++) डेवलपमेंट के साथ काम करते हैं.
Kotlin के लिए सहायता
Android Studio में NDK की ये सुविधाएं, पहले Java में काम करती थीं. अब ये सुविधाएं Kotlin में भी काम करती हैं:
-
JNI एलान से, C/C++ में लागू करने वाले फ़ंक्शन पर जाएं. मैनेज की गई सोर्स कोड फ़ाइल में लाइन नंबर के पास मौजूद C या C++ आइटम मार्कर पर कर्सर घुमाकर, यह मैपिंग देखें.
-
JNI एलान के लिए, स्टब लागू करने वाला फ़ंक्शन अपने-आप बनाएं. सबसे पहले JNI एलान तय करें. इसके बाद, चालू करने के लिए C/C++ फ़ाइल में “jni” या तरीका का नाम टाइप करें.
-
इस्तेमाल नहीं किए गए नेटिव फ़ंक्शन, सोर्स कोड में चेतावनी के तौर पर हाइलाइट किए जाते हैं. जिन JNI एलान को लागू नहीं किया गया है उन्हें भी गड़बड़ी के तौर पर हाइलाइट किया जाता है.
-
नेटिव तरीके से लागू किए जाने वाले किसी फ़ंक्शन का नाम बदलने (फिर से बनाने) पर, उससे जुड़े सभी JNI एलान अपडेट हो जाते हैं. किसी JNI एलान का नाम बदलें, ताकि नेटिव लागू करने वाले फ़ंक्शन को अपडेट किया जा सके.
-
इंप्लीसिटली-बाउंड JNI लागू करने के लिए, हस्ताक्षर की जांच करना.
JNI में किए गए अन्य सुधार
Android Studio में मौजूद कोड एडिटर, अब JNI डेवलपमेंट वर्कफ़्लो के साथ बेहतर तरीके से काम करता है. इसमें बेहतर टाइप हिंट, अपने-आप पूरा होने की सुविधा, जांच, और कोड रीफ़ैक्टर करने की सुविधा शामिल है.
नेटिव लाइब्रेरी के लिए APK को फिर से लोड करना {:#3.6-reload-apk}
अब आपको अपने प्रोजेक्ट में मौजूद APK को IDE के बाहर अपडेट करने के लिए, नया प्रोजेक्ट बनाने की ज़रूरत नहीं है. Android Studio, APK में हुए बदलावों का पता लगाता है और आपको इसे फिर से इंपोर्ट करने का विकल्प देता है.
सिर्फ़ Kotlin वाले APK सोर्स अटैच करना
अब पहले से बने APKs की प्रोफ़ाइल बनाने और उन्हें डीबग करने के दौरान, सिर्फ़ Kotlin वाले बाहरी APK सोर्स अटैच किए जा सकते हैं. ज़्यादा जानने के लिए, Kotlin/Java सोर्स अटैच करना लेख पढ़ें.
मेमोरी प्रोफ़ाइलर में लीक का पता लगाना
मेमोरी प्रोफ़ाइलर में हीप डंप का विश्लेषण करते समय, अब उस प्रोफ़ाइलिंग डेटा को फ़िल्टर किया जा सकता है जिसके बारे में Android Studio को लगता है कि वह आपके ऐप्लिकेशन में Activity
और Fragment
इंस्टेंस के लिए, मेमोरी लीक का संकेत दे सकता है.
फ़िल्टर में इस तरह का डेटा दिखता है:
-
Activity
के ऐसे इंस्टेंस जिन्हें मिटा दिया गया है, लेकिन अब भी उनका रेफ़रंस दिया जा रहा है. -
Fragment
ऐसे उदाहरण जिनमें मान्यFragmentManager
नहीं है, लेकिन फिर भी उनका रेफ़रंस दिया जा रहा है.
सिर्फ़ Kotlin वाले APK सोर्स अटैच करना
अब पहले से बने APKs की प्रोफ़ाइल बनाने और उन्हें डीबग करने के दौरान, सिर्फ़ Kotlin वाले बाहरी APK सोर्स अटैच किए जा सकते हैं. ज़्यादा जानने के लिए, Kotlin/Java सोर्स अटैच करना लेख पढ़ें.
मेमोरी प्रोफ़ाइलर में लीक का पता लगाना
मेमोरी प्रोफ़ाइलर में हीप डंप का विश्लेषण करते समय, अब उस प्रोफ़ाइलिंग डेटा को फ़िल्टर किया जा सकता है जिसके बारे में Android Studio को लगता है कि वह आपके ऐप्लिकेशन में Activity
और Fragment
इंस्टेंस के लिए, मेमोरी लीक का संकेत दे सकता है.
फ़िल्टर में इस तरह का डेटा दिखता है:
-
Activity
के ऐसे इंस्टेंस जिन्हें मिटा दिया गया है, लेकिन अब भी उनका रेफ़रंस दिया जा रहा है. -
Fragment
ऐसे इंस्टेंस जिनमें मान्यFragmentManager
नहीं है, लेकिन जिनका रेफ़रंस दिया जा रहा है.
कुछ मामलों में, फ़िल्टर गलत नतीजे दिखा सकता है. जैसे:
Fragment
बनाया गया है, लेकिन इसका इस्तेमाल अब तक नहीं किया गया है.Fragment
को कैश मेमोरी में सेव किया जा रहा है, लेकिन किसीFragmentTransaction
के हिस्से के तौर पर नहीं.
इस सुविधा का इस्तेमाल करने के लिए, पहले Android Studio में हीप डंप कैप्चर करें या हीप डंप फ़ाइल इंपोर्ट करें. मेमोरी लीक करने वाले फ़्रैगमेंट और गतिविधियों को दिखाने के लिए, मेमोरी प्रोफ़ाइलर के ढेर के डंप पैनल में, गतिविधि/फ़्रैगमेंट लीक चेकबॉक्स चुनें.
एम्युलेटर
Android Studio 3.6 की मदद से, Android Emulator 29.2.7 और इसके बाद के वर्शन में शामिल कई अपडेट का फ़ायदा लिया जा सकता है. इन अपडेट के बारे में यहां बताया गया है.
जगह की जानकारी से जुड़ी बेहतर सहायता
Android Emulator 29.2.7 और इसके बाद के वर्शन में, जीपीएस निर्देशांक और रास्ते की जानकारी को एमुलेट करने के लिए ज़्यादा सहायता मिलती है. एम्युलेटर के बेहतर कंट्रोल खोलने पर, जगह की जानकारी वाले टैब में मौजूद विकल्प अब दो टैब में व्यवस्थित किए गए हैं: सिंगल पॉइंट और रास्ते.
सिंगल पॉइंट
सिंगल पॉइंट टैब में, Google Maps वेबव्यू का इस्तेमाल करके, अपनी पसंद के पॉइंट खोजे जा सकते हैं. ठीक उसी तरह जैसे फ़ोन या ब्राउज़र पर Google Maps का इस्तेमाल करते समय किया जाता है. मैप में कोई जगह खोजने या उस पर क्लिक करने पर, मैप के सबसे नीचे मौजूद 'जगह सेव करें' को चुनकर, उस जगह को सेव किया जा सकता है. आपकी सभी सेव की गई जगहें, ज़्यादा कंट्रोल विंडो की दाईं ओर दी गई सूची में दिखती हैं.
एम्युलेटर की जगह को मैप पर चुनी गई जगह पर सेट करने के लिए, एक्सटेंडेड कंट्रोल विंडो के सबसे नीचे दाईं ओर मौजूद, जगह सेट करें बटन पर क्लिक करें.
.
रास्ते
एक पॉइंट टैब की तरह ही, रास्ते टैब में भी Google Maps का वेबव्यू मिलता है. इसका इस्तेमाल करके, दो या उससे ज़्यादा जगहों के बीच रास्ता बनाया जा सकता है. कोई रास्ता बनाने और सेव करने के लिए, यह तरीका अपनाएं:
- मैप व्यू में, अपने रास्ते के पहले डेस्टिनेशन को खोजने के लिए टेक्स्ट फ़ील्ड का इस्तेमाल करें.
- खोज के नतीजों में से जगह चुनें.
- नेविगेट करें बटन को चुनें.
- मैप से अपने रास्ते का शुरुआती पॉइंट चुनें.
- (ज़रूरी नहीं) अपने रास्ते में और स्टॉप जोड़ने के लिए, डेस्टिनेशन जोड़ें पर क्लिक करें.
- मैप व्यू में, रास्ता सेव करें पर क्लिक करके अपना रास्ता सेव करें.
- रास्ते का नाम डालें और सेव करें पर क्लिक करें.
सेव किए गए रास्ते के हिसाब से, एमुलेटर को सिम्युलेट करने के लिए, सेव किए गए रास्ते की सूची से रास्ता चुनें. इसके बाद, बड़े किए गए कंट्रोल विंडो के सबसे नीचे दाईं ओर, रास्ता चलाएं पर क्लिक करें. सिम्युलेशन को रोकने के लिए, रास्ता बंद करें पर क्लिक करें.
.
तय किए गए रूट के हिसाब से, एमुलेटर को लगातार सिम्युलेट करने के लिए, वीडियो दोहराएं के बगल में मौजूद स्विच को चालू करें. एमुलेटर के तय किए गए रास्ते को कितनी तेज़ी से फ़ॉलो करना है, यह बदलने के लिए वीडियो चलाने की स्पीड ड्रॉपडाउन से कोई विकल्प चुनें.
मल्टी-डिसप्ले की सुविधा
Android Emulator की मदद से, अब अपने ऐप्लिकेशन को कई डिसप्ले पर डिप्लॉय किया जा सकता है. ये डिसप्ले, पसंद के मुताबिक डाइमेंशन के साथ काम करते हैं. साथ ही, इनकी मदद से मल्टी-विंडो और मल्टी-डिसप्ले की सुविधा वाले ऐप्लिकेशन की जांच की जा सकती है. वर्चुअल डिवाइस के चलने के दौरान, दो अतिरिक्त डिसप्ले जोड़े जा सकते हैं. इसके लिए, यह तरीका अपनाएं:
-
बेहतर कंट्रोल खोलें और डिसप्ले टैब पर जाएं.
-
सेकंडरी डिसप्ले जोड़ें पर क्लिक करके, दूसरा डिसप्ले जोड़ें.
-
सेकंडरी डिसप्ले में मौजूद ड्रॉपडाउन मेन्यू में जाकर, इनमें से कोई एक काम करें:
-
पहले से तय किए गए आसपेक्ट रेशियो में से कोई एक चुनना
-
कस्टम चुनें और अपने कस्टम डिसप्ले के लिए ऊंचाई, चौड़ाई, और डीपीआई सेट करें.
-
(ज़रूरी नहीं) तीसरा डिसप्ले जोड़ने के लिए, सेकंडरी डिसप्ले जोड़ें पर क्लिक करें.
-
चल रहे वर्चुअल डिवाइस में, चुने गए डिसप्ले जोड़ने के लिए, बदलाव लागू करें पर क्लिक करें.
Android Automotive OS के लिए नए वर्चुअल डिवाइस और प्रोजेक्ट टेंप्लेट
Android Studio का इस्तेमाल करके नया प्रोजेक्ट बनाते समय, अब नया प्रोजेक्ट बनाएं विज़र्ड में वाहन संबंधित टैब में जाकर, तीन टेंप्लेट में से किसी एक को चुना जा सकता है: कोई गतिविधि नहीं, मीडिया सेवा, और मैसेज सेवा. मौजूदा प्रोजेक्ट के लिए, Android Automotive डिवाइसों के साथ काम करने की सुविधा जोड़ी जा सकती है. इसके लिए, मेन्यू बार से फ़ाइल > नया > नया मॉड्यूल चुनें. इसके बाद, Automotive मॉड्यूल चुनें. इसके बाद, नया मॉड्यूल बनाएं विज़र्ड, Android Automotive प्रोजेक्ट के किसी टेंप्लेट का इस्तेमाल करके, नया मॉड्यूल बनाने के लिए आपकी मदद करता है.
.
इसके अलावा, अब आपके पास Android Automotive OS डिवाइसों के लिए, Android वर्चुअल डिवाइस (AVD) बनाने का विकल्प है. इसके लिए, वर्चुअल डिवाइस कॉन्फ़िगरेशन विज़र्ड के Automotive टैब में जाकर, इनमें से कोई एक विकल्प चुनें.
- Polestar 2: ऐसा एवीडी बनाएं जो Polestar 2 के हेड यूनिट की नकल करता हो.
- वाहन (1024 पिक्सल वाला लैंडस्केप): सामान्य 1024 x 768 पिक्सल वाली Android Automotive हेड यूनिट के लिए एक AVD बनाएं.
.
SDK टूल को फिर से शुरू करके डाउनलोड करना
SDK मैनेजर का इस्तेमाल करके SDK टूल और कॉम्पोनेंट डाउनलोड करते समय, Android Studio अब आपको डाउनलोड को फिर से शुरू करने की सुविधा देता है. इससे, डाउनलोड को फिर से शुरू करने के लिए, शुरुआत से फिर से डाउनलोड करने की ज़रूरत नहीं पड़ती. ऐसा, नेटवर्क से जुड़ी समस्या की वजह से डाउनलोड रुकने पर किया जा सकता है. यह बेहतर सुविधा, खास तौर पर बड़े डाउनलोड के लिए मददगार होती है. जैसे, Android इम्यूलेटर या सिस्टम इमेज. ऐसा तब होता है, जब इंटरनेट कनेक्शन सही से काम न कर रहा हो.
इसके अलावा, अगर बैकग्राउंड में SDK टूल डाउनलोड करने का कोई टास्क चल रहा है, तो अब आपके पास स्टेटस बार में दिए गए कंट्रोल का इस्तेमाल करके, डाउनलोड को रोकने या फिर से शुरू करने का विकल्प है.
Win32 अब काम नहीं करता
Android Studio के Windows के 32-बिट वर्शन के लिए, दिसंबर 2019 के बाद अपडेट उपलब्ध नहीं होंगे. साथ ही, दिसंबर 2020 के बाद इस वर्शन के लिए सहायता भी उपलब्ध नहीं होगी. Android Studio का इस्तेमाल जारी रखा जा सकता है. हालांकि, ज़्यादा अपडेट पाने के लिए, अपने वर्कस्टेशन को Windows के 64-बिट वर्शन पर अपग्रेड करें.
ज़्यादा जानने के लिए, Windows 32-बिट के इस्तेमाल में कमी से जुड़ा ब्लॉग पढ़ें
Gradle के सिंक होने में लगने वाले समय को ऑप्टिमाइज़ करने के लिए नया विकल्प
पिछले रिलीज़ में, Android Studio, Gradle सिंक के दौरान सभी Gradle टास्क की सूची हासिल करता था. बड़े प्रोजेक्ट के लिए, टास्क की सूची को वापस पाने पर, सिंक होने में ज़्यादा समय लग सकता है.
Gradle सिंक की परफ़ॉर्मेंस को बेहतर बनाने के लिए, फ़ाइल > सेटिंग > एक्सपेरिमेंटल पर जाएं और Gradle सिंक के दौरान, Gradle टास्क की सूची न बनाएं को चुनें.
इस विकल्प को चालू करने पर, Android Studio सिंक के दौरान टास्क की सूची बनाने से बचता है. इससे Gradle सिंक तेज़ी से पूरा होता है और यूज़र इंटरफ़ेस (यूआई) की परफ़ॉर्मेंस बेहतर होती है. ध्यान रखें कि जब IDE, टास्क की सूची बनाने की प्रोसेस को छोड़ देता है, तो Gradle पैनल में टास्क की सूचियां खाली हो जाती हैं. साथ ही, बिल्ड फ़ाइलों में टास्क के नाम का अपने-आप पूरा होना काम नहीं करता.
Gradle के ऑफ़लाइन मोड को टॉगल करने के लिए नई जगह
Gradle के ऑफ़लाइन मोड को चालू या बंद करने के लिए, सबसे पहले मेन्यू बार से व्यू > टूल विंडो > Gradle चुनें. इसके बाद, Gradle विंडो के सबसे ऊपर, ऑफ़लाइन मोड टॉगल करें पर क्लिक करें.
IntelliJ IDEA 2019.2
Android Studio के मुख्य IDE को अपडेट किया गया है. इसमें 2019.2 रिलीज़ के ज़रिए, IntelliJ IDEA के सुधारों को शामिल किया गया है.
IntelliJ के अन्य वर्शन में किए गए सुधारों के बारे में ज़्यादा जानने के लिए, यहां दिए गए पेज देखें. ये सुधार, 2019.2 वर्शन में भी शामिल किए गए हैं:
कम्यूनिटी कॉन्ट्रिब्यूटर
कम्यूनिटी में योगदान देने वाले सभी लोगों का धन्यवाद. इनकी मदद से, हमने Android Studio 3.6 में मौजूद गड़बड़ियों को ढूंढा है. साथ ही, इसे बेहतर बनाने के अन्य तरीकों के बारे में भी जाना है. खास तौर पर, हम उन लोगों का धन्यवाद करना चाहते हैं जिन्होंने गड़बड़ियों की शिकायत की:
|
|
|
3.5 (अगस्त 2019)
Android Studio 3.5 एक मेजर रिलीज़ है और यह Project Marble का नतीजा है. Android Studio 3.3 के रिलीज़ होने के बाद, Project Marble इनिशिएटिव के तहत कई रिलीज़ हुई हैं. इनमें IDE के तीन मुख्य हिस्सों को बेहतर बनाने पर फ़ोकस किया गया है: सिस्टम की परफ़ॉर्मेंस, सुविधाओं को बेहतर बनाना, और गड़बड़ियों को ठीक करना.
Project Marble के इन और अन्य अपडेट के बारे में जानने के लिए, Android Developers ब्लॉग पोस्ट या नीचे दिए गए सेक्शन पढ़ें.
हम उन सभी कम्यूनिटी में योगदान देने वाले लोगों का भी शुक्रिया करना चाहते हैं जिन्होंने इस रिलीज़ में मदद की है.
3.5.3 (दिसंबर 2019)
इस छोटे अपडेट में, कई गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस को बेहतर बनाया गया है.
3.5.2 (नवंबर 2019)
इस छोटे अपडेट में, कई गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस को बेहतर बनाया गया है. गड़बड़ियों को ठीक करने से जुड़ी खास जानकारी देखने के लिए, रिलीज़ से जुड़े अपडेट वाले ब्लॉग पर जाएं.
3.5.1 (अक्टूबर 2019)
इस छोटे अपडेट में, कई गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस को बेहतर बनाया गया है. गड़बड़ियों को ठीक करने से जुड़ी अहम जानकारी देखने के लिए, रिलीज़ से जुड़े अपडेट वाले ब्लॉग पर जाएं.
Project Marble: सिस्टम की परफ़ॉर्मेंस
इस सेक्शन में, Android Studio 3.5 में हुए उन बदलावों के बारे में बताया गया है जिनका मकसद, सिस्टम की परफ़ॉर्मेंस को बेहतर बनाना है.
मेमोरी की सुझाई गई सेटिंग
अगर Android Studio को पता चलता है कि आपके डिवाइस के ऑपरेटिंग सिस्टम (ओएस) में ज़्यादा से ज़्यादा रैम उपलब्ध कराने पर, Android Studio की परफ़ॉर्मेंस को बेहतर बनाया जा सकता है, तो वह आपको इसकी सूचना देगा. ओएस को Android Studio की प्रोसेस के लिए ज़्यादा से ज़्यादा रैम उपलब्ध कराने की ज़रूरत होती है. जैसे, कोर आईडीई, Gradle डेमन, और Kotlin डेमन. आपके पास, सूचना में दिए गए ऐक्शन लिंक पर क्लिक करके, सुझाई गई सेटिंग को स्वीकार करने का विकल्प है. इसके अलावा, फ़ाइल > सेटिंग (या macOS पर Android Studio > प्राथमिकताएं) को चुनकर, इन सेटिंग में मैन्युअल रूप से बदलाव किया जा सकता है. इसके बाद, दिखने का तरीका और व्यवहार > सिस्टम सेटिंग में जाकर, मेमोरी सेटिंग सेक्शन ढूंढें. ज़्यादा जानने के लिए, ज़्यादा से ज़्यादा हेप साइज़ देखें.
मेमोरी के इस्तेमाल की रिपोर्ट
Android Studio में मेमोरी से जुड़ी समस्याओं को दोहराना और उनके बारे में बताना कभी-कभी मुश्किल होता है. इस समस्या को हल करने के लिए, Android Studio में मेन्यू बार से सहायता > मेमोरी के इस्तेमाल का विश्लेषण करें पर क्लिक करके, मेमोरी के इस्तेमाल की रिपोर्ट जनरेट की जा सकती है. ऐसा करने पर, IDE निजी जानकारी को हटा देता है. इसके बाद, आपसे पूछा जाता है कि क्या आपको इसे Android Studio टीम को भेजना है, ताकि मेमोरी से जुड़ी समस्याओं के सोर्स की पहचान की जा सके. ज़्यादा जानने के लिए, मेमोरी के इस्तेमाल की रिपोर्ट चलाना लेख पढ़ें.
Windows: एंटीवायरस फ़ाइल I/O ऑप्टिमाइज़ेशन
Android Studio अब अपने-आप यह जांच करता है कि कुछ प्रोजेक्ट डायरेक्ट्री को रियल-टाइम में एंटीवायरस स्कैनिंग से बाहर रखा गया है या नहीं. जब बाइनरी के रिलीज़ होने की परफ़ॉर्मेंस को बेहतर बनाने के लिए बदलाव किए जा सकते हैं, तो Android Studio आपको इसकी सूचना देता है. साथ ही, एंटीवायरस कॉन्फ़िगरेशन को ऑप्टिमाइज़ करने का तरीका भी बताता है. ज़्यादा जानने के लिए, बिल्ड की स्पीड पर एंटीवायरस सॉफ़्टवेयर के असर को कम करना लेख पढ़ें.
Project Marble: सुविधा को बेहतर बनाना
इस सेक्शन में, Android Studio 3.5 में किए गए उन बदलावों के बारे में बताया गया है जिनका मकसद, मौजूदा सुविधाओं को बेहतर बनाना है.
बदलाव लागू करें
'बदलाव लागू करें' सुविधा की मदद से, ऐप्लिकेशन को रीस्टार्ट किए बिना, अपने ऐप्लिकेशन में कोड और संसाधन में बदलाव किए जा सकते हैं. साथ ही, कुछ मामलों में, मौजूदा गतिविधि को रीस्टार्ट किए बिना भी ऐसा किया जा सकता है. 'बदलाव लागू करें' सुविधा, आपके ऐप्लिकेशन की स्थिति को बनाए रखने के लिए एक नया तरीका अपनाती है. 'झटपट चलाएं' सुविधा, आपके APK के बाइटकोड को फिर से लिखती है. इसके उलट, बदलाव लागू करें सुविधा, Android 8.0 (एपीआई लेवल 26) या इसके बाद के वर्शन में काम करने वाले रनटाइम इंस्ट्रूमेंटेशन का इस्तेमाल करके, क्लास को फ़्लाइट पर फिर से परिभाषित करती है.
ज़्यादा जानने के लिए, बदलाव लागू करना लेख पढ़ें.
ऐप्लिकेशन डिप्लॉयमेंट का फ़्लो
IDE में एक नया ड्रॉप-डाउन मेन्यू है. इसकी मदद से, यह तुरंत चुना जा सकता है कि आपको अपने ऐप्लिकेशन को किस डिवाइस पर डिप्लॉय करना है. इस मेन्यू में एक नया विकल्प भी शामिल है. इसकी मदद से, एक साथ कई डिवाइसों पर ऐप्लिकेशन चलाया जा सकता है.
Gradle सिंक और कैश मेमोरी का पता लगाने की सुविधा को बेहतर बनाया गया
अब IDE, Gradle के समय-समय पर आपके बिल्ड कैश को मिटाने का पता बेहतर तरीके से लगाता है. इससे, हार्ड डिस्क का इस्तेमाल कम होता है. पिछले वर्शन में, इस स्थिति की वजह से IDE, डिपेंडेंसी मौजूद न होने की रिपोर्ट दिखाता था और Gradle सिंक नहीं हो पाता था. अब आईडीई, ज़रूरत के हिसाब से डिपेंडेंसी डाउनलोड करता है, ताकि Gradle सिंक की प्रोसेस पूरी हो सके.
बिल्ड से जुड़ी गड़बड़ी का बेहतर आउटपुट
बिल्ड विंडो में, अब गड़बड़ी की बेहतर रिपोर्टिंग की सुविधा मिलती है. जैसे, रिपोर्ट की गई गड़बड़ी की फ़ाइल और लाइन का लिंक, जो इन बिल्ड प्रोसेस के लिए उपलब्ध है:
- AAPT कंपाइलेशन और लिंकिंग
- R8 और ProGuard
- डेक्सिंग
- रिसॉर्स मर्ज करना
- एक्सएमएल फ़ाइल पार्स करना
- Javac, Kotlinc, और CMake कंपाइलेशन
प्रोजेक्ट अपग्रेड करना
अपडेट करने का बेहतर अनुभव, ताकि आपको ज़्यादा जानकारी और कार्रवाइयां मिल सकें. इससे आपको IDE और Android Gradle प्लग इन को अपडेट करने में मदद मिलेगी. उदाहरण के लिए, सिंक और बिल्ड करने से जुड़ी ज़्यादा गड़बड़ियों में ऐसी कार्रवाइयां शामिल होती हैं जिनसे अपडेट करते समय गड़बड़ियों को कम करने में मदद मिलती है.
यह ध्यान रखना ज़रूरी है कि IDE को Android Gradle प्लग इन जैसे अन्य कॉम्पोनेंट से अलग से अपडेट किया जा सकता है. इसलिए, नया वर्शन उपलब्ध होते ही IDE को सुरक्षित तरीके से अपडेट किया जा सकता है. साथ ही, अन्य कॉम्पोनेंट को बाद में अपडेट किया जा सकता है.
लेआउट एडिटर
Android Studio 3.5 में, लेआउट विज़ुअलाइज़ेशन, मैनेजमेंट, और इंटरैक्शन को बेहतर बनाने के लिए कई सुधार किए गए हैं.
ConstraintLayout
का इस्तेमाल करने पर, एट्रिब्यूट पैनल में एक नया सीमाएं सेक्शन दिखता है. इसमें, चुने गए यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट की सीमाओं के संबंध की सूची होती है. डिज़ाइन के प्लैटफ़ॉर्म या पाबंदियों की सूची से कोई पाबंदी चुनी जा सकती है, ताकि दोनों जगहों पर पाबंदी को हाइलाइट किया जा सके.
इसी तरह, अब किसी शर्त को चुनकर और
Delete
बटन दबाकर उसे मिटाया जा सकता है. Control
बटन (macOS पर Command
) को दबाकर और
शर्त के ऐंकर पर क्लिक करके भी शर्त को मिटाया जा सकता है. ध्यान दें कि Control
या
Command
बटन को दबाकर किसी ऐंकर पर कर्सर घुमाने पर, उससे जुड़ी सभी पाबंदियां
लाल हो जाती हैं. इससे पता चलता है कि उन्हें मिटाने के लिए क्लिक किया जा सकता है.
कोई व्यू चुनने के बाद, एट्रिब्यूट पैनल के कंस्ट्रेंट विजेट सेक्शन में मौजूद किसी भी + आइकॉन पर क्लिक करके, कंस्ट्रेंट बनाया जा सकता है. इसकी जानकारी यहां दी गई इमेज में दी गई है. नई पाबंदी बनाने पर, लेआउट एडिटर अब पाबंदी को चुनता है और हाइलाइट करता है. इससे, आपने जो कुछ जोड़ा है उसके बारे में तुरंत विज़ुअल फ़ीडबैक मिलता है.
कंस्ट्रेंट बनाते समय, लेआउट एडिटर अब सिर्फ़ उन ऐंकर बिंदुओं को दिखाता है जिन पर कंस्ट्रेंट लगाया जा सकता है. पहले, लेआउट एडिटर सभी व्यू पर सभी ऐंकर पॉइंट को हाइलाइट करता था. भले ही, उन पर कंस्ट्रेन्ट लगाया जा सकता हो या नहीं. इसके अलावा, अब नीले रंग का ओवरले, पाबंदी के टारगेट को हाइलाइट करता है. यह हाइलाइट करने की सुविधा, किसी ऐसे कॉम्पोनेंट पर पाबंदी लगाने के लिए खास तौर पर मददगार होती है जो किसी दूसरे कॉम्पोनेंट के साथ ओवरलैप होता है.
ऊपर दिए गए अपडेट के अलावा, Android Studio 3.5 में लेआउट एडिटर में ये सुधार भी किए गए हैं:
- कंस्ट्रेंट विजेट और डिफ़ॉल्ट मार्जिन ड्रॉप-डाउन की मदद से, अब मार्जिन के लिए डाइमेंशन संसाधनों का इस्तेमाल किया जा सकता है.
- लेआउट एडिटर टूलबार में, डिवाइसों की सूची को अपडेट किया गया है. इससे डिज़ाइन के प्लैटफ़ॉर्म का साइज़ तय होता है. इसके अलावा, साइज़ बदलते समय स्नैप करने की सुविधा को बेहतर बनाया गया है. साथ ही, डिज़ाइन के प्लैटफ़ॉर्म पर साइज़ बदलने वाले हैंडल अब हमेशा दिखते हैं. साइज़ बदलने पर, नए ओवरले दिखते हैं. इनमें डिवाइस के सामान्य साइज़ दिखते हैं.
- लेआउट एडिटर में एक नई कलर स्कीम है, जो कॉम्पोनेंट, टेक्स्ट, और कंस्ट्रेंट के बीच के कंट्रास्ट को कम करती है और एक जैसा रंग इस्तेमाल करने में मदद करती है.
- ब्लूप्रिंट मोड में अब कुछ ऐसे कॉम्पोनेंट के लिए टेक्स्ट की सुविधा शामिल है जिनमें टेक्स्ट नहीं दिख रहा था.
इन बदलावों के बारे में ज़्यादा जानने के लिए, Android Studio Project Marble: लेआउट एडिटर देखें.
डेटा बाइंडिंग
डेटा बाइंडिंग के लिए एनोटेशन प्रोसेसिंग की सुविधा जोड़ने के अलावा, IDE, एक्सएमएल में डेटा बाइंडिंग एक्सप्रेशन बनाते समय स्मार्ट एडिटर की सुविधाओं और परफ़ॉर्मेंस को बेहतर बनाता है.
C/C++ प्रोजेक्ट के लिए बेहतर सहायता
Android Studio 3.5 में कई बदलाव किए गए हैं. इनसे C/C++ प्रोजेक्ट के लिए सहायता बेहतर हुई है.
एक वैरिएंट सिंक करने के लिए, 'वैरिएंट बनाएं' पैनल में किए गए सुधार
अब बिल्ड वैरिएंट पैनल में, ऐक्टिव बिल्ड वैरिएंट और ऐक्टिव एबीआई, दोनों की जानकारी दी जा सकती है. इस सुविधा की मदद से, हर मॉड्यूल के लिए बिल्ड कॉन्फ़िगरेशन को आसानी से सेट किया जा सकता है. साथ ही, Gradle सिंक की परफ़ॉर्मेंस को भी बेहतर बनाया जा सकता है.
ज़्यादा जानने के लिए, बिल्ड वैरिएंट बदलना लेख पढ़ें.
NDK के साथ-साथ चलने वाले वर्शन
अब NDK के कई वर्शन एक साथ इस्तेमाल किए जा सकते हैं. इस सुविधा की मदद से, प्रोजेक्ट को कॉन्फ़िगर करने में आपको ज़्यादा सुविधा मिलती है. उदाहरण के लिए, अगर आपके पास एक ही मशीन पर NDK के अलग-अलग वर्शन का इस्तेमाल करने वाले प्रोजेक्ट हैं.
अगर आपके प्रोजेक्ट में Android Gradle प्लग इन 3.5.0 या इसके बाद का वर्शन इस्तेमाल किया जा रहा है, तो आपके पास यह तय करने का विकल्प भी होता है कि आपके प्रोजेक्ट के हर मॉड्यूल में NDK का कौनसा वर्शन इस्तेमाल किया जाए. इस सुविधा का इस्तेमाल, फिर से बनाए जा सकने वाले बिल्ड बनाने और NDK वर्शन और Android Gradle प्लग इन के बीच काम न करने की समस्या को कम करने के लिए किया जा सकता है.
ज़्यादा जानने के लिए, NDK, CMake, और LLDB इंस्टॉल और कॉन्फ़िगर करना लेख पढ़ें.
ChromeOS सहायता
Android Studio अब आधिकारिक तौर पर ChromeOS डिवाइसों पर काम करता है. जैसे, HP Chromebook x360 14, Acer Chromebook 13/Spin 13 वगैरह. इनके बारे में ज़्यादा जानने के लिए, सिस्टम की ज़रूरी शर्तें लेख पढ़ें. शुरू करने के लिए, अपने काम करने वाले ChromeOS डिवाइस पर Android Studio डाउनलोड करें और इंस्टॉल करने के निर्देशों का पालन करें.
ध्यान दें: फ़िलहाल, ChromeOS पर Android Studio की मदद से, ऐप्लिकेशन को सिर्फ़ कनेक्ट किए गए हार्डवेयर डिवाइस पर डिप्लॉय किया जा सकता है. ज़्यादा जानने के लिए, हार्डवेयर डिवाइस पर ऐप्लिकेशन चलाना लेख पढ़ें.
फ़ीचर मॉड्यूल के लिए, शर्तों के साथ डिलीवरी
शर्तों के हिसाब से डिलीवरी की सुविधा की मदद से, डिवाइस कॉन्फ़िगरेशन से जुड़ी कुछ ज़रूरी शर्तें सेट की जा सकती हैं. इससे, ऐप्लिकेशन इंस्टॉल करने के दौरान, सुविधा वाले मॉड्यूल अपने-आप डाउनलोड हो जाते हैं. उदाहरण के लिए, ऐसा फ़ीचर मॉड्यूल कॉन्फ़िगर किया जा सकता है जिसमें ऑगमेंटेड रिएलिटी (एआर) की सुविधा शामिल हो. यह सुविधा, ऐप्लिकेशन इंस्टॉल करने के दौरान सिर्फ़ उन डिवाइसों के लिए उपलब्ध होनी चाहिए जिन पर एआर काम करता हो.
डिलीवरी के इस तरीके की मदद से, फ़िलहाल ऐप्लिकेशन इंस्टॉल करने के समय किसी मॉड्यूल को डाउनलोड करने की सुविधा को कंट्रोल किया जा सकता है. इसके लिए, डिवाइस के इन कॉन्फ़िगरेशन का इस्तेमाल किया जाता है:
- डिवाइस के हार्डवेयर और सॉफ़्टवेयर की सुविधाएं. इनमें OpenGL ES वर्शन भी शामिल है
- उपयोगकर्ता का देश
- API स्तर
अगर कोई डिवाइस, आपके तय किए गए सभी ज़रूरी शर्तों को पूरा नहीं करता है, तो ऐप्लिकेशन इंस्टॉल करने के समय मॉड्यूल डाउनलोड नहीं किया जाता. हालांकि, आपका ऐप्लिकेशन बाद में, Play Core लाइब्रेरी का इस्तेमाल करके, ज़रूरत पड़ने पर मॉड्यूल डाउनलोड करने का अनुरोध कर सकता है. ज़्यादा जानने के लिए, पढ़ें शर्तों के हिसाब से डिलीवरी कॉन्फ़िगर करना.
IntelliJ IDEA 2019.1
Android Studio के मुख्य IDE को अपडेट किया गया है. इसमें 2019.1 रिलीज़ के ज़रिए, IntelliJ IDEA के सुधारों को शामिल किया गया है. जैसे, थीम को पसंद के मुताबिक बनाना.
Android Studio के साथ शामिल किया गया IntelliJ का पिछला वर्शन 2018.3.4 था. Android Studio के इस रिलीज़ में, IntelliJ के अन्य वर्शन में किए गए सुधारों के बारे में ज़्यादा जानने के लिए, गड़बड़ी ठीक करने से जुड़े इन अपडेट देखें:
- IntelliJ IDEA 2018.3.6{: .external-link}
- IntelliJ IDEA 2018.3.5{: .external-link}
Android Gradle प्लग इन 3.5.0 के अपडेट
Android Gradle प्लग इन 3.5.0 में क्या नया है, इस बारे में जानने के लिए, इसके रिलीज़ नोट देखें. जैसे, एनोटेशन की प्रोसेसिंग को बेहतर बनाने और कैश मेमोरी में सेव की जा सकने वाली यूनिट टेस्ट के लिए बेहतर सहायता.
कम्यूनिटी कॉन्ट्रिब्यूटर
हमारी कम्यूनिटी में योगदान देने वाले सभी लोगों का धन्यवाद. इन लोगों ने हमें Android Studio 3.5 में मौजूद गड़बड़ियों का पता लगाने और इसे बेहतर बनाने के अन्य तरीकों के बारे में बताने में मदद की है. खास तौर पर, हम P0 और P1 बग की शिकायत करने वाले इन लोगों का धन्यवाद करना चाहते हैं:
|
|
|
3.4 (अप्रैल 2019)
Android Studio 3.4 एक मुख्य रिलीज़ है. इसमें कई नई सुविधाएं और सुधार शामिल हैं.
3.4.2 (जुलाई 2019)
इस छोटे अपडेट में, कई गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस को बेहतर बनाया गया है. गड़बड़ियों को ठीक करने से जुड़ी खास जानकारी देखने के लिए, रिलीज़ से जुड़े अपडेट वाले ब्लॉग पर जाएं.
3.4.1 (मई 2019)
इस छोटे अपडेट में, कई गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस को बेहतर बनाया गया है. गड़बड़ियों को ठीक करने से जुड़ी खास जानकारी देखने के लिए, रिलीज़ से जुड़े अपडेट वाले ब्लॉग पर जाएं.
3.4.0 में पहले से मौजूद समस्याएं
Android Q बीटा वर्शन पर चलने वाले डिवाइस पर ऐप्लिकेशन को डिप्लॉय करने पर, प्रोफ़ाइलिंग की सुविधा बंद हो जाती है.
- डेटा बाइंडिंग लाइब्रेरी का इस्तेमाल करते समय,
LiveDataListener.onChanged()
काम न कर सकता है और एनपीई (नॉन-पैरामीटर एरर) दिख सकता है. इस समस्या को ठीक करने का तरीका, Android Studio 3.4.1 में शामिल किया जाएगा. यह तरीका, Android Studio 3.5 के सबसे नए प्रीव्यू वर्शन में पहले से ही उपलब्ध है. ( समस्या #122066788 देखें)
IntelliJ IDEA 2018.3.4
Android Studio के मुख्य IDE को अपडेट किया गया है. इसमें, 2018.3.4 रिलीज़ के ज़रिए, IntelliJ IDEA के सुधारों को शामिल किया गया है.
Android Gradle प्लग इन 3.4.0 के अपडेट
Android Gradle प्लग इन 3.4.0 में क्या नया है, इस बारे में जानने के लिए, इसके रिलीज़ नोट देखें.
प्रोजेक्ट के नए स्ट्रक्चर का डायलॉग
प्रोजेक्ट स्ट्रक्चर डायलॉग (पीएसडी) की नई सुविधा की मदद से, डिपेंडेंसी को अपडेट करना और अपने प्रोजेक्ट के अलग-अलग हिस्सों को कॉन्फ़िगर करना आसान हो जाता है. जैसे, मॉड्यूल, बिल्ड वैरिएंट, हस्ताक्षर करने के कॉन्फ़िगरेशन, और बिल्ड वैरिएबल.
मेन्यू बार में जाकर, फ़ाइल > प्रोजेक्ट स्ट्रक्चर को चुनकर, PSD फ़ाइल खोली जा सकती है. Windows और Linux पर Ctrl+Shift+Alt+S
या macOS पर Command+;
(सेमीकोलन) दबाकर भी PSD फ़ाइल खोली जा सकती है. यहां PSD के कुछ नए और अपडेट किए गए सेक्शन के बारे में जानकारी दी गई है.
वैरिएबल
PSD के नए वैरिएबल सेक्शन की मदद से, बिल्ड वैरिएबल बनाए और मैनेज किए जा सकते हैं. जैसे, अपने प्रोजेक्ट में डिपेंडेंसी के वर्शन नंबर को एक जैसा बनाए रखने के लिए.
- अपने प्रोजेक्ट की Gradle बिल्ड स्क्रिप्ट में पहले से मौजूद बिल्ड वैरिएबल तुरंत देखें और उनमें बदलाव करें.
- सीधे PSD से, प्रोजेक्ट या मॉड्यूल-लेवल पर नए बिल्ड वैरिएबल जोड़ें.
ध्यान दें: अगर आपकी मौजूदा बिल्ड कॉन्फ़िगरेशन फ़ाइलें, जटिल Groovy स्क्रिप्ट के ज़रिए वैल्यू असाइन करती हैं, तो हो सकता है कि आप PSD के ज़रिए उन वैल्यू में बदलाव न कर पाएं. इसके अलावा, PSD का इस्तेमाल करके, Kotlin में लिखी गई बाइल्ड फ़ाइलों में बदलाव नहीं किया जा सकता.
मॉड्यूल
किसी मौजूदा
मॉड्यूल में, सभी बिल्ड वैरिएंट पर लागू होने वाली प्रॉपर्टी कॉन्फ़िगर करें या मॉड्यूल सेक्शन से अपने प्रोजेक्ट में नए मॉड्यूल जोड़ें. उदाहरण के लिए, यहां defaultConfig
प्रॉपर्टी कॉन्फ़िगर की जा सकती हैं या हस्ताक्षर करने के कॉन्फ़िगरेशन मैनेज किए जा सकते हैं.
डिपेंडेंसी
अपने प्रोजेक्ट के डिपेंडेंसी ग्राफ़ में हर डिपेंडेंसी की जांच करें और उसे विज़ुअलाइज़ करें. ऐसा करने के लिए, प्रोजेक्ट सिंक करने के दौरान Gradle के हल किए गए तरीके का इस्तेमाल करें. इसके लिए, यह तरीका अपनाएं:
- PSD के बाएं पैनल में, डिपेंडेंसी चुनें.
- मॉड्यूल पैनल में, वह मॉड्यूल चुनें जिसके लिए आपको हल की गई डिपेंडेंसी की जांच करनी है.
- PSD की दाईं ओर, समाधान की गई डिपेंडेंसी पैनल खोलें, जो यहां दिखाया गया है.
अपने प्रोजेक्ट में डिपेंडेंसी को तुरंत खोजा और जोड़ा जा सकता है. इसके लिए, सबसे पहले PSD के डिपेंडेंसी सेक्शन से कोई मॉड्यूल चुनें. इसके बाद, एलान की गई डिपेंडेंसी सेक्शन में (+) बटन पर क्लिक करें और वह डिपेंडेंसी चुनें जिसे जोड़ना है.
आपने जो डिपेंडेंसी चुनी है उसके आधार पर, आपको नीचे दिए गए डायलॉग बॉक्स जैसा एक डायलॉग बॉक्स दिखेगा. इससे, आपको मॉड्यूल में डिपेंडेंसी जोड़ने में मदद मिलेगी.
वैरिएंट बनाना
PSD के इस सेक्शन में, अपने प्रोजेक्ट के हर मॉड्यूल के लिए, बिल्ड वैरिएंट और प्रॉडक्ट के फ़्लेवर बनाएं और कॉन्फ़िगर करें. इसमें मेनिफ़ेस्ट प्लेसहोल्डर जोड़े जा सकते हैं, ProGuard फ़ाइलें जोड़ी जा सकती हैं, और हस्ताक्षर करने के लिए कुंजियां असाइन की जा सकती हैं. इसके अलावा, और भी कई काम किए जा सकते हैं.
सुझाव
प्रोजेक्ट की डिपेंडेंसी और बिल्ड वैरिएबल के लिए सुझाए गए अपडेट देखने के लिए, सुझाव सेक्शन में जाएं. यहां दिए गए उदाहरण में यह तरीका बताया गया है.
नया रिसोर्स मैनेजर
संसाधन मैनेजर, एक नई टूल विंडो है. इसका इस्तेमाल करके, अपने ऐप्लिकेशन में संसाधनों को इंपोर्ट, बनाया, मैनेज, और इस्तेमाल किया जा सकता है. टूल विंडो खोलने के लिए, मेन्यू बार से व्यू > टूल विंडो > संसाधन मैनेजर चुनें. संसाधन मैनेजर की मदद से ये काम किए जा सकते हैं:
- संसाधनों को विज़ुअलाइज़ करना: अपनी ज़रूरत के संसाधनों को तुरंत ढूंढने के लिए, ड्रॉ किए जा सकने वाले आइटम, रंग, और लेआउट की झलक देखी जा सकती है.
- एक साथ कई ऐसेट इंपोर्ट करना: एक साथ कई ड्रॉबल ऐसेट इंपोर्ट करने के लिए, उन्हें रिसॉर्स मैनेजर टूल विंडो में खींचकर छोड़ें या ड्रॉबल ऐसेट इंपोर्ट करें विज़र्ड का इस्तेमाल करें. विज़र्ड को ऐक्सेस करने के लिए, टूल विंडो के सबसे ऊपर बाएं कोने में मौजूद (+) बटन को चुनें. इसके बाद, ड्रॉप-डाउन मेन्यू से ड्रॉबल आइटम इंपोर्ट करें को चुनें.
-
एसवीजी को
VectorDrawable
ऑब्जेक्ट में बदलना: अपनी एसवीजी इमेज कोVectorDrawable
ऑब्जेक्ट में बदलने के लिए, ड्रॉ किए जा सकने वाले आइटम इंपोर्ट करें विज़र्ड का इस्तेमाल किया जा सकता है. - ऐसेट खींचें और छोड़ें: रिसॉर्स मैनेजर टूल विंडो से, डिवाइस के डिज़ाइन और एक्सएमएल व्यू, दोनों पर ड्रॉआउट खींचे और छोड़े जा सकते हैं.
- विकल्प के तौर पर मौजूद वर्शन देखना: अब टूल विंडो में किसी संसाधन पर दो बार क्लिक करके, अपने संसाधनों के वैकल्पिक वर्शन देखे जा सकते हैं. इस व्यू में, आपके बनाए गए अलग-अलग वर्शन और शामिल किए गए क्वालिफ़ायर दिखते हैं.
- टाइल और सूची व्यू: टूल विंडो में व्यू बदलकर, अपने संसाधनों को अलग-अलग क्रम में देखा जा सकता है.
ज़्यादा जानने के लिए, ऐप्लिकेशन के संसाधनों को मैनेज करने के तरीके के बारे में गाइड पढ़ें.
APK की प्रोफ़ाइल बनाने और उन्हें डीबग करते समय, बिल्ड आईडी की जांच करना
जब आप अपने APK में .so
शेयर की गई लाइब्रेरी के लिए, डीबग करने के लिए सिंबल फ़ाइलें उपलब्ध कराते हैं, तो Android Studio पुष्टि करता है कि दी गई सिंबल फ़ाइलों का बिल्ड आईडी, APK में मौजूद .so
लाइब्रेरी के बिल्ड आईडी से मेल खाता है.
अगर आपने अपने APK में बिल्ड आईडी के साथ नेटिव लाइब्रेरी बनाई हैं, तो Android Studio यह जांच करता है कि आपकी सिंबल फ़ाइलों में मौजूद बिल्ड आईडी, आपकी नेटिव लाइब्रेरी में मौजूद बिल्ड आईडी से मेल खाता है या नहीं. अगर मेल नहीं खाता है, तो सिंबल फ़ाइलों को अस्वीकार कर दिया जाता है. अगर आपने बिल्ड आईडी के साथ बिल्ड नहीं किया है, तो गलत सिंबल फ़ाइलें देने पर, डिबग करने में समस्याएं आ सकती हैं.
R8 डिफ़ॉल्ट रूप से चालू है
R8, एक ही चरण में डेसुगरिंग, छोटा करना, गुप्त करना, ऑप्टिमाइज़ करना, और डेक्स करना जैसे कामों को इंटिग्रेट करता है. इससे, बिल्ड की परफ़ॉर्मेंस में काफ़ी सुधार होता है. R8 को Android Gradle प्लग इन 3.3.0 में लॉन्च किया गया था. अब यह सुविधा, प्लग इन 3.4.0 और इसके बाद के वर्शन का इस्तेमाल करने वाले ऐप्लिकेशन और Android लाइब्रेरी, दोनों प्रोजेक्ट के लिए डिफ़ॉल्ट रूप से चालू है.
नीचे दी गई इमेज में, R8 के आने से पहले, कॉम्पाइल करने की प्रोसेस के बारे में खास जानकारी दी गई है.
अब R8 के साथ, डीसुगरिंग, छोटा करना, गड़बड़ी को छिपाना, ऑप्टिमाइज़ करना, और डीक्सिंग (D8) ये सभी एक चरण में पूरे हो जाते हैं, जैसा कि यहां दिखाया गया है.
ध्यान रखें कि R8 को आपके मौजूदा ProGuard नियमों के साथ काम करने के लिए डिज़ाइन किया गया है. इसलिए, R8 का फ़ायदा पाने के लिए, आपको कुछ करने की ज़रूरत नहीं होगी. हालांकि, ProGuard की तुलना में यह एक अलग टेक्नोलॉजी है. इसे खास तौर पर Android प्रोजेक्ट के लिए डिज़ाइन किया गया है. इसलिए, छोटा करने और ऑप्टिमाइज़ करने की वजह से, ऐसा कोड हट सकता है जिसे ProGuard ने नहीं हटाया होगा. इसलिए, इस असंभावित स्थिति में, आपको अपने बिल्ड आउटपुट में उस कोड को बनाए रखने के लिए, अतिरिक्त नियम जोड़ने पड़ सकते हैं.
अगर आपको R8 का इस्तेमाल करने में समस्याएं आ रही हैं, तो R8 के साथ काम करने से जुड़े अक्सर पूछे जाने वाले सवाल पढ़ें. इससे आपको पता चलेगा कि आपकी समस्या का हल मौजूद है या नहीं. अगर समस्या हल करने का तरीका दस्तावेज़ में नहीं दिया गया है, तो कृपया गड़बड़ी की शिकायत करें.
अपने प्रोजेक्ट की
gradle.properties
फ़ाइल में इनमें से कोई एक लाइन जोड़कर, R8 को बंद किया जा सकता है:
# 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 को बंद कर दिया हो.
नेविगेशन एडिटर में अब सभी तरह के आर्ग्युमेंट काम करते हैं
नेविगेशन कॉम्पोनेंट के साथ काम करने वाले सभी आर्ग्युमेंट टाइप, अब नेविगेशन एडिटर में भी काम करते हैं. इस्तेमाल किए जा सकने वाले टाइप के बारे में ज़्यादा जानने के लिए, डेटा को एक डेस्टिनेशन से दूसरे डेस्टिनेशन पर भेजना लेख पढ़ें.
लेआउट एडिटर में किए गए सुधार {:#layout-editor}
लेआउट एडिटर में एट्रिब्यूट पैनल को एक ही पेज में व्यवस्थित किया गया है. इसमें ऐसे सेक्शन हैं जिन्हें बड़ा करके, कॉन्फ़िगर किए जा सकने वाले एट्रिब्यूट देखे जा सकते हैं. एट्रिब्यूट पैनल में ये अपडेट भी शामिल हैं:
- एलान किए गए एट्रिब्यूट सेक्शन में, लेआउट फ़ाइल में बताए गए एट्रिब्यूट की सूची होती है. साथ ही, इसमें नए एट्रिब्यूट को तुरंत जोड़ा जा सकता है.
- एट्रिब्यूट पैनल में अब हर एट्रिब्यूट के बगल में इंडिकेटर भी दिखते हैं. ये इंडिकेटर तब पूरे होते हैं, जब एट्रिब्यूट की वैल्यू रिसॉर्स रेफ़रंस हो. अगर वैल्यू कोई और है, तो ये इंडिकेटर खाली होते हैं.
- जिन एट्रिब्यूट में गड़बड़ियां या चेतावनियां हैं उन्हें अब हाइलाइट किया गया है. लाल रंग से हाइलाइट किए गए टेक्स्ट से गड़बड़ियों का पता चलता है. उदाहरण के लिए, अमान्य लेआउट वैल्यू का इस्तेमाल करने पर. वहीं, नारंगी रंग से हाइलाइट किए गए टेक्स्ट से चेतावनियों का पता चलता है. उदाहरण के लिए, हार्ड कोड की गई वैल्यू का इस्तेमाल करने पर.
डिपेंडेंसी को तुरंत इंपोर्ट करने के लिए नई इंटेंट ऐक्शन
अगर आपने अपने कोड में कुछ Jetpack और Firebase क्लास का इस्तेमाल शुरू किया है, तो एक नई कार्रवाई से आपको अपने प्रोजेक्ट में ज़रूरी Gradle लाइब्रेरी डिपेंडेंसी जोड़ने का सुझाव मिलता है. ऐसा तब किया जाता है, जब आपने पहले से ऐसा न किया हो. उदाहरण के लिए, अगर आपने ज़रूरी android.arch.work:work-runtime
डिपेंडेंसी को इंपोर्ट किए बिना WorkManager
क्लास का रेफ़रंस दिया है, तो इंटेंट ऐक्शन की मदद से, एक क्लिक में ऐसा किया जा सकता है. इसका उदाहरण यहां दिया गया है.
खास तौर पर, Jetpack ने सहायता लाइब्रेरी को अलग-अलग पैकेज में फिर से पैकेज किया है, ताकि उन्हें मैनेज और अपडेट करना आसान हो. इस इंटेंट ऐक्शन की मदद से, आपको उन Jetpack कॉम्पोनेंट के लिए ज़रूरी डिपेंडेंसी को तुरंत जोड़ने में मदद मिलती है जिनका इस्तेमाल करना है.
3.3 (जनवरी 2019)
Android Studio 3.3 एक मुख्य रिलीज़ है. इसमें कई नई सुविधाएं और सुधार शामिल हैं.
3.3.2 (मार्च 2019)
इस छोटे अपडेट में, कई गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस को बेहतर बनाया गया है. गड़बड़ियों को ठीक करने से जुड़ी अहम जानकारी देखने के लिए, रिलीज़ से जुड़े अपडेट वाले ब्लॉग पर जाएं.
3.3.1 (फ़रवरी 2019)
इस छोटे अपडेट में, कई गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस को बेहतर बनाया गया है.
IntelliJ IDEA 2018.2.2
Android Studio के मुख्य IDE को अपडेट किया गया है. इसमें 2018.2.2 रिलीज़ के ज़रिए, IntelliJ IDEA के सुधारों को शामिल किया गया है.
Android Gradle प्लग इन से जुड़े अपडेट
Android Gradle प्लग-इन में जो नई सुविधाएं जोड़ी गई हैं उनके बारे में जानने के लिए, इसके रिलीज़ नोट देखें.
नेविगेशन एडिटर
नेविगेशन एडिटर की मदद से, नेविगेशन आर्किटेक्चर कॉम्पोनेंट का इस्तेमाल करके, अपने ऐप्लिकेशन में नेविगेशन को तेज़ी से विज़ुअलाइज़ और बनाया जा सकता है.
ज़्यादा जानकारी के लिए, नेविगेशन आर्किटेक्चर कॉम्पोनेंट की मदद से नेविगेशन लागू करना लेख पढ़ें.
इस्तेमाल नहीं की जा रही Android Studio डायरेक्ट्री मिटाना
Android Studio के किसी मुख्य वर्शन को पहली बार चलाने पर, यह उन डायरेक्ट्री को खोजता है जिनमें Android Studio के उन वर्शन के लिए कैश मेमोरी, सेटिंग, इंडेक्स, और लॉग मौजूद होते हैं जिनका इंस्टॉलेशन नहीं मिल पा रहा है. इसके बाद, इस्तेमाल न की गई Android Studio डायरेक्ट्री मिटाएं डायलॉग बॉक्स में, इस्तेमाल न की गई डायरेक्ट्री की जगहें, साइज़, और आखिरी बार बदले जाने का समय दिखता है. साथ ही, उन्हें मिटाने का विकल्प भी मिलता है.
Android Studio, यहां दी गई डायरेक्ट्री को मिटा देता है:
- Linux:
~/.AndroidStudio[Preview]X.Y
- Mac:
~/Library/{Preferences, Caches, Logs, Application Support}/AndroidStudio[Preview]X.Y
- Windows:
%USER%.AndroidStudio[Preview]X.Y
Lint में किए गए सुधार
Gradle से लिंट करने पर, यह प्रोसेस काफ़ी तेज़ हो जाती है. बड़े प्रोजेक्ट में, लिंट की प्रोसेस चार गुना तेज़ हो सकती है.
नया प्रोजेक्ट बनाने वाला विज़र्ड
नया प्रोजेक्ट बनाएं विज़र्ड का नया लुक है. इसमें ऐसे अपडेट शामिल हैं जिनसे Android Studio में नए प्रोजेक्ट बनाने की प्रोसेस को बेहतर बनाने में मदद मिलती है.
ज़्यादा जानकारी के लिए, प्रोजेक्ट बनाना लेख पढ़ें.
प्रोफ़ाइलर से जुड़े अपडेट
Android Studio 3.3 में, अलग-अलग प्रोफ़ाइलर के लिए अपडेट शामिल हैं.
बेहतर परफ़ॉर्मेंस
उपयोगकर्ताओं के सुझावों के आधार पर, प्रोफ़ाइलर का इस्तेमाल करते समय रेंडरिंग की परफ़ॉर्मेंस को बेहतर बनाया गया है. कृपया सुझाव/राय दें या शिकायत करें. ऐसा तब भी करें, जब आपको परफ़ॉर्मेंस से जुड़ी समस्याएं दिखती रहें.
प्रोफ़ाइलर के मेमोरी ऐलोकेशन को ट्रैक करने के विकल्प
प्रोफ़ाइलिंग के दौरान ऐप्लिकेशन की परफ़ॉर्मेंस को बेहतर बनाने के लिए, मेमोरी प्रोफ़ाइलर अब डिफ़ॉल्ट रूप से समय-समय पर मेमोरी के ऐलोकेशन का सैंपल लेता है. अगर आप चाहें, तो इस व्यवहार को बदला जा सकता है. इसके लिए, Android 8.0 (एपीआई लेवल 26) या इसके बाद के वर्शन पर काम करने वाले डिवाइसों पर जांच करते समय, ऐलोकेशन ट्रैकिंग ड्रॉपडाउन का इस्तेमाल करें.
अलोकेशन ट्रैकिंग ड्रॉपडाउन का इस्तेमाल करके, इनमें से कोई एक मोड चुना जा सकता है:
-
पूरी जानकारी: यह सभी ऑब्जेक्ट मेमोरी ऐलोकेशन को कैप्चर करता है. ध्यान दें कि अगर आपके पास ऐसा ऐप्लिकेशन है जो बहुत सारे ऑब्जेक्ट को ऐलोकेट करता है, तो आपको प्रोफ़ाइलिंग के दौरान परफ़ॉर्मेंस से जुड़ी गंभीर समस्याएं दिख सकती हैं.
-
सैंपल किया गया: यह ऑब्जेक्ट मेमोरी के ऐलोकेशन का समय-समय पर सैंपल कैप्चर करता है. यह डिफ़ॉल्ट व्यवहार है और प्रोफ़ाइलिंग के दौरान, ऐप्लिकेशन की परफ़ॉर्मेंस पर इसका कम असर पड़ता है. आपको ऐसे ऐप्लिकेशन की परफ़ॉर्मेंस से जुड़ी कुछ समस्याएं आ सकती हैं जो कम समय में बहुत सारे ऑब्जेक्ट को ऐलोकेट करते हैं.
-
बंद है: इससे मेमोरी का ऐलोकेशन बंद हो जाता है. अगर यह विकल्प पहले से चुना नहीं गया है, तो सीपीयू रिकॉर्डिंग के दौरान यह मोड अपने-आप चालू हो जाता है. रिकॉर्डिंग खत्म होने के बाद, यह पिछली सेटिंग पर वापस आ जाता है. सीपीयू रिकॉर्डिंग कॉन्फ़िगरेशन डायलॉग में जाकर, इस व्यवहार को बदला जा सकता है.
ट्रैकिंग का असर, Java ऑब्जेक्ट और JNI रेफ़रंस, दोनों पर पड़ता है.
फ़्रेम रेंडरिंग डेटा की जांच करना
सीपीयू प्रोफ़ाइलर में, अब यह जांच की जा सकती है कि मुख्य यूज़र इंटरफ़ेस (यूआई) थ्रेड और रेंडरथ्रेड पर, आपके Java ऐप्लिकेशन को हर फ़्रेम को रेंडर करने में कितना समय लगता है. यह डेटा, उन समस्याओं की जांच करने में मददगार हो सकता है जिनकी वजह से यूज़र इंटरफ़ेस (यूआई) में रुकावट आती है और फ़्रेम रेट कम हो जाता है. उदाहरण के लिए, फ़्रेमरेट को स्मूद बनाए रखने के लिए ज़रूरी 16 मि॰से॰ से ज़्यादा समय लेने वाले हर फ़्रेम को लाल रंग में दिखाया जाता है.
फ़्रेम रेंडरिंग डेटा देखने के लिए, ट्रेस रिकॉर्ड करें. इसके लिए, ऐसे कॉन्फ़िगरेशन का इस्तेमाल करें जिससे सिस्टम कॉल को ट्रैक किया जा सके. ट्रेस रिकॉर्ड करने के बाद, फ़्रेम सेक्शन में जाकर, रिकॉर्डिंग की टाइमलाइन पर हर फ़्रेम के बारे में जानकारी देखें. यह सेक्शन, नीचे दिखाए गए तरीके से दिखता है.
फ़्रेम रेट से जुड़ी समस्याओं की जांच करने और उन्हें ठीक करने के बारे में ज़्यादा जानने के लिए, धीमी रेंडरिंग लेख पढ़ें.
इवेंट टाइमलाइन में फ़्रैगमेंट
इवेंट टाइमलाइन में अब यह दिखता है कि फ़्रैगमेंट कब अटैच और डिटैच किए गए. इसके अलावा, किसी फ़्रैगमेंट पर कर्सर घुमाने पर, आपको एक टूलटिप दिखेगा. इसमें, फ़्रैगमेंट का स्टेटस दिखेगा.
नेटवर्क प्रोफ़ाइलर में, कनेक्शन पेलोड के लिए फ़ॉर्मैट किया गया टेक्स्ट देखना
पहले, नेटवर्क प्रोफ़ाइलर सिर्फ़ कनेक्शन के पेलोड से रॉ टेक्स्ट दिखाता था. Android Studio 3.3 अब कुछ खास तरह के टेक्स्ट को डिफ़ॉल्ट रूप से फ़ॉर्मैट करता है. इसमें JSON, एक्सएमएल, और एचटीएमएल शामिल हैं. जवाब और अनुरोध टैब में, फ़ॉर्मैट किया गया टेक्स्ट देखने के लिए, पार्स किया गया टेक्स्ट देखें लिंक पर क्लिक करें. साथ ही, रॉ टेक्स्ट देखने के लिए, सोर्स देखें लिंक पर क्लिक करें.
ज़्यादा जानकारी के लिए, नेटवर्क प्रोफ़ाइलर की मदद से नेटवर्क ट्रैफ़िक की जांच करना देखें.
SDK टूल के कॉम्पोनेंट अपने-आप डाउनलोड होना
जब आपके प्रोजेक्ट को SDK टूल के प्लैटफ़ॉर्म, NDK या CMake से SDK टूल का कोई कॉम्पोनेंट चाहिए, तो Gradle अब ज़रूरी पैकेज को अपने-आप डाउनलोड करने की कोशिश करता है. ऐसा तब तक होता है, जब तक आपने पहले SDK Manager का इस्तेमाल करके, लाइसेंस से जुड़े किसी भी समझौते को स्वीकार नहीं कर लिया है.
ज़्यादा जानकारी के लिए, Gradle की मदद से, मौजूद नहीं होने वाले पैकेज अपने-आप डाउनलोड होने की सुविधा देखें.
Clang-Tidy के लिए सहायता
Android Studio में अब स्टैटिक कोड का विश्लेषण करने की सुविधा शामिल है. इसके लिए, Clang-Tidy का इस्तेमाल किया जाता है. यह सुविधा, उन प्रोजेक्ट के लिए उपलब्ध है जिनमें नेटिव कोड शामिल है. Clang-Tidy के साथ काम करने की सुविधा चालू करने के लिए, अपने NDK टूल को r18 या इसके बाद के वर्शन पर अपडेट करें.
इसके बाद, सेटिंग या प्राथमिकताएं डायलॉग खोलकर, जांच की सुविधा को चालू या फिर से चालू किया जा सकता है. इसके लिए, एडिटर > जांच > C/C++ > सामान्य > Clang-Tidy पर जाएं. सेटिंग या प्राथमिकताएं डायलॉग में इस जांच को चुनने पर, सबसे दाएं पैनल के विकल्प सेक्शन में, Clang-Tidy की जांच की सूची भी देखी जा सकती है. यह सूची, चालू और बंद की गई जांच की सूची होती है. अतिरिक्त जांच चालू करने के लिए, उन्हें सूची में जोड़ें और लागू करें पर क्लिक करें.
अन्य विकल्पों के साथ Clang-Tidy को कॉन्फ़िगर करने के लिए, Clang-Tidy की जांच के विकल्पों को कॉन्फ़िगर करें पर क्लिक करें और खुलने वाले डायलॉग में उन्हें जोड़ें.
C++ को पसंद के मुताबिक बनाने के विकल्प हटाना
C++ सहायता को पसंद के मुताबिक बनाएं डायलॉग से ये विकल्प हटा दिए गए हैं:
- अपवादों के लिए सहायता (-fexceptions)
- रनटाइम टाइप की जानकारी देने वाली सुविधा (-ftti)
Android Studio की मदद से बनाए गए सभी प्रोजेक्ट के लिए, ये सुविधाएं चालू होती हैं.
CMake वर्शन 3.10.2
SDK Manager में अब CMake का 3.10.2 वर्शन शामिल है. ध्यान दें कि Gradle अब भी डिफ़ॉल्ट रूप से 3.6.0 वर्शन का इस्तेमाल करता है.
Gradle के इस्तेमाल के लिए CMake का कोई वर्शन तय करने के लिए, अपने मॉड्यूल की
build.gradle
फ़ाइल में यह जानकारी जोड़ें:
android {
...
externalNativeBuild {
cmake {
...
version "3.10.2"
}
}
}
build.gradle
में CMake को कॉन्फ़िगर करने के बारे में ज़्यादा जानने के लिए, Gradle को मैन्युअल तरीके से कॉन्फ़िगर करना लेख पढ़ें.
CMake के कम से कम वर्शन तय करने के लिए, नया “+” सिंटैक्स
अपने मुख्य मॉड्यूल की build.gradle
फ़ाइल में CMake का वर्शन बताते समय, अब CMake के cmake_minimum_required()
कमांड के व्यवहार से मैच करने के लिए, “+” जोड़ा जा सकता है.
चेतावनी: अन्य बिल्ड डिपेंडेंसी के साथ "+" सिंटैक्स का इस्तेमाल करने का सुझाव नहीं दिया जाता. ऐसा इसलिए, क्योंकि डाइनैमिक डिपेंडेंसी की वजह से वर्शन में अचानक अपडेट हो सकते हैं और वर्शन के बीच के अंतर को हल करने में समस्या आ सकती है.
Android ऐप्लिकेशन बंडल अब इंस्टैंट ऐप्लिकेशन के साथ काम करते हैं
Android Studio की मदद से, अब Android ऐप्लिकेशन बंडल बनाए जा सकते हैं. साथ ही, Google Play Instant के लिए पूरी तरह से सहायता भी मिलती है. दूसरे शब्दों में, अब एक ही Android Studio प्रोजेक्ट से, इंस्टॉल किए गए ऐप्लिकेशन और झटपट इस्तेमाल की सुविधा, दोनों को बनाया और डिप्लॉय किया जा सकता है. साथ ही, उन्हें एक ही Android ऐप्लिकेशन बंडल में शामिल किया जा सकता है.
अगर नया प्रोजेक्ट बनाएं डायलॉग का इस्तेमाल करके, Android Studio में नया प्रोजेक्ट बनाया जा रहा है, तो पक्का करें कि आपने अपना प्रोजेक्ट कॉन्फ़िगर करें > यह प्रोजेक्ट इंस्टैंट ऐप्लिकेशन के साथ काम करेगा के बगल में मौजूद बॉक्स को चुन लिया हो. इसके बाद, Android Studio एक नया ऐप्लिकेशन प्रोजेक्ट बनाता है, जैसे कि वह आम तौर पर करता है. हालांकि, आपके ऐप्लिकेशन के बेस मॉड्यूल में इंस्टैंट ऐप्लिकेशन की सुविधा जोड़ने के लिए, वह आपके मेनिफ़ेस्ट में ये प्रॉपर्टी शामिल करता है:
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution">
<dist:module dist:instant="true" />
...
</manifest>
इसके बाद, मेन्यू बार में जाकर फ़ाइल > नया > नया मॉडल चुनें. इसके बाद, नया मॉडल बनाएं डायलॉग में जाकर, इंस्टैंट डाइनैमिक फ़ीचर मॉडल चुनें. ध्यान रखें कि यह मॉड्यूल बनाने से, आपके ऐप्लिकेशन का बेस मॉड्यूल भी तुरंत चालू हो जाता है.
अपने ऐप्लिकेशन को इंस्टैंट ऐप्लिकेशन के तौर पर किसी स्थानीय डिवाइस पर डिप्लॉय करने के लिए, अपने ऐप्लिकेशन के रन कॉन्फ़िगरेशन में बदलाव करें और सामान्य > इंस्टैंट ऐप्लिकेशन के तौर पर डिप्लॉय करें के बगल में मौजूद बॉक्स को चुनें.
एक वैरिएंट वाला प्रोजेक्ट सिंक करना
Android Studio को यह समझने में मदद मिलती है कि आपका प्रोजेक्ट कैसे बना है, इसके लिए अपने प्रोजेक्ट को बाइल्ड कॉन्फ़िगरेशन के साथ सिंक करना एक अहम चरण है. हालांकि, बड़े प्रोजेक्ट के लिए इस प्रोसेस में काफ़ी समय लग सकता है. अगर आपके प्रोजेक्ट में एक से ज़्यादा बिल्ड वैरिएंट का इस्तेमाल किया जाता है, तो अब प्रोजेक्ट सिंक को ऑप्टिमाइज़ किया जा सकता है. इसके लिए, सिंक को सिर्फ़ उस वैरिएंट तक सीमित करें जिसे आपने फ़िलहाल चुना है.
इस ऑप्टिमाइज़ेशन को चालू करने के लिए, आपको Android Studio 3.3 या इसके बाद के वर्शन के साथ Android Gradle प्लग इन 3.3.0 या इसके बाद के वर्शन का इस्तेमाल करना होगा. इन ज़रूरी शर्तों को पूरा करने पर, IDE आपके प्रोजेक्ट को सिंक करते समय, आपको इस ऑप्टिमाइज़ेशन को चालू करने के लिए कहता है. ऑप्टिमाइज़ेशन की सुविधा, नए प्रोजेक्ट में भी डिफ़ॉल्ट रूप से चालू रहती है.
इस ऑप्टिमाइज़ेशन को मैन्युअल तरीके से चालू करने के लिए, फ़ाइल > सेटिंग > एक्सपेरिमेंटल > Gradle पर क्लिक करें (Mac पर Android Studio > प्राथमिकताएं > एक्सपेरिमेंटल > Gradle). इसके बाद, सिर्फ़ चालू वैरिएंट सिंक करें चेकबॉक्स को चुनें.
ध्यान दें: फ़िलहाल, यह ऑप्टिमाइज़ेशन सिर्फ़ उन प्रोजेक्ट के साथ काम करता है जिनमें सिर्फ़ Java प्रोग्रामिंग लैंग्वेज का इस्तेमाल किया गया है. उदाहरण के लिए, अगर IDE आपके प्रोजेक्ट में Kotlin या C++ कोड का पता लगाता है, तो यह ऑप्टिमाइज़ेशन अपने-आप चालू नहीं होता. साथ ही, आपको इसे मैन्युअल तरीके से चालू नहीं करना चाहिए.
ज़्यादा जानकारी के लिए, सिंगल-वैरिएंट प्रोजेक्ट सिंक करने की सुविधा चालू करना लेख पढ़ें.
तुरंत सुझाव, शिकायत या राय देना
अगर आपने Android Studio को बेहतर बनाने के लिए, इस्तेमाल के आंकड़े शेयर करने का विकल्प चुना है, तो आपको IDE विंडो के सबसे नीचे मौजूद स्टेटस बार में ये दो नए आइकॉन दिखेंगे:
बस उस आइकॉन पर क्लिक करें जो आईडीई के साथ आपके मौजूदा अनुभव को सबसे सही तरीके से दिखाता हो. ऐसा करने पर, IDE, इस्तेमाल से जुड़े आंकड़े भेजता है. इन आंकड़ों की मदद से, Android Studio की टीम आपके सेंटीमेंट को बेहतर तरीके से समझ पाती है. कुछ मामलों में, जैसे कि आईडीई के साथ खराब अनुभव के बारे में बताने पर, आपके पास ज़्यादा सुझाव/राय देने का विकल्प होगा.
अगर आपने अब तक ऐसा नहीं किया है, तो इस्तेमाल के आंकड़े शेयर करने की सुविधा चालू की जा सकती है. इसके लिए, Mac पर सेटिंग डायलॉग प्राथमिकताएं खोलें. इसके बाद, दिखने का तरीका और व्यवहार > सिस्टम सेटिंग > डेटा शेयर करना पर जाएं और Google को इस्तेमाल के आंकड़े भेजें को चुनें.
3.2 (सितंबर 2018)
Android Studio 3.2 एक मुख्य रिलीज़ है. इसमें कई नई सुविधाएं और सुधार शामिल हैं.
3.2.1 (अक्टूबर 2018)
Android Studio 3.2 के इस अपडेट में ये बदलाव और सुधार शामिल हैं:
- बंडल किया गया Kotlin वर्शन अब 1.2.71 है.
- अब डिफ़ॉल्ट बिल्ड टूल का वर्शन 28.0.3 है.
- नेविगेशन लाइब्रेरी में, आर्ग्युमेंट टाइप का नाम बदलकर
type
सेargType
कर दिया गया है. - ये गड़बड़ियां ठीक कर दी गई हैं:
- डेटा बाइंडिंग लाइब्रेरी का इस्तेमाल करते समय, अंडरस्कोर वाले वैरिएबल के नामों की वजह से, कॉम्पाइल करने में गड़बड़ियां हो रही थीं.
- CMake की वजह से, IntelliSense और CLion की अन्य सुविधाएं काम नहीं कर रही थीं.
SliceProvider
जोड़ने से, उन प्रोजेक्ट में कंपाइलेशन से जुड़ी गड़बड़ियां हो रही थीं जोandroidx.*
लाइब्रेरी का इस्तेमाल नहीं करते थे.- कुछ Kotlin यूनिट टेस्ट नहीं चल रहे थे.
- डेटा बाइंडिंग से जुड़ी समस्या की वजह से,
PsiInvalidElementAccessException
हो रहा था. <merge>
एलिमेंट की वजह से, कभी-कभी लेआउट एडिटर क्रैश हो रहा था.
3.2.0 में पहले से मौजूद समस्याएं
ध्यान दें: Android Studio के 3.2.1 वर्शन में ये समस्याएं हल कर दी गई हैं
हमारा सुझाव है कि आप Kotlin के 1.2.70 वर्शन का इस्तेमाल न करें.
Kotlin के 1.2.61 वर्शन में, एक ऐसी गड़बड़ी को ठीक किया गया है जिसकी वजह से Android Studio फ़्रीज़ हो सकता है. हालांकि, Kotlin 1.2.70 में यह सुधार शामिल नहीं है.
हालांकि, Kotlin के 1.2.71 और उसके बाद के वर्शन में यह समस्या ठीक की गई है.
-
आम तौर पर, आपको बिल्ड टूल के वर्शन की जानकारी देने की ज़रूरत नहीं होती. हालांकि,
renderscriptSupportModeEnabled
कोtrue
पर सेट करके, Android Gradle प्लग इन 3.2.0 का इस्तेमाल करते समय, आपको हर मॉड्यूल कीbuild.gradle
फ़ाइल में ये शामिल करने होंगे:android.buildToolsVersion "28.0.3"
Assistant में नया क्या है
एक नई सहायक आपको Android Studio में हुए नए बदलावों के बारे में बताती है.
Assistant, Android Studio को नए सिरे से इंस्टॉल करने या अपडेट करने के बाद, तब खुलती है, जब उसे पता चलता है कि आपको कोई नई जानकारी दिखानी है. सहायता > Android Studio में नया क्या है को चुनकर भी Assistant को खोला जा सकता है.
Android Jetpack
Android Jetpack, कॉम्पोनेंट, टूल, और दिशा-निर्देशों की मदद से Android डेवलपमेंट को तेज़ करता है. इनकी मदद से, बार-बार होने वाले कामों को हटाया जा सकता है. साथ ही, अच्छी क्वालिटी के और जांचे जा सकने वाले ऐप्लिकेशन को तेज़ी से और आसानी से बनाया जा सकता है. Jetpack के साथ काम करने के लिए, Android Studio में ये अपडेट शामिल किए गए हैं. ज़्यादा जानकारी के लिए, Jetpack का दस्तावेज़ देखें.
नेविगेशन एडिटर
नया नेविगेशन एडिटर, Android Jetpack के नेविगेशन कॉम्पोनेंट के साथ इंटिग्रेट होता है. इससे, आपके ऐप्लिकेशन के नेविगेशन स्ट्रक्चर को बनाने के लिए, ग्राफ़िकल व्यू मिलता है. नेविगेशन एडिटर, ऐप्लिकेशन में मौजूद डेस्टिनेशन के बीच नेविगेशन को डिज़ाइन और लागू करने की प्रोसेस को आसान बनाता है.
Android Studio 3.2 में, नेविगेशन एडिटर एक एक्सपेरिमेंटल सुविधा है. नेविगेशन एडिटर को चालू करने के लिए, फ़ाइल > सेटिंग (Mac पर Android Studio > प्राथमिकताएं) पर क्लिक करें. इसके बाद, बाईं ओर मौजूद पैनल में प्रयोग के तौर पर उपलब्ध कैटगरी चुनें. इसके बाद, नेविगेशन एडिटर चालू करें के बगल में मौजूद बॉक्स को चुनें और Android Studio को रीस्टार्ट करें.
ज़्यादा जानने के लिए, नेविगेशन एडिटर का दस्तावेज़ पढ़ें.
AndroidX पर माइग्रेट करना
Jetpack के तहत, हम Android सहायता लाइब्रेरी को androidx
नेमस्पेस का इस्तेमाल करके, नई Android एक्सटेंशन लाइब्रेरी में माइग्रेट कर रहे हैं. ज़्यादा जानकारी के लिए, AndroidX की खास जानकारी देखें.
Android Studio 3.2 में, माइग्रेशन की नई सुविधा की मदद से, इस प्रोसेस को पूरा किया जा सकता है.
किसी मौजूदा प्रोजेक्ट को AndroidX पर माइग्रेट करने के लिए, Refactor > AndroidX पर माइग्रेट करें को चुनें. अगर आपके पास ऐसी Maven डिपेंडेंसी हैं जिन्हें AndroidX नेमस्पेस में माइग्रेट नहीं किया गया है, तो Android Studio का बिल्ड सिस्टम उन प्रोजेक्ट डिपेंडेंसी को भी अपने-आप बदल देता है.
Android Gradle प्लग इन, यहां दिए गए ग्लोबल फ़्लैग उपलब्ध कराता है. इन्हें अपनी gradle.properties
फ़ाइल में सेट किया जा सकता है:
android.useAndroidX
:true
पर सेट होने पर, यह फ़्लैग यह दिखाता है कि आपको अब से AndroidX का इस्तेमाल करना है. अगर फ़्लैग मौजूद नहीं है, तो Android Studio इस तरह से काम करता है जैसे फ़्लैग कोfalse
पर सेट किया गया हो.android.enableJetifier
:true
पर सेट होने पर, यह फ़्लैग यह दिखाता है कि आपको Android Gradle प्लग इन से टूल की सहायता चाहिए, ताकि तीसरे पक्ष की मौजूदा लाइब्रेरी को अपने-आप ऐसे बदला जा सके जैसे कि उन्हें AndroidX के लिए लिखा गया हो. अगर फ़्लैग मौजूद नहीं है, तो Android Studio वैसे ही काम करता है जैसे कि फ़्लैग कोfalse
पर सेट किया गया हो.
AndroidX पर माइग्रेट करें कमांड का इस्तेमाल करने पर, दोनों फ़्लैग true
पर सेट हो जाते हैं.
अगर आपको AndroidX लाइब्रेरी का तुरंत इस्तेमाल शुरू करना है और आपको तीसरे पक्ष की मौजूदा लाइब्रेरी को बदलने की ज़रूरत नहीं है, तो android.useAndroidX
फ़्लैग को true
और android.enableJetifier
फ़्लैग को false
पर सेट किया जा सकता है.
Android ऐप्लिकेशन बंडल
Android ऐप्लिकेशन बंडल, अपलोड करने का एक नया फ़ॉर्मैट है. इसमें आपके ऐप्लिकेशन के सभी संकलित कोड और रिसॉर्स शामिल होते हैं. हालांकि, APK जनरेट करने और उसे Google Play Store पर साइन करने की प्रोसेस को बाद में किया जाता है.
इसके बाद, Google Play का ऐप्लिकेशन उपलब्ध कराने वाला नया मॉडल, आपके ऐप्लिकेशन बंडल का इस्तेमाल करके, हर उपयोगकर्ता के डिवाइस कॉन्फ़िगरेशन के लिए ऑप्टिमाइज़ किए गए APK जनरेट करता है और उन्हें उपलब्ध कराता है. इससे, हर उपयोगकर्ता सिर्फ़ वही कोड और संसाधन डाउनलोड करता है जो आपके ऐप्लिकेशन को चलाने के लिए ज़रूरी होते हैं. अब आपको एक से ज़्यादा APK बनाने, उन पर हस्ताक्षर करने, और उन्हें मैनेज करने की ज़रूरत नहीं है. साथ ही, उपयोगकर्ताओं को कम साइज़ और ज़्यादा ऑप्टिमाइज़ किए गए APK डाउनलोड करने को मिलते हैं.
इसके अलावा, अपने ऐप्लिकेशन प्रोजेक्ट में फ़ीचर मॉड्यूल जोड़े जा सकते हैं और उन्हें अपने ऐप्लिकेशन बंडल में शामिल किया जा सकता है. इसके बाद, आपके उपयोगकर्ता आपके ऐप्लिकेशन की सुविधाओं को डाउनलोड और इंस्टॉल कर सकते हैं.
बंडल बनाने के लिए, बिल्ड > बंडल / APK बनाना > बंडल बनाना को चुनें.
ज़्यादा जानकारी के लिए, Android ऐप्लिकेशन बंडल देखें. इसमें, Android ऐप्लिकेशन बंडल बनाने और उसका विश्लेषण करने के निर्देश भी शामिल हैं.
लेआउट एडिटर में सैंपल डेटा
कई Android लेआउट में रनटाइम डेटा होता है. इसकी वजह से, ऐप्लिकेशन डेवलपमेंट के डिज़ाइन चरण के दौरान, किसी लेआउट के लुक और फ़ील को विज़ुअलाइज़ करना मुश्किल हो सकता है. अब सैंपल डेटा से भरे लेआउट एडिटर में, अपने व्यू की झलक आसानी से देखी जा सकती है. व्यू जोड़ने पर, डिज़ाइन विंडो में व्यू के नीचे एक बटन दिखता है. डिज़ाइन के समय व्यू के एट्रिब्यूट सेट करने के लिए, इस बटन पर क्लिक करें. आपके पास कई तरह के सैंपल डेटा टेंप्लेट में से चुनने का विकल्प है. साथ ही, यह भी तय किया जा सकता है कि व्यू में सैंपल आइटम की संख्या कितनी होनी चाहिए.
सैंपल डेटा का इस्तेमाल करने के लिए, किसी नए लेआउट में
RecyclerView
जोड़ें. इसके बाद, व्यू के नीचे मौजूद डिज़ाइन के समय एट्रिब्यूट बटन
पर क्लिक करें और सैंपल डेटा टेंप्लेट के कैरसेल से कोई विकल्प चुनें.
स्लाइस
स्लाइस, Android पर मौजूद अन्य यूज़र इंटरफ़ेस प्लैटफ़ॉर्म में, आपके ऐप्लिकेशन के फ़ंक्शन के कुछ हिस्सों को एम्बेड करने का एक नया तरीका उपलब्ध कराते हैं. उदाहरण के लिए, स्लाइस की मदद से, Google Search के सुझावों में ऐप्लिकेशन की मुख्य सुविधाओं और कॉन्टेंट को दिखाया जा सकता है.
Android Studio 3.2 में एक टेंप्लेट पहले से मौजूद है. इसकी मदद से, नए Slice Provider API का इस्तेमाल करके अपने ऐप्लिकेशन को बेहतर बनाया जा सकता है. साथ ही, इसमें नई लिंट जांच की सुविधा भी है. इससे यह पक्का किया जा सकता है कि स्लाइस बनाते समय, सबसे सही तरीके अपनाए जा रहे हैं या नहीं.
शुरू करने के लिए, किसी प्रोजेक्ट फ़ोल्डर पर राइट क्लिक करें और नया > अन्य > स्लाइस प्रोवाइडर चुनें.
स्लाइस के इंटरैक्शन की जांच करने के साथ-साथ ज़्यादा जानने के लिए, स्लाइस के इस्तेमाल से जुड़ी शुरुआती गाइड पढ़ें.
Kotlin 1.2.61
Android Studio 3.2 में Kotlin 1.2.61 बंडल किया गया है. साथ ही, नया Android SDK, Kotlin के साथ बेहतर तरीके से इंटिग्रेट होता है. ज़्यादा जानकारी के लिए, Android Developers ब्लॉग देखें.
IntelliJ IDEA 2018.1.6
Android Studio के मुख्य IDE को अपडेट किया गया है. इसमें 2018.1.6 रिलीज़ के ज़रिए, IntelliJ IDEA के सुधारों को शामिल किया गया है.
Android प्रोफ़ाइलर
Android Studio 3.2 में, Android प्रोफ़ाइलर की ये नई सुविधाएं आज़माएं.
सेशन
अब आपके पास सेशन के तौर पर प्रोफ़ाइलर डेटा को सेव करने का विकल्प है, ताकि आप बाद में उस डेटा को फिर से देख सकें और उसकी जांच कर सकें. प्रोफ़ाइलर आपके सेशन का डेटा तब तक सेव रखता है, जब तक कि आप IDE को फिर से शुरू नहीं कर देते.
कोई तरीका रिकॉर्ड करने या हीप डंप कैप्चर करने पर, IDE उस डेटा को मौजूदा सेशन में अलग एंट्री के तौर पर जोड़ता है. साथ ही, आपके ऐप्लिकेशन की नेटवर्क गतिविधि को भी उसमें जोड़ता है. डेटा की तुलना करने के लिए, रिकॉर्डिंग के बीच आसानी से स्विच किया जा सकता है.
सिस्टम ट्रेस करने वाला टूल
सीपीयू प्रोफ़ाइलर में, अपने डिवाइस के सिस्टम सीपीयू और थ्रेड गतिविधि की जांच करने के लिए, नया सिस्टम ट्रेस कॉन्फ़िगरेशन चुनें. यह ट्रेस कॉन्फ़िगरेशन,
systrace
पर आधारित है. यह सिस्टम-लेवल की समस्याओं की जांच करने के लिए फ़ायदेमंद है, जैसे कि यूज़र इंटरफ़ेस (यूआई) में रुकावट.
इस ट्रेस कॉन्फ़िगरेशन का इस्तेमाल करते समय, प्रोफ़ाइलर टाइमलाइन में ज़रूरी कोड
रूटीन को विज़ुअल तौर पर मार्क किया जा सकता है. इसके लिए, अपने C/C++ कोड को
नेटिव ट्रैकिंग एपीआई या अपने Java कोड को
Trace
क्लास के साथ इंस्ट्रूमेंट करें.
मेमोरी प्रोफ़ाइलर में JNI रेफ़रंस की जांच करना
अगर आपने अपने ऐप्लिकेशन को Android 8.0 (एपीआई लेवल 26) या उसके बाद के वर्शन पर चलने वाले डिवाइस पर डिप्लॉय किया है, तो अब मेमोरी प्रोफ़ाइलर का इस्तेमाल करके, अपने ऐप्लिकेशन के JNI कोड के लिए मेमोरी के ऐलोकेशन की जांच की जा सकती है.
ऐप्लिकेशन के चलने के दौरान, टाइमलाइन का वह हिस्सा चुनें जिसकी आपको जांच करनी है. इसके बाद, क्लास की सूची के ऊपर मौजूद ड्रॉप-डाउन मेन्यू से JNI ढेर चुनें, जैसा कि यहां दिखाया गया है. इसके बाद, हेप में मौजूद ऑब्जेक्ट की जांच सामान्य तरीके से की जा सकती है. साथ ही, ऐलोकेशन कॉल स्टैक टैब में मौजूद ऑब्जेक्ट पर डबल क्लिक करके, यह देखा जा सकता है कि आपके कोड में JNI रेफ़रंस कहां ऐलोकेट और रिलीज़ किए गए हैं.
मेमोरी हीप डंप फ़ाइलों को इंपोर्ट, एक्सपोर्ट, और उनकी जांच करना
अब मेमोरी प्रोफ़ाइलर की मदद से बनाई गई .hprof
मेमोरी हेप डंप फ़ाइलों को इंपोर्ट, एक्सपोर्ट, और जांचा जा सकता है.
.hprof
फ़ाइल को इंपोर्ट करने के लिए, प्रोफ़ाइलर के सेशन पैनल में, नया प्रोफ़ाइलर सेशन शुरू करें
पर क्लिक करें. इसके बाद, फ़ाइल से लोड करें को चुनें. इसके बाद,
मेमोरी प्रोफ़ाइलर में इसके डेटा की जांच की जा सकती है, ठीक उसी तरह जैसे किसी दूसरे हीप डंप की जांच की जाती है.
बाद में देखने के लिए, हीप डंप का डेटा सेव करने के लिए, सेशन पैनल में हीप डंप एंट्री की दाईं ओर मौजूद, हीप डंप एक्सपोर्ट करें बटन का इस्तेमाल करें. इसके बाद, दिखने वाले इस रूप में एक्सपोर्ट करें डायलॉग में, फ़ाइल को .hprof
फ़ाइल नाम वाले एक्सटेंशन के साथ सेव करें.
ऐप्लिकेशन के शुरू होने के दौरान सीपीयू गतिविधि रिकॉर्ड करना
अब ऐप्लिकेशन के स्टार्टअप के दौरान सीपीयू की गतिविधि को रिकॉर्ड किया जा सकता है. इसके लिए, यह तरीका अपनाएं:
- मुख्य मेन्यू में, चलाएं > कॉन्फ़िगरेशन में बदलाव करें को चुनें.
- अपनी पसंद के रन कॉन्फ़िगरेशन के प्रोफ़ाइलिंग टैब में, स्टार्टअप पर कोई तरीका रिकॉर्ड करना शुरू करें के बगल में मौजूद बॉक्स को चुनें.
- ड्रॉपडाउन मेन्यू से, सीपीयू रिकॉर्डिंग का कोई कॉन्फ़िगरेशन चुनें.
- रन करें > प्रोफ़ाइल चुनकर, अपने ऐप्लिकेशन को Android 8.0 (एपीआई लेवल 26) या उसके बाद के वर्शन पर चलने वाले डिवाइस पर डिप्लॉय करें.
सीपीयू ट्रेस एक्सपोर्ट करना
सीपीयू प्रोफ़ाइलर की मदद से सीपीयू गतिविधि रिकॉर्ड करने के बाद, डेटा को .trace
फ़ाइल के तौर पर एक्सपोर्ट किया जा सकता है. ऐसा करके, डेटा को दूसरों के साथ शेयर किया जा सकता है या बाद में उसकी जांच की जा सकती है.
सीपीयू गतिविधि रिकॉर्ड करने के बाद, ट्रेस एक्सपोर्ट करने के लिए, यह तरीका अपनाएं:
- सीपीयू टाइमलाइन से उस रिकॉर्डिंग पर राइट क्लिक करें जिसे आपको एक्सपोर्ट करना है.
- ड्रॉपडाउन मेन्यू से, ट्रैक एक्सपोर्ट करें चुनें.
- उस जगह पर जाएं जहां आपको फ़ाइल सेव करनी है और सेव करें पर क्लिक करें.
सीपीयू ट्रेस फ़ाइलें इंपोर्ट करना और उनकी जांच करना
अब Debug API या सीपीयू प्रोफ़ाइलर की मदद से बनाई गई .trace
फ़ाइलों को इंपोर्ट और जांचा जा सकता है. (फ़िलहाल, सिस्टम ट्रैक की रिकॉर्डिंग इंपोर्ट नहीं की जा सकतीं.)
प्रोफ़ाइलर के सेशन पैनल में, नया प्रोफ़ाइलर सेशन शुरू करें पर क्लिक करके अपनी ट्रेस फ़ाइल इंपोर्ट करें. इसके बाद, फ़ाइल से लोड करें को चुनें. इसके बाद, सीपीयू प्रोफ़ाइलर में, उस डेटा की जांच की जा सकती है जिस तरह आम तौर पर की जाती है. हालांकि, इसमें ये अपवाद शामिल हैं:
- सीपीयू गतिविधि को सीपीयू टाइमलाइन के साथ नहीं दिखाया जाता.
- थ्रेड की गतिविधि की टाइमलाइन से पता चलता है कि हर थ्रेड के लिए, ट्रैक डेटा कहां उपलब्ध है. इससे थ्रेड की असल स्थितियों (जैसे, चल रहा है, इंतज़ार कर रहा है या स्लीप मोड में है) के बारे में पता नहीं चलता.
डीबग एपीआई का इस्तेमाल करके, सीपीयू गतिविधि रिकॉर्ड करना
अब Debug API की मदद से, अपने ऐप्लिकेशन को इंस्ट्रूमेंट करके, सीपीयू प्रोफ़ाइलर में सीपीयू गतिविधि को रिकॉर्ड करना शुरू और बंद किया जा सकता है. किसी डिवाइस पर ऐप्लिकेशन डिप्लॉय करने के बाद, जब आपका ऐप्लिकेशन startMethodTracing(String tracePath)
को कॉल करता है, तो प्रोफ़ाइलर अपने-आप सीपीयू ऐक्टिविटी रिकॉर्ड करना शुरू कर देता है. साथ ही, जब आपका ऐप्लिकेशन stopMethodTracing()
को कॉल करता है, तो प्रोफ़ाइलर रिकॉर्डिंग बंद कर देता है. इस एपीआई का इस्तेमाल करके ट्रिगर की गई सीपीयू गतिविधि को रिकॉर्ड करते समय, सीपीयू प्रोफ़ाइलर, चुने गए सीपीयू रिकॉर्डिंग कॉन्फ़िगरेशन के तौर पर डीबग एपीआई दिखाता है.
एनर्जी प्रोफ़ाइलर
एनर्जी प्रोफ़ाइलर, आपके ऐप्लिकेशन के लिए ऊर्जा के अनुमानित इस्तेमाल को विज़ुअलाइज़ करता है. साथ ही, ऊर्जा के इस्तेमाल पर असर डालने वाले सिस्टम इवेंट भी दिखाता है. जैसे, वेक लॉक, अलार्म, और जॉब.
कनेक्ट किए गए डिवाइस या Android 8.0 (एपीआई 26) या इसके बाद के वर्शन पर चलने वाले Android एमुलेटर पर ऐप्लिकेशन चलाने पर, एनर्जी प्रोफ़ाइलर, प्रोफ़ाइलर विंडो के सबसे नीचे नई लाइन के तौर पर दिखता है.
एनर्जी प्रोफ़ाइलर व्यू को बड़ा करने के लिए, एनर्जी लाइन पर क्लिक करें. सीपीयू, नेटवर्क, और जगह की जानकारी (जीपीएस) संसाधनों के साथ-साथ काम के सिस्टम इवेंट के हिसाब से, एनर्जी के इस्तेमाल का ब्रेकडाउन देखने के लिए, माउस का पॉइंटर टाइमलाइन में किसी बार पर रखें.
ऊर्जा के इस्तेमाल पर असर डालने वाले सिस्टम इवेंट, ऊर्जा टाइमलाइन के नीचे मौजूद सिस्टम टाइमलाइन में दिखते हैं. एनर्जी टाइमलाइन में कोई समयसीमा चुनने पर, तय समयसीमा के दौरान हुए सिस्टम इवेंट की जानकारी, इवेंट पैनल में दिखती है.
किसी सिस्टम इवेंट, जैसे कि वेकलॉक के लिए कॉल स्टैक और अन्य जानकारी देखने के लिए, इवेंट पैनल में उसे चुनें. किसी सिस्टम इवेंट के लिए ज़िम्मेदार कोड पर जाने के लिए, कॉल स्टैक में मौजूद एंट्री पर दो बार क्लिक करें.
लिंट की जांच
Android Studio 3.2 में, लिंट की जांच के लिए कई नई और बेहतर सुविधाएं शामिल हैं.
नई लिंट जांच की सुविधा से, कोड से जुड़ी सामान्य समस्याओं का पता लगाने और उनकी पहचान करने में मदद मिलती है. इन समस्याओं में, इस्तेमाल से जुड़ी संभावित समस्याओं की चेतावनियां से लेकर, सुरक्षा से जुड़ी संभावित समस्याओं की गंभीर गड़बड़ियां शामिल हैं.
Java/Kotlin के साथ काम करने की सुविधा की जांच करने के लिए Lint
यह पक्का करने के लिए कि आपका Java कोड, Kotlin कोड के साथ अच्छी तरह से काम करे, नई lint जांच में Kotlin इंटरऑपरेबिलिटी गाइड में बताए गए सबसे सही तरीकों को लागू किया जाता है. इन जांचों के उदाहरणों में, Nullability के एनोटेशन की मौजूदगी, Kotlin के हार्ड कीवर्ड का इस्तेमाल, और आखिर में लेम्ब्डा पैरामीटर डालना शामिल है.
इन जांचों को चालू करने के लिए, सेटिंग डायलॉग बॉक्स खोलने के लिए, फ़ाइल > सेटिंग (Mac पर Android Studio > प्राथमिकताएं) पर क्लिक करें. इसके बाद, एडिटर > जांच > Android > Lint > इंटरऑपरेबिलिटी > Kotlin इंटरऑपरेबिलिटी सेक्शन पर जाएं और वे नियम चुनें जिन्हें आपको चालू करना है.
कमांड-लाइन बिल्ड के लिए ये जांच चालू करने के लिए, अपनी
build.gradle
फ़ाइल में यह कोड जोड़ें:
android {
lintOptions {
check 'Interoperability'
}
}
स्लाइस के लिए लिंट की जांच
स्लाइस के लिए नई लिंट जांच से यह पक्का करने में मदद मिलती है कि स्लाइस सही तरीके से बनाए जा रहे हैं. उदाहरण के लिए, अगर आपने स्लाइस के लिए कोई प्राइमरी ऐक्शन असाइन नहीं किया है, तो लिंट की जांच से आपको चेतावनी मिलती है.
नया Gradle टारगेट
नए lintFix
Gradle टास्क का इस्तेमाल करके, लिंट की जांच से मिले सभी सुरक्षित
सुधारों को सीधे सोर्स कोड में लागू करें. SyntheticAccessor
, ऐसे लिंट की जांच का उदाहरण है जो सुरक्षित तरीके से समस्या को ठीक करने का सुझाव देता है.
मेटाडेटा के अपडेट
Android 9 (एपीआई लेवल 28) के साथ काम करने के लिए, लिंट की जांच करने वाले कई मेटाडेटा को अपडेट किया गया है. जैसे, सेवा कास्ट करने की जांच.
नए वैरिएंट पर लिंट चलाने पर मिलने वाली चेतावनी
अब लिंट यह रिकॉर्ड करता है कि बेसलाइन किस वैरिएंट और वर्शन के साथ रिकॉर्ड किया गया है. साथ ही, अगर इसे उस वैरिएंट के बजाय किसी दूसरे वैरिएंट पर चलाया जाता है जिससे बेसलाइन बनाया गया था, तो लिंट आपको चेतावनी देता है.
मौजूदा लिंट जांच में सुधार
Android Studio 3.2 में, मौजूदा लिंट जांच में कई सुधार किए गए हैं. उदाहरण के लिए, अब संसाधन साइकल की जांच, संसाधन के अन्य टाइप पर भी लागू होती है. साथ ही, अनुवाद का पता लगाने वाला टूल, Editor में अनुवाद न होने पर तुरंत उसे ढूंढ सकता है.
समस्या के आईडी ज़्यादा आसानी से खोजे जा सकें
समस्या के आईडी अब ज़्यादा जगहों पर दिखाए जाते हैं. इनमें जांच के नतीजे विंडो भी शामिल है. इससे, आपको build.gradle
में lintOptions
की मदद से, खास जांच को चालू या बंद करने के लिए ज़रूरी जानकारी आसानी से मिल जाती है.
ज़्यादा जानकारी के लिए, Gradle की मदद से, lint के विकल्प कॉन्फ़िगर करना लेख पढ़ें.
डेटा बाइंडिंग V2
डेटा बाइंडिंग का वर्शन 2, अब डिफ़ॉल्ट रूप से चालू है. यह वर्शन 1 के साथ काम करता है. इसका मतलब है कि अगर आपके पास ऐसी लाइब्रेरी डिपेंडेंसी हैं जिन्हें आपने V1 के साथ कॉम्पाइल किया है, तो उनका इस्तेमाल डेटा बाइंडिंग V2 का इस्तेमाल करने वाले प्रोजेक्ट के साथ किया जा सकता है. हालांकि, ध्यान दें कि V1 का इस्तेमाल करने वाले प्रोजेक्ट, V2 के साथ कॉम्पाइल की गई डिपेंडेंसी का इस्तेमाल नहीं कर सकते.
D8 डिशुगरिंग
Android Studio 3.1 में, हमने D8 टूल में, शुगर को हटाने के चरण को प्रयोग के तौर पर उपलब्ध कराया है. इससे, बाइल्ड करने में लगने वाला कुल समय कम हो जाता है. Android Studio 3.2 में, D8 की मदद से डी-शुगर करने की सुविधा डिफ़ॉल्ट रूप से चालू होती है.
कोड छोटा करने वाला नया टूल
R8, कोड को छोटा करने और उसे अस्पष्ट बनाने के लिए एक नया टूल है. यह ProGuard की जगह लेता है. अपने प्रोजेक्ट की gradle.properties
फ़ाइल में ये शामिल करके, R8 के झलक वाले वर्शन का इस्तेमाल शुरू किया जा सकता है:
android.enableR8 = true
मल्टी-एपीके के लिए डिफ़ॉल्ट एबीआई में बदलाव किया गया
जब एक से ज़्यादा APK बनाए जाते हैं, तो हर APK किसी अलग एबीआई को टारगेट करता है. ऐसे में, प्लग इन डिफ़ॉल्ट रूप से इन एबीआई के लिए APK जनरेट नहीं करता: mips
, mips64
, और armeabi
.
अगर आपको इन एबीआई को टारगेट करने वाले APK बनाना है, तो आपको NDK r16b या उससे पहले के वर्शन का इस्तेमाल करना होगा. साथ ही, अपनी build.gradle
फ़ाइल में एबीआई की जानकारी देनी होगी, जैसा कि यहां दिखाया गया है:
splits { abi { include 'armeabi', 'mips', 'mips64' ... } }
splits { abi { include("armeabi", "mips", "mips64") ... } }
ध्यान दें: इस बदलाव को Android Studio 3.1 RC1 और इसके बाद के वर्शन में भी शामिल किया गया है.
CMake बिल्ड फ़ाइलों के लिए, एडिटर की बेहतर सुविधाएं
अगर अपने प्रोजेक्ट में C और C++ कोड जोड़ने के लिए CMake का इस्तेमाल किया जाता है, तो Android Studio में अब बेहतर एडिटर की सुविधाएं शामिल हैं. इनकी मदद से, CMake की बिल्ड स्क्रिप्ट में बदलाव किया जा सकता है. जैसे:
- सिंटैक्स हाइलाइट करना और कोड पूरा करना: IDE अब सामान्य CMake निर्देशों के लिए, कोड पूरा करने के सुझाव देता है और उन्हें हाइलाइट करता है. इसके अलावा, किसी फ़ाइल पर नेविगेट करने के लिए, उस पर क्लिक करते समय Control बटन (Mac पर Command) दबाएं.
- कोड को फिर से फ़ॉर्मैट करना: अब CMake बिल्ड स्क्रिप्ट में कोड स्टाइल लागू करने के लिए, IntelliJ के कोड को फिर से फ़ॉर्मैट करने के विकल्प का इस्तेमाल किया जा सकता है.
- सुरक्षित रीफ़ैक्टरिंग: IDE में पहले से मौजूद रीफ़ैक्टरिंग टूल अब यह भी जांच करते हैं कि क्या आपने उन फ़ाइलों का नाम बदला है या उन्हें मिटाया है जिनका रेफ़रंस, CMake वाली आपकी स्क्रिप्ट में दिया गया है.
बाहरी हेडर फ़ाइलों पर नेविगेट करना
Android Studio के पिछले वर्शन में प्रोजेक्ट विंडो का इस्तेमाल करते समय, सिर्फ़ उन हेडर फ़ाइलों को नेविगेट और जांचा जा सकता था जो किसी लोकल प्रोजेक्ट से बनाई गई लाइब्रेरी से जुड़ी होती हैं. इस रिलीज़ के साथ, अब बाहरी C/C++ लाइब्रेरी डिपेंडेंसी के साथ शामिल हेडर फ़ाइलों को भी देखा और जांचा जा सकता है. इन लाइब्रेरी को ऐप्लिकेशन प्रोजेक्ट में इंपोर्ट किया जाता है.
अगर आपने पहले से ही अपने प्रोजेक्ट में C/C++ कोड और लाइब्रेरी शामिल की हैं, तो मुख्य मेन्यू से व्यू > टूल विंडो > प्रोजेक्ट चुनकर, IDE की बाईं ओर मौजूद प्रोजेक्ट विंडो खोलें. इसके बाद, ड्रॉप-डाउन मेन्यू से Android चुनें. cpp डायरेक्ट्री में, आपके ऐप्लिकेशन प्रोजेक्ट के दायरे में आने वाले सभी हेडर, आपकी हर स्थानीय C/C++ लाइब्रेरी डिपेंडेंसी के लिए include नोड के तहत व्यवस्थित किए जाते हैं, जैसा कि यहां दिखाया गया है.
नेटिव मल्टीडेक्स की सुविधा डिफ़ॉल्ट रूप से चालू रहती है
Android Studio के पिछले वर्शन में, किसी ऐप्लिकेशन के डीबग वर्शन को Android API लेवल 21 या उसके बाद के वर्शन पर चलने वाले डिवाइस पर डिप्लॉय करते समय, नेटिव मल्टीडेक्स की सुविधा चालू होती थी. अब, डिवाइस पर डिप्लॉय करने या रिलीज़ के लिए APK बनाने के लिए, Gradle के लिए Android प्लग इन, minSdkVersion=21
या इसके बाद के वर्शन को सेट करने वाले सभी मॉड्यूल के लिए नेटिव मल्टीडेक्स को चालू करता है.
AAPT2 को Google के Maven डेटा स्टोर करने की जगह पर ले जाया गया
Android Studio 3.2 से, AAPT2 (Android एसेट पैकेजिंग टूल 2) का सोर्स, Google की Maven रिपॉज़िटरी है.
AAPT2 का इस्तेमाल करने के लिए, पक्का करें कि आपकी build.gradle
फ़ाइल में google()
डिपेंडेंसी हो, जैसा कि यहां दिखाया गया है:
buildscript { repositories { google() // here jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.2.0' } } allprojects { repositories { google() // and here jcenter() } }
buildscript { repositories { google() // here jcenter() } dependencies { classpath("com.android.tools.build:gradle:3.2.0") } } allprojects { repositories { google() // and here jcenter() } }
AAPT2 के नए वर्शन में कई समस्याएं ठीक की गई हैं. इनमें, Windows पर गैर-ASCII वर्णों को बेहतर तरीके से मैनेज करना भी शामिल है.
मांग पर कॉन्फ़िगरेशन हटाना
Android Studio से ज़रूरत के हिसाब से कॉन्फ़िगर करें सेटिंग हटा दी गई है.
Android Studio अब Gradle को --configure-on-demand
आर्ग्युमेंट पास नहीं करता.
ADB कनेक्शन असिस्टेंट
ADB कनेक्शन असिस्टेंट की नई सुविधा, Android डीबग ब्रिज (ADB) कनेक्शन के ज़रिए डिवाइस को सेट अप करने और उसका इस्तेमाल करने के लिए, सिलसिलेवार निर्देश देती है.
Assistant को शुरू करने के लिए, टूल > कनेक्शन असिस्टेंट चुनें.
ADB कनेक्शन असिस्टेंट, Assistant पैनल में पेजों की एक सीरीज़ में निर्देश, काम के हिसाब से कंट्रोल, और कनेक्ट किए गए डिवाइसों की सूची उपलब्ध कराता है.
एम्युलेटर में किए गए सुधार
अब Android एमुलेटर में, किसी AVD (Android वर्चुअल डिवाइस) के स्नैपशॉट को कभी भी सेव और लोड किया जा सकता है. इससे, जांच के लिए एमुलेट किए गए डिवाइस को पहले जैसा करने में तेज़ी और आसानी आती है. AVD मैनेजर का इस्तेमाल करके किसी AVD में बदलाव करने पर, यह तय किया जा सकता है कि AVD शुरू होने पर कौनसा AVD स्नैपशॉट लोड किया जाए.
AVD स्नैपशॉट को सेव करने, लोड करने, और मैनेज करने के कंट्रोल अब एमुलेटर की बेहतर कंट्रोल विंडो में, स्नैपशॉट टैब में मौजूद हैं.
ज़्यादा जानकारी के लिए, स्नैपशॉट देखें.
एम्युलेटर में हुए बदलावों और इसमें जो नई सुविधाएं जोड़ी गई हैं उनके बारे में ज़्यादा जानने के लिए, एम्युलेटर के रिलीज़ नोट देखें.
3.1 (मार्च 2018)
Android Studio 3.1.0 एक मुख्य रिलीज़ है. इसमें कई नई सुविधाएं और सुधार शामिल हैं.
3.1.4 (अगस्त 2018)
Android Studio 3.1 के इस अपडेट में ये बदलाव और सुधार शामिल हैं:
- बंडल किए गए Kotlin का वर्शन अब 1.2.50 है.
-
नए प्रोजेक्ट,
kotlin-stdlib-jre*
आर्टफ़ैक्ट के बजायkotlin-stdlib-jdk* artifacts
के साथ बनाए जाते हैं.kotlin-stdlib-jre*
आर्टफ़ैक्ट का इस्तेमाल अब नहीं किया जाता. - ProGuard के नियमों को R8 की मदद से पार्स करने की सुविधा को बेहतर बनाया गया है.
- ये गड़बड़ियां ठीक कर दी गई हैं:
-
Kotlin की Main क्लास को चलाने की कोशिश करने पर, गड़बड़ी का यह मैसेज मिला:
"Error: Could not find or load main class..."
- R8, कुछ ऑप्टिमाइज़ेशन करते समय अनलिमिटेड लूप में चला गया.
- रन विंडो में पूरे न हुए टेस्ट फिर से चलाएं कमांड का इस्तेमाल करने पर, कभी-कभी गलत तरीके से "कोई टेस्ट नहीं मिला" मैसेज दिखता था.
-
D8 ने
invoke-virtual
इंस्टेंस को सही तरीके से मैनेज नहीं किया, जिसकी वजह सेVerifyError
के साथ क्रैश हुआ:invoke-super/virtual can't be used on private method
-
डेटा बाइंडिंग कंपाइलर,
com.android.tools:annotations
के पुराने वर्शन पर निर्भर था. कंपाइलर अब, उपलब्ध होने पर, बुनियादी प्रोजेक्ट के टूल एनोटेशन का इस्तेमाल करता है. - प्रोफ़ाइलर का इस्तेमाल करते समय, फ़्रैगमेंट ट्रांज़िशन के दौरान Android Studio क्रैश हो गया.
- टेक्स्ट बॉक्स वाले लेआउट की डीबगिंग करते समय, डीबगर क्रैश हो गया.
- D8, खास वर्णों वाली कुछ ZIP फ़ाइलों को पढ़ने में कामयाब नहीं हुआ.
3.1.3 (जून 2018)
Android Studio 3.1 के इस अपडेट में, इन गड़बड़ियों को ठीक किया गया है:
- मेमोरी लीक की वजह से, Layout Editor का इस्तेमाल करने के बाद Android Studio धीमा हो गया और काम नहीं कर रहा था. इस अपडेट में इनमें से ज़्यादातर समस्याओं को ठीक किया गया है. हम जल्द ही एक और अपडेट रिलीज़ करेंगे, ताकि अन्य मेमोरी लीक की समस्या को ठीक किया जा सके.
- D8 के साथ बनाए गए कुछ ऐप्लिकेशन, Verizon Ellipsis टैबलेट पर क्रैश हो गए.
-
D8 की मदद से बनाए गए ऐप्लिकेशन, Android 5.0 या
5.1 (एपीआई लेवल 21 या 22) पर चलने वाले डिवाइसों पर,
INSTALL_FAILED_DEXOPT
गड़बड़ी की वजह से इंस्टॉल नहीं हो पाए. - OkHttp लाइब्रेरी का इस्तेमाल करने वाले और D8 के साथ बनाए गए कुछ ऐप्लिकेशन, Android 4.4 (एपीआई लेवल 19) पर क्रैश हो गए.
-
कभी-कभी Android Studio शुरू नहीं होता. ऐसा तब होता है, जब
com.intellij.psi.jsp.JspElementType
के लिए क्लास शुरू करने के दौरान,ProcessCanceledException
दिखता है.
3.1.2 (अप्रैल 2018)
Android Studio 3.1 के इस अपडेट में, इन गड़बड़ियों को ठीक किया गया है:
- कुछ मामलों में, Android Studio बंद करते समय अनलिमिटेड समय तक फ़्रीज़ हो जाता है.
-
इंस्टैंट रन की सुविधा चालू होने पर, सोर्स सेट के साथ कॉन्फ़िगर किए गए बिल्ड, इस मैसेज के साथ पूरा नहीं हो पाए:
"The SourceSet name is not recognized by the Android Gradle Plugin."
- इंस्टैंट रन की सुविधा चालू होने पर, रन निर्देश से ट्रिगर होने पर, नए Kotlin प्रोजेक्ट के बिल्ड नहीं बन पाते थे.
-
build.gradle
फ़ाइल में बदलाव करते समय, कभी-कभी किसी वर्ण को टाइप करने और स्क्रीन पर उस वर्ण के दिखने में ज़्यादा समय लगता था. -
बड़ी संख्या में मॉड्यूल या बाहरी डिपेंडेंसी वाले कुछ प्रोजेक्ट को इंडेक्स करते समय, गड़बड़ी की वजह से बिल्ड नहीं हो पाया. इस दौरान, गड़बड़ी का यह मैसेज दिखता है:
"RejectedExecutionException: Thread limit exceeded replacing blocked worker"
- D8 की मुख्य DEX सूची का हिसाब लगाते समय, कुछ रिफ़्लेक्टिव invocatioन को ध्यान में नहीं रखा जा रहा था.
इस अपडेट में ऐसे बदलाव भी शामिल हैं जिनकी मदद से, कुछ मामलों में Gradle से लिंट की जांच करने की प्रोसेस बहुत तेज़ हो जाती है.
3.1.1 (अप्रैल 2018)
Android Studio 3.1 के इस अपडेट में, इन गड़बड़ियों को ठीक किया गया है:
-
कुछ मामलों में, जब Android Studio 3.0 में बनाए गए प्रोजेक्ट को पहली बार Android Studio 3.1 में खोला गया, तो Gradle के बारे में जानकारी रखने वाले Make टास्क को रन/डीबग कॉन्फ़िगरेशन में लॉन्च से पहले सेक्शन से हटा दिया गया. इस वजह से, रन या डीबग करें बटन पर क्लिक करने पर प्रोजेक्ट नहीं बनते थे. इसकी वजह से, इंस्टैंट रन का इस्तेमाल करते समय गलत APK डिप्लॉय होने और क्रैश होने जैसी गड़बड़ियां होती थीं.
इस समस्या को हल करने के लिए, Android Studio 3.1.1 उन प्रोजेक्ट के लिए, Gradle-aware Make टास्क को रन कॉन्फ़िगरेशन में जोड़ता है जिनमें यह एंट्री मौजूद नहीं है. यह बदलाव, Gradle के पहले सिंक के बाद तब होता है, जब प्रोजेक्ट लोड होता है.
- अगर बेहतर प्रोफ़ाइलिंग चालू थी, तो टेक्स्ट बॉक्स वाले लेआउट को डीबग करते समय डीबगर क्रैश हो गया.
- वैरिएंट बनाएं पर क्लिक करने के बाद, Android Studio फ़्रीज़ हो गया.
- AAR (Android संग्रह) फ़ाइलों को दो बार निकाला गया था. एक बार Gradle के सिंक होने की प्रोसेस के दौरान और एक बार Gradle के बिल्ड होने की प्रोसेस के दौरान.
- एसवीजी फ़ाइलों से इंपोर्ट किए गए कुछ वेक्टर ड्रॉबल में एलिमेंट मौजूद नहीं थे.
-
compile
डिपेंडेंसी कॉन्फ़िगरेशन के बंद होने के बारे में चेतावनी को अपडेट किया गया है. इसमेंimplementation
औरapi
कॉन्फ़िगरेशन के बारे में बेहतर दिशा-निर्देश दिए गए हैं.compile
कॉन्फ़िगरेशन का इस्तेमाल बंद करने के बारे में जानकारी पाने के लिए, नए डिपेंडेंसी कॉन्फ़िगरेशन के दस्तावेज़ देखें.
कोडिंग/आईडीई
IntelliJ 2017.3.3
Android Studio के मुख्य IDE को अपडेट किया गया है. इसमें 2017.3.3 रिलीज़ के ज़रिए, IntelliJ IDEA के सुधारों को शामिल किया गया है. इन सुधारों में, कलेक्शन और स्ट्रिंग के लिए बेहतर कंट्रोल फ़्लो विश्लेषण, वैल्यू के शून्य होने की संभावना का बेहतर अनुमान, तुरंत ठीक करने की नई सुविधाएं वगैरह शामिल हैं.
ज़्यादा जानकारी के लिए, IntelliJ IDEA के वर्शन 2017.2 और 2017.3 के लिए, JetBrains के रिलीज़ नोट देखें. साथ ही, गड़बड़ी ठीक करने वाले अपडेट के लिए, JetBrains के रिलीज़ नोट भी देखें.
SQL में बदलाव करने से जुड़ी सुविधाओं में, रूम की मदद से किए गए सुधार
Room डेटाबेस लाइब्रेरी का इस्तेमाल करने पर, SQL एडिटिंग में किए गए कई सुधारों का फ़ायदा लिया जा सकता है:
Query
में कोड पूरा करने की सुविधा, SQL टेबल (इकाइयां), कॉलम, क्वेरी पैरामीटर, उपनाम, जॉइन, सबक्वेरी, और WITH क्लॉज़ को समझती है.- एसक्यूएल सिंटैक्स हाइलाइट करने की सुविधा अब काम करती है.
- SQL में टेबल के नाम पर दायां क्लिक करके, उसका नाम बदला जा सकता है. इससे, उससे जुड़ा Java या Kotlin कोड भी फिर से लिखा जाता है. उदाहरण के लिए, क्वेरी का रिटर्न टाइप. नाम बदलने की प्रोसेस, दूसरी दिशा में भी काम करती है. इसलिए, किसी Java क्लास या फ़ील्ड का नाम बदलने पर, उससे जुड़ा SQL कोड फिर से लिखा जाता है.
- इस्तेमाल के उदाहरण ढूंढें का इस्तेमाल करने पर, SQL के इस्तेमाल के उदाहरण दिखते हैं. इसके लिए, दाईं ओर क्लिक करें और संदर्भ मेन्यू से इस्तेमाल के उदाहरण ढूंढें को चुनें.
- Java या Kotlin कोड में, SQL इकाई के एलान पर जाने के लिए, इकाई पर क्लिक करते समय Control (Mac पर Command) को दबाकर रखें.
Room के साथ SQL का इस्तेमाल करने के बारे में जानने के लिए, Room का इस्तेमाल करके, डेटा को किसी स्थानीय डेटाबेस में सेव करना लेख पढ़ें.
डेटा बाइंडिंग में अपडेट
इस अपडेट में, डेटा बाइंडिंग के लिए कई सुधार किए गए हैं:
-
अब डेटा बाइंडिंग एक्सप्रेशन में,
LiveData
ऑब्जेक्ट को ऑब्ज़र्व किए जा सकने वाले फ़ील्ड के तौर पर इस्तेमाल किया जा सकता है.ViewDataBinding
क्लास में अब एक नयाsetLifecycle()
तरीका शामिल है. इसका इस्तेमाल,LiveData
ऑब्जेक्ट को ऑब्ज़र्व करने के लिए किया जाता है. -
अब
ObservableField
क्लास के कंस्ट्रक्टर में,Observable
ऑब्जेक्ट के साथ-साथ अन्य ऑब्जेक्ट भी इस्तेमाल किए जा सकते हैं. -
अपनी डेटा बाइंडिंग क्लास के लिए, नए इंक्रीमेंटल कंपाइलर की झलक देखी जा सकती है. इस नए कंपाइलर के बारे में जानकारी और इसे चालू करने के निर्देशों के लिए, डेटा बाइंडिंग कंपाइलर V2 देखें.
नए कंपाइलर के फ़ायदों में ये शामिल हैं:
-
ViewBinding
क्लास, Java कंपाइलर से पहले, Gradle के लिए Android प्लग इन से जनरेट होती हैं. - ऐप्लिकेशन को कंपाइल करने पर, लाइब्रेरी में जनरेट की गई बाइंडिंग क्लासें बनी रहती हैं. इन्हें हर बार फिर से जनरेट नहीं किया जाता. इससे कई मॉड्यूल वाले प्रोजेक्ट की परफ़ॉर्मेंस काफ़ी बेहतर हो सकती है.
-
कंपाइलर और Gradle
D8, डिफ़ॉल्ट DEX कंपाइलर है
D8 कंपाइलर का इस्तेमाल, अब डिफ़ॉल्ट रूप से DEX बाइटकोड जनरेट करने के लिए किया जाता है.
इस नए DEX कंपाइलर के कई फ़ायदे हैं. इनमें ये भी शामिल हैं:
- तेज़ी से डेक्स करना
- कम मेमोरी का इस्तेमाल
- बेहतर कोड जनरेशन (बेहतर रजिस्टर ऐलोकेशन, स्मार्ट स्ट्रिंग टेबल)
- कोड में आगे बढ़ते समय, डिबग करने का बेहतर अनुभव
इन फ़ायदों को पाने के लिए, आपको अपने कोड या डेवलपमेंट वर्कफ़्लो में कोई बदलाव करने की ज़रूरत नहीं है. ऐसा तब तक नहीं करना होगा, जब तक आपने पहले से ही D8 कंपाइलर को मैन्युअल तरीके से बंद नहीं किया है.
अगर आपने अपने gradle.properties
में android.enableD8
को false
पर सेट किया है, तो उस फ़्लैग को मिटाएं या उसे true
पर सेट करें:
android.enableD8=true
ज़्यादा जानकारी के लिए, नया DEX कंपाइलर देखें.
इंक्रीमेंटल डीसुगरिंग
Java 8 भाषा की सुविधाओं का इस्तेमाल करने वाले प्रोजेक्ट के लिए, डिसुगर करने की प्रोसेस को डिफ़ॉल्ट रूप से चालू किया जाता है. इससे प्रोजेक्ट को बनाने में लगने वाला समय कम हो सकता है.
डीसुगरिंग की प्रोसेस में, सिंटैक्टिक शुगर को ऐसे फ़ॉर्मैट में बदला जाता है जिसे कंपाइलर ज़्यादा आसानी से प्रोसेस कर सके.
अपने प्रोजेक्ट की gradle.properties
फ़ाइल में ये बताकर, धीरे-धीरे डेसुगर करने की सुविधा बंद की जा सकती है:
android.enableIncrementalDesugaring=false
आसानी से इस्तेमाल की जा सकने वाली आउटपुट विंडो
Gradle Console को बिल्ड विंडो से बदल दिया गया है. इसमें सिंक करें और बिल्ड करें टैब होते हैं.
आसानी से इस्तेमाल की जा सकने वाली नई बिल्ड विंडो का इस्तेमाल करने के तरीके के बारे में जानने के लिए, बिल्ड की प्रोसेस को मॉनिटर करना लेख पढ़ें.
एक साथ कई अपडेट और इंडेक्स करने की सुविधा
Gradle सिंक और IDE इंडेक्स करने की प्रोसेस अब ज़्यादा असरदार हो गई है. इससे, इंडेक्स करने के कई ग़ैर-ज़रूरी कामों में बर्बाद होने वाले समय की बचत होती है.
C++ और LLDB
हमने C++ डेवलपमेंट के कोडिंग, सिंक करने, बिल्ड करने, और डीबग करने के चरणों में, क्वालिटी और परफ़ॉर्मेंस से जुड़े कई सुधार किए हैं. इनमें ये सुधार शामिल हैं:
-
अगर बड़े C++ प्रोजेक्ट के साथ काम किया जाता है, तो आपको सिंबल बनाने में लगने वाले समय में काफ़ी सुधार दिखेगा. बड़े प्रोजेक्ट के लिए, सिंक करने में लगने वाला समय भी काफ़ी कम हो जाता है.
-
कैश मेमोरी में सेव किए गए नतीजों का ज़्यादा बेहतर तरीके से फिर से इस्तेमाल करने की सुविधा की मदद से, CMake के साथ बिल्ड करने और सिंक करने के दौरान परफ़ॉर्मेंस को बेहतर बनाया गया है.
-
ज़्यादा C++ डेटा स्ट्रक्चर के लिए फ़ॉर्मैटर ("प्रीटी प्रिंटर") जोड़ने से, LLDB आउटपुट को पढ़ना आसान हो जाता है.
-
LLDB अब सिर्फ़ Android 4.1 (एपीआई लेवल 16) और उसके बाद के वर्शन पर काम करता है.
ध्यान दें: Android Studio 3.0 या इसके बाद के वर्शन में, नेटिव डीबगिंग की सुविधा 32-बिट Windows पर काम नहीं करती. अगर 32-बिट Windows का इस्तेमाल किया जा रहा है और आपको नेटिव कोड को डीबग करना है, तो Android Studio 2.3 का इस्तेमाल करें.
Kotlin
Kotlin को 1.2.30 वर्शन पर अपग्रेड किया गया
Android Studio 3.1 में, Kotlin का वर्शन 1.2.30 शामिल है.
अब Kotlin कोड का विश्लेषण, कमांड-लाइन लिंट की जांच की मदद से किया जाता है
कमांड लाइन से लिंट चलाने पर, अब आपकी Kotlin क्लास का विश्लेषण किया जाता है.
आपको जिस प्रोजेक्ट पर लिंट चलाना है उसके लिए,
शीर्ष-लेवल की build.gradle
फ़ाइल में Google की Maven रिपॉज़िटरी को शामिल करना ज़रूरी है. Maven का डेटा स्टोर करने की जगह, Android Studio 3.0 और उसके बाद के वर्शन में बनाए गए प्रोजेक्ट के लिए पहले से ही शामिल होती है.
परफ़ॉर्मेंस टूल
सीपीयू प्रोफ़ाइलर की मदद से, नेटिव C++ प्रोसेस का सैंपल लेना
सीपीयू प्रोफ़ाइलर में अब एक डिफ़ॉल्ट कॉन्फ़िगरेशन शामिल है. इससे, आपके ऐप्लिकेशन के नेटिव थ्रेड के सैंपल किए गए ट्रेस रिकॉर्ड किए जा सकते हैं. इस कॉन्फ़िगरेशन का इस्तेमाल करने के लिए, अपने ऐप्लिकेशन को Android 8.0 (एपीआई लेवल 26) या उसके बाद के वर्शन पर चलने वाले डिवाइस पर डिप्लॉय करें. इसके बाद, सीपीयू प्रोफ़ाइलर के रिकॉर्डिंग कॉन्फ़िगरेशन ड्रॉपडाउन मेन्यू से सैंपल किया गया (नेटिव) चुनें. इसके बाद, आम तौर पर किसी ट्रैक को रिकॉर्ड करें और उसकी जांच करें.
रिकॉर्डिंग कॉन्फ़िगरेशन बनाकर, डिफ़ॉल्ट सेटिंग बदली जा सकती हैं. जैसे, सैंपलिंग इंटरवल.
Java थ्रेड को ट्रैक करने के लिए, सैंपल किया गया (Java) या इंस्ट्रूमेंट किया गया (Java) कॉन्फ़िगरेशन चुनें.
सीपीयू ट्रेस, मेमोरी के लिए तय किए गए ऐलोकेशन के नतीजे, और हेप डंप को फ़िल्टर करना
सीपीयू प्रोफ़ाइलर और मेमोरी प्रोफ़ाइलर में, खोज की सुविधा शामिल होती है. इसकी मदद से, किसी तरीके के ट्रैक, मेमोरी के ऐलोकेशन या हेप डंप को रिकॉर्ड करके, नतीजों को फ़िल्टर किया जा सकता है.
खोजने के लिए, पैनल के सबसे ऊपर दाएं कोने में मौजूद, फ़िल्टर करें पर क्लिक करें. इसके बाद, अपनी क्वेरी लिखें और Enter दबाएं.
सलाह: Control + F (Mac पर Command + F) दबाकर भी खोज फ़ील्ड खोला जा सकता है.
सीपीयू प्रोफ़ाइलर के फ़्लेम चार्ट टैब में, कॉल स्टैक को हाइलाइट किया जाता है. साथ ही, चार्ट की बाईं ओर ले जाया जाता है. इन कॉल स्टैक में, आपकी खोज क्वेरी से जुड़े तरीके शामिल होते हैं.
तरीके, क्लास या पैकेज के नाम के हिसाब से फ़िल्टर करने के बारे में ज़्यादा जानने के लिए, तरीके के ट्रैक रिकॉर्ड करना और उनकी जांच करना लेख पढ़ें.
नेटवर्क प्रोफ़ाइलर में अनुरोध टैब
नेटवर्क प्रोफ़ाइलर में अब अनुरोध टैब शामिल है. इसमें, चुनी गई टाइमलाइन के दौरान नेटवर्क अनुरोधों के बारे में जानकारी मिलती है. पिछले वर्शन में, नेटवर्क प्रोफ़ाइलर सिर्फ़ नेटवर्क रिस्पॉन्स के बारे में जानकारी देता था.
नेटवर्क प्रोफ़ाइलर में थ्रेड व्यू
नेटवर्क प्रोफ़ाइलर में टाइमलाइन का कोई हिस्सा चुनने के बाद, उस समयावधि के दौरान नेटवर्क गतिविधि के बारे में ज़्यादा जानकारी देखने के लिए, इनमें से कोई एक टैब चुनें:
- कनेक्शन व्यू: यह Android Studio के पिछले वर्शन जैसी ही जानकारी देता है. इसमें, आपके ऐप्लिकेशन के सभी सीपीयू थ्रेड में, टाइमलाइन के चुने गए हिस्से के दौरान भेजी गई या पाने वाली फ़ाइलों की सूची होती है. हर अनुरोध के लिए, साइज़, टाइप, स्टेटस, और ट्रांसमिशन की अवधि की जांच की जा सकती है.
- थ्रेड व्यू: यह आपके ऐप्लिकेशन के हर सीपीयू थ्रेड की नेटवर्क गतिविधि दिखाता है. इस व्यू की मदद से, यह जांच की जा सकती है कि आपके ऐप्लिकेशन के कौनसे थ्रेड, हर नेटवर्क अनुरोध के लिए ज़िम्मेदार हैं.
लेआउट इंस्पेक्टर
लेआउट इंस्पेक्टर में नई सुविधाएं जोड़ी गई हैं. इनमें, पहले इस्तेमाल किए जा रहे हैरारकी व्यूअर और पिक्सल परफ़ेक्ट टूल की कुछ सुविधाएं भी शामिल हैं:
- लेआउट पर जाने और उनकी जांच करने के लिए, ज़ूम बटन और कीबोर्ड शॉर्टकट
- रेफ़रंस ग्रिड ओवरले
- रेफ़रंस इमेज लोड करने और उसे ओवरले के तौर पर इस्तेमाल करने की सुविधा (यह सुविधा,
- किसी जटिल लेआउट में किसी व्यू को अलग करने के लिए, सबट्री की झलक रेंडर करना
लेआउट एडिटर
लेआउट एडिटर में मौजूद पैलेट में कई सुधार किए गए हैं:
- व्यू और लेआउट के लिए कैटगरी को फिर से व्यवस्थित करना.
- व्यू और लेआउट के लिए नई सामान्य कैटगरी, जिसे पसंदीदा कमांड की मदद से जोड़ा जा सकता है.
- व्यू और लेआउट खोजने की सुविधा को बेहतर बनाया गया है.
- किसी खास व्यू या लेआउट एलिमेंट के लिए, दस्तावेज़ खोलने के लिए नए निर्देश.
किसी व्यू या लेआउट को किसी दूसरे टाइप के व्यू या लेआउट में बदलने के लिए, कॉम्पोनेंट ट्री या डिज़ाइन एडिटर में, नए व्यू बदलें कमांड का इस्तेमाल किया जा सकता है.
अब चुने गए व्यू के आस-पास मौजूद आइटम के लिए, आसानी से पाबंदियां बनाई जा सकती हैं. इसके लिए, एट्रिब्यूट विंडो में सबसे ऊपर मौजूद, व्यू इंस्पेक्टर में, नया कनेक्शन बनाएं बटन का इस्तेमाल करें.
ऐप्लिकेशन चलाना और इंस्टैंट रन
डिप्लॉयमेंट टारगेट चुनें डायलॉग में, आने वाले समय में लॉन्च के लिए वही विकल्प इस्तेमाल करें विकल्प के व्यवहार को ज़्यादा बेहतर बनाया गया है. अगर एक ही विकल्प का इस्तेमाल करें विकल्प चालू है, तो डिप्लॉयमेंट टारगेट चुनें डायलॉग सिर्फ़ पहली बार तब खुलता है, जब चालू करें कमांड का इस्तेमाल किया जाता है. यह तब तक खुला रहता है, जब तक चुना गया डिवाइस कनेक्ट रहता है.
Android 8.0 (एपीआई लेवल 26) या इसके बाद के वर्शन पर चलने वाले डिवाइस को टारगेट करने पर, इंस्टैंट रन, ऐप्लिकेशन को रीस्टार्ट किए बिना, संसाधनों में बदलावों को डिप्लॉय कर सकता है. ऐसा इसलिए होता है, क्योंकि संसाधन, स्प्लिट APK में मौजूद होते हैं.
एम्युलेटर
Android Studio 3.0 के बाद, एमुलेटर में जो बदलाव हुए हैं और जो नए फ़ीचर जोड़े गए हैं उनके बारे में जानने के लिए, 27.0.2 से लेकर 27.1.12 तक के Android एमुलेटर के रिलीज़ नोट देखें.
इसमें ये मुख्य सुधार किए गए हैं:
- क्विक बूट स्नैपशॉट, ताकि एमुलेटर की स्थिति को सेव किया जा सके और उसे तेज़ी से शुरू किया जा सके. साथ ही, अभी सेव करें कमांड का इस्तेमाल करके, अपनी पसंद के मुताबिक शुरू करने की स्थिति सेव की जा सके.
- विंडो के बिना एम्युलेटर की स्क्रीन.
- Android 8.0 (एपीआई लेवल 26), Android 8.1 (एपीआई लेवल 27), और Android P के डेवलपर प्रीव्यू के लिए सिस्टम इमेज.
यूज़र इंटरफ़ेस और उपयोगकर्ता अनुभव में सुधार
ज़्यादा टूलटिप, कीबोर्ड शॉर्टकट, और मददगार मैसेज
हमने Android Studio में कई जगहों पर टूलटिप और मददगार मैसेज ओवरले जोड़े हैं.
कई निर्देशों के लिए कीबोर्ड शॉर्टकट देखने के लिए, माउस पॉइंटर को किसी बटन पर तब तक रखें, जब तक टूलटिप न दिख जाए.
टूल > Android मेन्यू हटाया गया
टूल > Android मेन्यू को हटा दिया गया है. पहले इस मेन्यू में मौजूद निर्देशों को दूसरी जगह ले जाया गया है.
- कई निर्देश सीधे टूल मेन्यू में ले जाए गए हैं.
- Gradle फ़ाइलों के साथ प्रोजेक्ट सिंक करें कमांड को फ़ाइल मेन्यू में ले जाया गया है.
- डिवाइस मॉनिटर कमांड को हटा दिया गया है, जैसा कि यहां बताया गया है.
डिवाइस मॉनिटर, कमांड लाइन से उपलब्ध है
Android Studio 3.1 में, डिवाइस मॉनिटर की भूमिका पहले के मुकाबले कम हो गई है. कई मामलों में, डिवाइस मॉनिटर की मदद से मिलने वाली सुविधाएं, अब नए और बेहतर टूल से मिलती हैं.
कमांड लाइन से डिवाइस मॉनिटर को चालू करने के निर्देशों और डिवाइस मॉनिटर के ज़रिए उपलब्ध टूल के बारे में जानकारी पाने के लिए, डिवाइस मॉनिटर का दस्तावेज़ देखें.
3.0 (अक्टूबर 2017)
Android Studio 3.0.0 एक मुख्य रिलीज़ है. इसमें कई नई सुविधाएं और सुधार शामिल हैं.
macOS इस्तेमाल करने वाले लोग: अगर Android Studio के पुराने वर्शन को अपडेट किया जा रहा है, तो आपको अपडेट से जुड़ी गड़बड़ी का एक डायलॉग दिख सकता है. इसमें, "इंस्टॉलेशन के दौरान कुछ समस्याएं मिलीं" लिखा होगा. इस गड़बड़ी को अनदेखा करें और इंस्टॉलेशन फिर से शुरू करने के लिए, रद्द करें पर क्लिक करें.
3.0.1 (नवंबर 2017)
यह Android Studio 3.0 का एक छोटा अपडेट है. इसमें सामान्य गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस को बेहतर बनाया गया है.
Gradle 3.0.0 के लिए Android प्लग इन
Gradle के लिए Android प्लग इन के नए वर्शन में कई सुधार और नई सुविधाएं शामिल हैं. हालांकि, यह मुख्य रूप से उन प्रोजेक्ट के लिए बिल्ड की परफ़ॉर्मेंस को बेहतर बनाता है जिनमें बड़ी संख्या में मॉड्यूल होते हैं. इन बड़े प्रोजेक्ट के साथ नए प्लग इन का इस्तेमाल करने पर, आपको ये फ़ायदे मिलेंगे:
- डिपेंडेंसी रिज़ॉल्यूशन में देरी की नई सुविधा की वजह से, कॉन्फ़िगरेशन को बिल्ड करने में लगने वाला समय कम हो गया है.
- वैरिएंट के हिसाब से डिपेंडेंसी रिज़ॉल्यूशन सिर्फ़ उन प्रोजेक्ट और वैरिएंट के लिए जो बनाए जा रहे हैं.
- कोड या संसाधनों में आसान बदलाव करने पर, बिल्ड प्रोसेस तेज़ी से पूरी होती है.
ध्यान दें: इन सुधारों के लिए, ऐसे अहम बदलाव करने पड़े हैं जिनकी वजह से प्लग इन के कुछ काम करने के तरीके, डीएसएल, और एपीआई काम नहीं करेंगे. 3.0.0 वर्शन पर अपग्रेड करने के लिए, हो सकता है कि आपको अपनी बिल्ड फ़ाइलों और Gradle प्लग इन में बदलाव करने पड़ें.
इस वर्शन में ये चीज़ें भी शामिल हैं:
- Android 8.0 के साथ काम करता है.
- भाषा के संसाधनों के आधार पर अलग-अलग APK बनाने की सुविधा.
- Java 8 लाइब्रेरी और Java 8 भाषा की सुविधाओं के साथ काम करता है. हालांकि, इसमें Jack कंपाइलर का इस्तेमाल नहीं किया जाता.
- Android Test Support Library 1.0 (Android Test Utility और Android Test Orchestrator) के साथ काम करता है.
- ndk-build और cmake के बिल्ड की स्पीड बेहतर की गई है.
- Gradle सिंक करने की स्पीड को बेहतर बनाया गया है.
- AAPT2 अब डिफ़ॉल्ट रूप से चालू है.
ndkCompile
का इस्तेमाल करने पर अब ज़्यादा पाबंदियां हैं. इसके बजाय, आपको CMake या ndk-build का इस्तेमाल करके, उस नेटिव कोड को कॉम्पाइल करने के लिए माइग्रेट करना चाहिए जिसे आपको अपने APK में पैकेज करना है. ज़्यादा जानने के लिए, ndkcompile से माइग्रेट करना लेख पढ़ें.
क्या बदलाव हुए हैं, इस बारे में ज़्यादा जानकारी के लिए, Gradle के लिए Android प्लग-इन के रिलीज़ नोट देखें.
अगर आप नए प्लग इन पर अपग्रेड करने के लिए तैयार हैं, तो Gradle के लिए Android प्लग इन 3.0.0 पर माइग्रेट करना लेख पढ़ें.
Kotlin सहायता
Google I/O 2017 में की गई घोषणा के मुताबिक, Kotlin प्रोग्रामिंग लैंग्वेज अब Android पर आधिकारिक तौर पर काम करती है. इसलिए, इस रिलीज़ में Android Studio में Android डेवलपमेंट के लिए, Kotlin लैंग्वेज का इस्तेमाल करने की सुविधा शामिल है.
Kotlin को अपने प्रोजेक्ट में शामिल करने के लिए, किसी Java फ़ाइल को Kotlin में बदलें (कोड > Java फ़ाइल को Kotlin फ़ाइल में बदलें पर क्लिक करें) या नया प्रोजेक्ट विज़र्ड का इस्तेमाल करके, Kotlin की सुविधा वाला नया प्रोजेक्ट बनाएं.
शुरू करने के लिए, अपने प्रोजेक्ट में Kotlin जोड़ने का तरीका पढ़ें.
Java 8 भाषा की सुविधाओं के साथ काम करना
अब आपके पास Java 8 भाषा की कुछ सुविधाओं का इस्तेमाल करने और साथ ही, Java 8 की मदद से बनाई गई लाइब्रेरी का इस्तेमाल करने का विकल्प है. Jack की अब ज़रूरत नहीं है. साथ ही, डिफ़ॉल्ट टूलचेन में पहले से मौजूद Java 8 के बेहतर वर्शन का इस्तेमाल करने के लिए, आपको पहले Jack को बंद करना होगा.
अपने प्रोजेक्ट को Java 8 लैंग्वेज टूलचैन का इस्तेमाल करने के लिए अपडेट करने के लिए, सोर्स के साथ काम करने की सुविधा और टारगेट के साथ काम करने की सुविधा को 1.8 पर अपडेट करें. इसके लिए, प्रोजेक्ट स्ट्रक्चर डायलॉग बॉक्स में जाएं (फ़ाइल > प्रोजेक्ट स्ट्रक्चर पर क्लिक करें). ज़्यादा जानने के लिए, Java 8 भाषा की सुविधाओं का इस्तेमाल करने का तरीका पढ़ें.
Android Profiler
नया Android प्रोफ़ाइलर, Android मॉनिटर टूल की जगह लेता है. साथ ही, यह टूल के सीपीयू, मेमोरी, और नेटवर्क के इस्तेमाल को रीयल टाइम में मेज़र करने के लिए, टूल का एक नया सुइट उपलब्ध कराता है. सैंपल पर आधारित मेथड ट्रैकिंग की मदद से, कोड के रनटाइम का पता लगाया जा सकता है, हेप डंप कैप्चर किए जा सकते हैं, मेमोरी के ऐलोकेशन देखे जा सकते हैं, और नेटवर्क से ट्रांसफ़र की गई फ़ाइलों की जानकारी की जांच की जा सकती है.
इसे खोलने के लिए, व्यू > टूल विंडो > Android प्रोफ़ाइलर पर क्लिक करें (या टूलबार में Android प्रोफ़ाइलर पर क्लिक करें).
विंडो में सबसे ऊपर मौजूद इवेंट टाइमलाइन में, टच इवेंट, बटन दबाने, और गतिविधि में हुए बदलाव दिखते हैं. इससे आपको टाइमलाइन में मौजूद परफ़ॉर्मेंस के अन्य इवेंट को समझने में ज़्यादा मदद मिलती है.
ध्यान दें: Logcat व्यू को भी एक अलग विंडो में ले जाया गया है. पहले यह Android मॉनिटर में था, जिसे हटा दिया गया है.
Android प्रोफ़ाइलर की खास जानकारी वाली टाइमलाइन में, सीपीयू, मेमोरी या नेटवर्क टाइमलाइन पर क्लिक करके, उनसे जुड़े प्रोफ़ाइलर टूल ऐक्सेस करें.
सीपीयू प्रोफ़ाइलर
सीपीयू प्रोफ़ाइलर की मदद से, सैंपल या इंस्ट्रूमेंट किए गए सीपीयू ट्रेस को ट्रिगर करके, अपने ऐप्लिकेशन के सीपीयू थ्रेड के इस्तेमाल का विश्लेषण किया जा सकता है. इसके बाद, कई तरह के डेटा व्यू और फ़िल्टर का इस्तेमाल करके, सीपीयू की परफ़ॉर्मेंस से जुड़ी समस्याओं को हल किया जा सकता है.
ज़्यादा जानकारी के लिए, सीपीयू प्रोफ़ाइलर गाइड देखें.
मेमोरी प्रोफ़ाइलर
मेमोरी प्रोफ़ाइलर की मदद से, मेमोरी लीक और मेमोरी चर्न आउट की पहचान की जा सकती है. इनकी वजह से, ऐप्लिकेशन में रुकावट आ सकती है, वह फ़्रीज़ हो सकता है, और यहां तक कि क्रैश भी हो सकता है. यह आपके ऐप्लिकेशन के मेमोरी इस्तेमाल का रीयल टाइम ग्राफ़ दिखाता है. साथ ही, आपको ढेर का डंप कैप्चर करने, ग़ैर-ज़रूरी डेटा को इकट्ठा करने, और मेमोरी के ऐलोकेशन को ट्रैक करने की सुविधा देता है.
ज़्यादा जानकारी के लिए, मेमोरी प्रोफ़ाइलर गाइड देखें.
नेटवर्क प्रोफ़ाइलर
नेटवर्क प्रोफ़ाइलर की मदद से, अपने ऐप्लिकेशन की नेटवर्क गतिविधि पर नज़र रखी जा सकती है. साथ ही, अपने हर नेटवर्क अनुरोध के पेलोड की जांच की जा सकती है और उस कोड से लिंक किया जा सकता है जिसने नेटवर्क अनुरोध जनरेट किया है.
ज़्यादा जानकारी के लिए, नेटवर्क प्रोफ़ाइलर गाइड देखें.
APK की प्रोफ़ाइलिंग और डीबग करना
Android Studio में अब किसी भी APK को प्रोफ़ाइल और डीबग किया जा सकता है. इसके लिए, ज़रूरी है कि APK को डीबग करने की सुविधा चालू करने के लिए बनाया गया हो और आपके पास डीबग सिंबल और सोर्स फ़ाइलों का ऐक्सेस हो.
शुरू करने के लिए, Android Studio की वेलकम स्क्रीन पर, प्रोफ़ाइल या APK को डीबग करें पर क्लिक करें. इसके अलावा, अगर आपने पहले से कोई प्रोजेक्ट खोला हुआ है, तो मेन्यू बार में जाकर फ़ाइल > APK को प्रोफ़ाइल करें या डीबग करें पर क्लिक करें. इससे, अनपैक की गई APK फ़ाइलें दिखती हैं. हालांकि, इससे कोड को डिकंपाइल नहीं किया जाता. इसलिए, ब्रेकपॉइंट सही तरीके से जोड़ने और स्टैक ट्रेस देखने के लिए, आपको Java सोर्स फ़ाइलें और नेटिव डीबग सिंबल अटैच करने होंगे.
ज़्यादा जानकारी के लिए, पहले से बने APKs को प्रोफ़ाइल करना और डीबग करना देखें.
डिवाइस फ़ाइल एक्सप्लोरर
डिवाइस फ़ाइल एक्सप्लोरर की मदद से, कनेक्ट किए गए डिवाइस के फ़ाइल सिस्टम की जांच की जा सकती है. साथ ही, डिवाइस और कंप्यूटर के बीच फ़ाइलें ट्रांसफ़र की जा सकती हैं. यह DDMS में मौजूद फ़ाइल सिस्टम टूल की जगह लेता है.
इसे खोलने के लिए, व्यू > टूल विंडो > डिवाइस फ़ाइल एक्सप्लोरर पर क्लिक करें.
ज़्यादा जानकारी के लिए, डिवाइस फ़ाइल एक्सप्लोरर की गाइड देखें.
Instant Apps के लिए सहायता
Android इंस्टैंट ऐप्लिकेशन के लिए नई सुविधा की मदद से, अपने प्रोजेक्ट में इंस्टैंट ऐप्लिकेशन बनाए जा सकते हैं. इसके लिए, दो नए टाइप के मॉड्यूल का इस्तेमाल किया जाता है: इंस्टैंट ऐप्लिकेशन मॉड्यूल और फ़ीचर मॉड्यूल. इनके लिए, आपको Instant Apps Development SDK टूल इंस्टॉल करना होगा.
Android Studio में मॉड्यूलर बनाने के लिए, रीफ़ैक्टर करने की नई सुविधा भी शामिल है. इससे, किसी मौजूदा प्रोजेक्ट में इंस्टैंट ऐप्लिकेशन की सुविधा जोड़ने में मदद मिलती है. उदाहरण के लिए, अगर आपको कुछ क्लास को इंस्टैंट ऐप्लिकेशन की सुविधा वाले मॉड्यूल में डालने के लिए, अपने प्रोजेक्ट को फिर से व्यवस्थित करना है, तो प्रोजेक्ट विंडो में क्लास चुनें और फिर से व्यवस्थित करें > मॉड्यूल बनाएं पर क्लिक करें. इसके बाद, आपको एक डायलॉग दिखेगा. इसमें वह मॉड्यूल चुनें जहां कक्षाओं को ले जाना है और ठीक है पर क्लिक करें.
जब आप अपने इंस्टैंट ऐप्लिकेशन की जांच करने के लिए तैयार हों, तो कनेक्ट किए गए डिवाइस पर अपना इंस्टैंट ऐप्लिकेशन मॉड्यूल बनाएं और चलाएं. इसके लिए, कॉन्फ़िगरेशन को चलाने के विकल्पों में जाकर, इंस्टैंट ऐप्लिकेशन का यूआरएल डालें: चलाएं > कॉन्फ़िगरेशन में बदलाव करें को चुनें. इसके बाद, अपना इंस्टैंट ऐप्लिकेशन मॉड्यूल चुनें और लॉन्च करने के विकल्प में जाकर यूआरएल सेट करें.
ज़्यादा जानकारी के लिए, Android इंस्टैंट ऐप्लिकेशन देखें.
Android Things मॉड्यूल
नए प्रोजेक्ट और नए मॉड्यूल के विज़र्ड में Android Things के नए टेंप्लेट, ताकि आप Android पर काम करने वाले IOT डिवाइसों के लिए डेवलपमेंट शुरू कर सकें.
ज़्यादा जानकारी के लिए, Android Things प्रोजेक्ट बनाने का तरीका देखें.
अडैप्टिव आइकॉन विज़र्ड
Image Asset Studio अब वेक्टर ड्रॉबल के साथ काम करता है. साथ ही, इसकी मदद से Android 8.0 के लिए अडैप्टिव लॉन्चर आइकॉन बनाए जा सकते हैं. साथ ही, पुराने डिवाइसों के लिए पारंपरिक आइकॉन ("लेगसी" आइकॉन) भी बनाए जा सकते हैं.
शुरू करने के लिए, अपने प्रोजेक्ट में res फ़ोल्डर पर राइट क्लिक करें. इसके बाद, नया > इमेज एसेट पर क्लिक करें. Asset Studio विंडो में, आइकॉन टाइप के तौर पर, लॉन्चर आइकॉन (अडैप्टिव और लेगसी) चुनें.
ध्यान दें: ऐडैप्टिव लॉन्चर आइकॉन का इस्तेमाल करने के लिए, आपको compileSdkVersion
को 26 या उससे ज़्यादा पर सेट करना होगा.
ज़्यादा जानकारी के लिए, अडैप्टिव आइकॉन के बारे में पढ़ें.
फ़ॉन्ट संसाधनों के लिए सहायता
Android 8.0 में नए फ़ॉन्ट संसाधनों का इस्तेमाल करने के लिए, Android Studio में एक फ़ॉन्ट संसाधन चुनने वाला टूल शामिल है. इसकी मदद से, अपने ऐप्लिकेशन में फ़ॉन्ट को बंडल किया जा सकता है या डिवाइस पर फ़ॉन्ट डाउनलोड करने के लिए, अपने प्रोजेक्ट को कॉन्फ़िगर किया जा सकता है. हालांकि, ऐसा तब ही किया जा सकता है, जब डिवाइस पर फ़ॉन्ट उपलब्ध हों. लेआउट एडिटर की मदद से, अपने लेआउट में फ़ॉन्ट की झलक भी देखी जा सकती है.
डाउनलोड किए जा सकने वाले फ़ॉन्ट आज़माने के लिए, पक्का करें कि आपके डिवाइस या एमुलेटर में Google Play services का v11.2.63 या इसके बाद का वर्शन हो. ज़्यादा जानकारी के लिए, डाउनलोड किए जा सकने वाले फ़ॉन्ट के बारे में पढ़ें.
Firebase ऐप्लिकेशन सूची सहायक
ऐप्लिकेशन को इंडेक्स करने की सुविधा की जांच करने के लिए, Firebase Assistant को एक नए ट्यूटोरियल के साथ अपडेट किया गया है. Assistant खोलने के लिए, टूल > Firebase चुनें. इसके बाद, ऐप्लिकेशन को इंडेक्स करना > ऐप्लिकेशन को इंडेक्स करने की सुविधा की जांच करना को चुनें.
ट्यूटोरियल में नए बटन शामिल हैं, जिनकी मदद से सार्वजनिक और निजी कॉन्टेंट को इंंडेक्स करने की सुविधा को टेस्ट किया जा सकता है:
- दूसरे चरण में, खोज के नतीजों की झलक देखें पर क्लिक करके पुष्टि करें कि आपके यूआरएल, Google Search के नतीजों में दिख रहे हैं या नहीं.
- तीसरे चरण में, गड़बड़ियों की जांच करें पर क्लिक करके पुष्टि करें कि आपके ऐप्लिकेशन में मौजूद इंडेक्स किए जा सकने वाले ऑब्जेक्ट, निजी कॉन्टेंट के इंडेक्स में जोड़े गए हैं.
Android ऐप्लिकेशन के लिंक असिस्टेंट
ऐप्लिकेशन लिंक असिस्टेंट को इन नई सुविधाओं के साथ अपडेट किया गया है:
-
हर यूआरएल मैपिंग के लिए यूआरएल टेस्ट जोड़ें, ताकि यह पक्का किया जा सके कि आपके इंटेंट फ़िल्टर, असल यूआरएल को हैंडल करते हैं.
यहां बताए गए
<tools:validation>
टैग का इस्तेमाल करके, इन यूआरएल टेस्ट को मैन्युअल तरीके से भी तय किया जा सकता है. -
Google Smart Lock के साथ काम करने के लिए, सही ऑब्जेक्ट एंट्री के साथ डिजिटल एसेट लिंक फ़ाइल बनाएं. साथ ही, अपनी मेनिफ़ेस्ट फ़ाइल में उससे जुड़ा
asset_statements
<meta-data>
टैग जोड़ें.
यूआरएल इंटेंट-फ़िल्टर की पुष्टि करने वाला टूल
Android Studio में अब मेनिफ़ेस्ट फ़ाइल में एक खास टैग काम करता है. इसकी मदद से, इंटेंट फ़िल्टर यूआरएल की जांच की जा सकती है. ये वही टैग हैं जिन्हें ऐप्लिकेशन लिंक असिस्टेंट आपके लिए बना सकता है.
किसी इंटेंट फ़िल्टर के लिए जांच के तौर पर यूआरएल तय करने के लिए, उससे जुड़े <intent-filter>
एलिमेंट के साथ <tools:validation>
एलिमेंट जोड़ें. उदाहरण के लिए:
<activity ...>
<intent-filter>
...
</intent-filter>
<tools:validation testUrl="https://www.example.com/recipe/1138" />
</activity>
<manifest>
टैग में xmlns:tools="http://schemas.android.com/tools"
को भी शामिल करना न भूलें.
अगर जांच के लिए इस्तेमाल किए गए किसी भी यूआरएल में इंटेंट फ़िल्टर की परिभाषा पूरी नहीं होती है, तो एक लिंट गड़बड़ी दिखती है. इस तरह की गड़बड़ी के बावजूद, डीबग वैरिएंट बनाए जा सकते हैं. हालांकि, इससे रिलीज़ के लिए बने बिल्ड काम नहीं करेंगे.
लेआउट एडिटर
लेआउट एडिटर को कई बेहतर सुविधाओं के साथ अपडेट किया गया है. इनमें ये सुविधाएं भी शामिल हैं:
- टूलबार का नया लेआउट और आइकॉन.
- कॉम्पोनेंट ट्री में अपडेट किया गया लेआउट.
- खींचकर छोड़ने की सुविधा से, व्यू को बेहतर तरीके से जोड़ा जा सकता है.
- Editor के नीचे गड़बड़ी का नया पैनल, जिसमें सभी समस्याओं के साथ उन्हें ठीक करने के सुझाव दिखते हैं (अगर उपलब्ध हों).
ConstraintLayout
का इस्तेमाल करके बिल्ड करने के लिए, यूज़र इंटरफ़ेस (यूआई) को बेहतर बनाने के लिए किए गए कई बदलाव. इनमें ये भी शामिल हैं:- बाधाएं बनाने के लिए नई सुविधा.
- ग्रुप बनाने के लिए नई सुविधा: टूलबार में, दिशा-निर्देश > ग्रुप जोड़ें को चुनें. इसके लिए, ConstraintLayout 1.1.0 बीटा 2 या इसके बाद के वर्शन की ज़रूरत होती है
- चेन बनाने के लिए नया यूज़र इंटरफ़ेस: एक से ज़्यादा व्यू चुनें. इसके बाद, दायां क्लिक करें और चेन चुनें.
लेआउट इंस्पेक्टर
लेआउट इंस्पेक्टर में, ऐप्लिकेशन लेआउट से जुड़ी समस्याओं को डीबग करने के लिए, बेहतर सुविधाएं शामिल की गई हैं. इनमें, प्रॉपर्टी को सामान्य कैटगरी में बांटना और व्यू ट्री और प्रॉपर्टी पैनल, दोनों में खोज की नई सुविधा शामिल है.
APK ऐनालाइज़र
अब कमांड लाइन से apkanalyzer
टूल का इस्तेमाल करके, APK विश्लेषक का इस्तेमाल किया जा सकता है.
APK ऐनालाइज़र को भी इन सुधारों के साथ अपडेट किया गया है:
- ProGuard की मदद से बनाए गए APKs के लिए, ProGuard मैपिंग फ़ाइलें लोड की जा सकती हैं. इनसे DEX व्यूअर में ये सुविधाएं जोड़ी जा सकती हैं:
- बोल्ड किए गए नोड, ताकि यह पता चल सके कि कोड को छोटा करते समय, नोड को नहीं हटाया जाना चाहिए.
- छोटा करने की प्रोसेस के दौरान हटाए गए नोड दिखाने के लिए बटन.
- यह एक बटन है, जो ट्री व्यू में उन नोड के मूल नामों को वापस लाता है जिन्हें ProGuard ने बदल दिया था.
- DEX व्यूअर अब हर पैकेज, क्लास, और तरीक़े के साइज़ पर होने वाले अनुमानित असर को दिखाता है.
- फ़ील्ड और तरीकों को दिखाने और छिपाने के लिए, सबसे ऊपर फ़िल्टर करने के नए विकल्प.
- ट्री व्यू में, ऐसे नोड जो DEX फ़ाइल में रेफ़रंस के तौर पर नहीं दिखाए गए हैं वे इटैलिक में दिखते हैं.
ज़्यादा जानकारी के लिए, APK विश्लेषक की मदद से अपने ऐप्लिकेशन के बिल्ड का विश्लेषण करना लेख पढ़ें.
D8 DEX कंपाइलर के लिए झलक
Android Studio 3.0 में, D8 नाम का एक नया DEX कंपाइलर शामिल है. हालांकि, इसका इस्तेमाल करना ज़रूरी नहीं है. यह आखिर में, DX कंपाइलर की जगह ले लेगा. हालांकि, नए D8 कंपाइलर का इस्तेमाल करने के लिए, अब ऑप्ट-इन किया जा सकता है.
डीईएक्स कंपाइलेशन का सीधा असर आपके ऐप्लिकेशन के बिल्ड में लगने वाले समय, .dex
फ़ाइल के साइज़, और रनटाइम परफ़ॉर्मेंस पर पड़ता है. साथ ही, नए D8 कंपाइलर की तुलना,
मौजूदा DX कंपाइलर से करने पर, D8 तेज़ी से कंपाइल करता है और .dex
फ़ाइलों को छोटा आउटपुट देता है. हालांकि, ऐप्लिकेशन के रनटाइम की परफ़ॉर्मेंस पहले जैसी या उससे बेहतर होती है.
इसे आज़माने के लिए, अपने प्रोजेक्ट की gradle.properties
फ़ाइल में ये सेट करें:
android.enableD8=true
ज़्यादा जानकारी के लिए, D8 कंपाइलर के बारे में ब्लॉग पोस्ट देखें.
Google का Maven डेटा स्टोर करने की जगह
Android Studio अब डिफ़ॉल्ट रूप से Google की Maven रिपॉज़िटरी का इस्तेमाल करता है. इससे, Android SDK मैनेजर पर निर्भर रहने के बजाय, Android Support Library, Google Play services, Firebase, और अन्य डिपेंडेंसी के लिए अपडेट पाने में मदद मिलती है. इससे, अपनी लाइब्रेरी को अप-टू-डेट रखना आसान हो जाता है. खास तौर पर, लगातार इंटिग्रेशन (सीआई) सिस्टम का इस्तेमाल करते समय.
सभी नए प्रोजेक्ट में अब डिफ़ॉल्ट रूप से Google Maven रिपॉज़िटरी शामिल होती है. अपने मौजूदा प्रोजेक्ट को अपडेट करने के लिए, सबसे ऊपर मौजूद build.gradle
फ़ाइल के repositories
ब्लॉक में google()
जोड़ें:
allprojects {
repositories {
google()
}
}
Google के मेवन रिपॉज़िटरी के बारे में ज़्यादा जानने के लिए यहां जाएं.
अन्य बदलाव
- Android Studio में नेटिव डीबगिंग की सुविधा, अब Windows के 32-बिट वर्शन के साथ काम नहीं करती. हमने अन्य प्लैटफ़ॉर्म पर फ़ोकस करने का फ़ैसला लिया है, क्योंकि बहुत कम डेवलपर इस प्लैटफ़ॉर्म का इस्तेमाल कर रहे हैं. अगर 32-बिट Windows का इस्तेमाल किया जा रहा है और आपको नेटिव कोड को डीबग करना है, तो आपको Android Studio 2.3 का इस्तेमाल करना चाहिए.
- हमने IDE को IntelliJ 2017.1.2 पर अपग्रेड किया है. इसमें, 2016.3 और 2017.1 के कई नए फ़ीचर जोड़े गए हैं. जैसे, Java 8 लैंग्वेज रीफ़ैक्टरिंग, पैरामीटर के सुझाव, सेमैंटिक हाइलाइटिंग, ड्रैग किए जा सकने वाले ब्रेकपॉइंट, खोज में तुरंत नतीजे, और बहुत कुछ.
- कई नई लिंट जांच जोड़ी गई हैं.
- Android एमुलेटर के नए अपडेट भी देखें.
2.3 (मार्च 2017)
Android Studio 2.3.0 में मुख्य रूप से गड़बड़ियों को ठीक किया गया है और इसे ज़्यादा बेहतर बनाया गया है. हालांकि, इसमें कई नई सुविधाएं भी शामिल हैं.
2.3.3 (जून 2017)
यह एक छोटा अपडेट है, जिसमें Android O (एपीआई लेवल 26) के लिए सहायता जोड़ी गई है.
2.3.2 (अप्रैल 2017)
Android Studio 2.3 में, ये छोटे बदलाव किए गए हैं:
- AVD Manager को अपडेट किया गया है, ताकि सिस्टम इमेज में Google Play काम कर सके.
- NDK के R14+ वर्शन का इस्तेमाल करते समय, NDK बिल्ड के लिए गड़बड़ियों को ठीक किया गया.
Android Emulator 26.0.3 के लिए भी इससे जुड़े अपडेट देखें.
2.3.1 (अप्रैल 2017)
यह Android Studio 2.3 का एक छोटा अपडेट है. इससे, इंस्टैंट रन की सुविधा के साथ कुछ Android डिवाइसों के ठीक से काम न करने की समस्या ठीक हो गई है. समस्या #235879 देखें.
<h3 class="hide-from-toc">
New
</h3>
<div class="video-wrapper-left">
<iframe class="devsite-embedded-youtube-video" data-video-id="VFyKclKBGf0"
data-autohide="1" data-showinfo="0" frameborder="0" allowfullscreen>
</iframe>
</div>
<ul>
<li>Android Studio can now convert PNG, BMP, JPG, and static GIF files to
WebP format. WebP is an image file format from Google that provides lossy
compression (like JPEG) as well as transparency (like PNG) but can provide
better compression than either JPEG or PNG. For more information, see
<a href="/studio/write/convert-webp.html">Convert images to WebP in Android
Studio</a>.
</li>
<li>The new <a href="/studio/write/app-link-indexing.html">App Links
Assistant</a> simplifies the process of adding Android App Links to your app
into a step-by-step wizard. Android App Links are HTTP URLs that bring users
directly to specific content in your Android app.
</li>
<li>The Layout Editor now includes support for two new ConstraintLayout
features:
<ul>
<li>Define a view size based on an aspect ratio.
</li>
<li>Create packed, spread, and weighted linear groups with constraint
chains.
</li>
</ul>
For more information, see <a href=
"/training/constraint-layout/index.html">Build a Responsive UI with
ConstraintLayout</a>.
</li>
<li>The Layout Editor also now lets you create a list of <a href=
"/studio/write/layout-editor.html#edit-properties">favorite attributes</a> so
you don't have to click <b>View all attributes</b> to access the attributes
you use most.
</li>
<li>When adding a material icon using the Vector Import Dialog (<b>File >
New > Vector Asset</b>), you can now filter the list of available icons by
category or by icon name. For more information, see <a href=
"/studio/write/vector-asset-studio.html#materialicon">Adding a material
icon</a>.
</li>
<li>
<a href="/studio/write/annotations.html#accessibility">New and updated
annotations</a>. The new <code>@RestrictTo</code> annotation for methods,
classes, and packages lets you restrict an API. The updated
<code>@VisibleForTesting</code> annotation now has an optional
<code>otherwise</code> argument that lets you designate what the visibility
of a method should be if not for the need to make it visible for testing.
Lint uses the <code>otherwise</code> option to enforce the intended
visibility of the method.
</li>
<li>New <a href="/studio/write/lint.html#snapshot">lint baseline support</a>
allows you to use a snapshot of your project's current set of warnings as a
baseline for future inspection runs so only new issues are reported. The
baseline snapshot lets you start using lint to fail the build for new issues
without having to go back and address all existing issues first.
</li>
<li>New lint checks, including the following:
<ul>
<li>Obsolete <code>SDK_INT</code> Checks: Android Studio removes obsolete
code that checks for SDK versions.
</li>
<li>Object Animator Validation: Lint analyzes your code to make sure that
your <code>ObjectAnimator</code> calls reference valid methods with the
right signatures and checks that those methods are annotated with <code>
@Keep</code> to prevent ProGuard from renaming or removing them during
release builds.
</li>
<li>Unnecessary Item Decorator Copy: Older versions of the
<code>RecyclerView</code> library did not include a divider decorator
class, but one was provided as a sample in the support demos. Recent
versions of the library have a divider decorator class. Lint looks for
the old sample and suggests replacing it with the new one.
</li>
<li>WifiManager Leak: Prior to Android 7.0 (API level 24), initializing
the <code>WifiManager</code> with <code><a href="/reference/android/content/Context.html#getSystemService(java.lang.Class<T>)">Context.getSystemService()</a></code>
can cause a memory leak if the context is not the application context.
Lint looks for these initializations, and if it <em>cannot</em> determine
that the context is the application context, it suggests you use <code><a href="/reference/android/content/Context.html#getApplicationContext()">Context.getApplicationContext()</a></code> to get the proper context for the
initialization.
</li>
<li>Improved Resource Prefix: The existing <code>resourcePrefix</code>
lint check had many limitations. You can now configure your project with
a prefix, such as <code>android { resourcePrefix '<var>my_lib</var>'
}</code>, and lint makes sure that all of your resources are using this
prefix. You can use variations of the name for styles and themes. For
example for the <var>my_lib</var> prefix, you can have themes named
<code>MyLibTheme</code>, <code>myLibAttr</code>,
<code>my_lib_layout</code>, and so on.
</li>
<li>Switch to WebP: This check identifies images in your project that can
be converted to WebP format based on your project’s
<code>minSdkVersion</code> setting. An associated quickfix can
automatically convert the images, or you can <a href=
"/studio/write/convert-webp.html">convert images to WebP</a> manually.
</li>
<li>Unsafe WebP: If your project already includes WebP images, this check
analyzes your project to ensure that your <code>minSdkVersion</code>
setting is high enough to support the included images. For more
information about WebP support in Android and Android Studio, see
<a class="external" href=
"https://developers.google.com/speed/webp/faq#which_web_browsers_natively_support_webp">
Which browsers natively support WebP?</a> and <a href=
"/studio/write/convert-webp.html">Create WebP Images Using Android
Studio</a>.
</li>
</ul>
</li>
</ul>
<h3 class="hide-from-toc">
Changes
</h3>
<ul>
<li>A separate button to push changes with Instant Run: After deploying your
app, you now click <b>Apply Changes</b> <img src=
"/studio/images/buttons/toolbar-apply-changes.svg" alt="" class=
"inline-icon"> to quickly push incremental changes to your running app using
Instant Run. The <b>Run</b> <img src="/studio/images/buttons/toolbar-run.png"
alt="" class="inline-icon"> and <b>Debug</b> <img src=
"/studio/images/buttons/toolbar-debug.png" alt="" class="inline-icon">
buttons are always available to you when you want to reliably push your
changes and force an app restart.
<ul>
<li>Instant Run is supported only when deploying your app to a target
device running Android 5.0 (API level 21) or higher.
</li>
<li>Instant Run is no longer disabled for projects that <a href=
"/studio/projects/add-native-code.html">link to external native
projects</a> using CMake or ndk-build. However, you can only use Instant
Run to push incremental changes to your Java code, not your native code.
</li>
<li>Cold swaps (which you can force for a running app by clicking
<strong>Run</strong> <img src="/studio/images/buttons/toolbar-run.png"
alt="" class="inline-icon">) are now more reliable. Forcing a cold swap
also fixes the issue where changes to notification and widget UIs were
not updated on the target device.
</li>
<li>Includes optimizations that make app startup much faster. These
optimizations may affect profiling, so you should temporarily <a href=
"/studio/run/index.html#disable-ir">disable Instant Run</a> whenever
profiling your app.
</li>
</ul>
</li>
<li>
<p>
The <b>AVD Manager</b> <img src=
"/studio/images/buttons/toolbar-avd-manager.png" alt="" class=
"inline-icon"> and <b>SDK Manager</b> <img src=
"/studio/images/buttons/toolbar-sdk-manager.png" alt="" class=
"inline-icon"> buttons are now included in the lean Navigation Bar as
well as the full Toolbar. To use the lean Navigation Bar, click
<b>View</b> to open the View menu, then ensure that <b>Navigation Bar</b>
is selected and <b>Toolbar</b> is <em>not</em> selected.
</p>
<img src="/studio/images/releases/navigationbar_sdkavd_2x.png" width="757">
</li>
<li>The "Hybrid" debugger has been renamed to "Dual" debugger.
</li>
<li>In the <a href="/studio/run/rundebugconfig.html">Run/Debug
Configurations</a> dialog, under Defaults in the left pane, the following run
configuration names have changed with no behavior changes:
<ul>
<li>The JUnit name has changed to Android JUnit. If you have a project
that uses JUnit run configurations, those configurations are transformed
to Android JUnit run configurations the first time you open the project
with Android Studio. A dialog appears to inform you of the name change.
</li>
<li>The Android Tests name has changed to Android Instrumented Tests.
</li>
</ul>
</li>
<li>The <a href="/studio/debug/am-gpu-debugger.html">GPU Debugger</a> has
been removed from Android Studio as of version 2.3. An open-source,
standalone version of the tool is now available on <a href=
"https://github.com/google/gapid" class="external-link">GitHub</a>.
</li>
<li>The Run/Debug option is no longer available when you right-click a <code>
*.gradle build</code> script.
</li>
<li>All templates now use <code>ConstraintLayout</code> as the default
layout.
</li>
<li>The Widgets palette in the Layout Editor has been redesigned.
</li>
</ul>
<p>
This release also includes a number of bug fixes. <a href=
"https://code.google.com/p/android/issues/list?can=1&q=target%3D2.3+status%3DReleased&colspec=ID+Status+Priority+Owner+Summary+Stars+Reporter+Opened&cells=tiles">
See all bug fixes in 2.3.0.</a>
</p>
<p class="note">
<b>Known issue:</b> Some device manufacturers block apps from automatically
launching after being installed on the device. When deploying your app to a
physical device using Android Studio 2.3, this restriction breaks the
intended behavior of Instant Run and causes the following error output:
<code>Error: Not found; no service started</code>. To avoid this issue,
either <a href="/studio/run/emulator.html">use the emulator</a> or enable
automatic launching for your app in your device's settings. The procedure
for doing this is different for each device, so check the instructions
provided by the manufacturer. To learn more about this issue, see
<a href="https://code.google.com/p/android/issues/detail?id=235879">Issue
#235879</a>.
</p>
2.2 (सितंबर 2016)
2.2.3 (दिसंबर 2016)
<p>
This is a minor update to Android Studio 2.2. It includes a bug fixes
focused around gradle, the core IDE, and lint.
</p>
<p>
Highlighted build changes:
</p>
<ul>
<li>ProGuard version rollback. Due to a <a href=
"https://sourceforge.net/p/proguard/bugs/625/">correctness issue</a>
discovered in ProGuard 5.3.1, we have rolled back to ProGuard 5.2.1. We
have worked with the ProGuard team on getting a fix quickly, and we expect
to roll forward to ProGuard 5.3.2 in Android Studio 2.3 Canary 3.
</li>
<li>Bug fix for <code>aaptOptions</code> <code>IgnoreAssetsPattern</code>
not working properly (<a href="http://b.android.com/224167">issue
224167</a>)
</li>
<li>Bug fix for Gradle autodownload for Constraint Layout library
(<a href="https://code.google.com/p/android/issues/detail?id=212128">issue
212128</a>)
</li>
<li>Bug fix for a JDK8/Kotlin compiler + dx issue (<a href=
"http://b.android.com/227729">issue 227729</a>)
</li>
</ul>
<p>
<a href=
"https://code.google.com/p/android/issues/list?can=1&q=target%3D2.2.3+status%3AReleased+&colspec=ID+Status+Priority+Owner+Summary+Stars+Reporter+Opened&cells=tiles">
See all bug fixes in 2.2.3</a>.
</p>
2.2.2 (अक्टूबर 2016)
<p>
This is a minor update to Android Studio 2.2. It includes a number of small
changes and bug fixes, including:
</p>
<ul>
<li>When reporting Instant Run issues through the IDE, the report now also
includes logcat output for <code>InstantRun</code> events. To help us
improve Instant Run, please <a href=
"/studio/run/index.html#submit-feedback">enable extra logging and report
any issues</a>.
</li>
<li>A number of small bug fixes for Gradle.
</li>
<li>A fix for problems with generating multiple APKs.
</li>
</ul>
2.2.1 (अक्टूबर 2016)
<p>
This is a minor update to Android Studio 2.2. It includes several bug fixes
and a new feature to enable extra logging to help us troubleshoot Instant
Run issues—to help us improve Instant Run, please <a href=
"/studio/run/index.html#submit-feedback">enable extra logging and report
any issues</a>.
</p>
नया
- लेआउट एडिटर का नया वर्शन, जिसमें ConstraintLayout के साथ काम करने के लिए कस्टम टूल शामिल हैं.
<li>New <strong><a href=
"http://tools.android.com/tech-docs/layout-inspector">Layout
Inspector</a></strong> lets you examine snapshots of your layout hierarchy
while your app is running on the emulator or a device.
</li>
<li>New <strong><a href="/studio/write/firebase.html">Assistant</a></strong>
window to help you integrate Firebase services into your app.
</li>
<li>New <strong><a href="/studio/debug/apk-analyzer.html">APK
Analyzer</a></strong> tool so you can inspect the contents of your packaged
app.
</li>
<li>New <strong><a href=
"http://tools.android.com/tech-docs/test-recorder">Espresso Test
Recorder</a></strong> tool (currently in beta) to help you create UI tests by
recording your own interactions.
</li>
<li>New <strong><a href=
"http://tools.android.com/tech-docs/build-cache">build cache</a></strong>
(currently experimental) to speed up build performance.
</li>
<li>New <strong>C/C++ build integration with CMake and ndk-build</strong>.
Compile and build new or existing native code into libraries packaged into
your APK, and debug using lldb. For new projects, Android Studio uses CMake
by default, but also supports ndk-build for existing projects. To learn how
to include native code in your Android application, read <a href=
"/studio/projects/add-native-code.html">Add C and C++ Code to Your
Project</a>. To learn how to debug native code with lldb, see <a href=
"/studio/debug/index.html#debug-native">Debug Native Code</a>.
</li>
<li>New <strong><a href="/studio/intro/index.html#sample-code">Samples
Browser</a></strong> so you can easily look up Google Android sample code
from within Android Studio to jump start app development.
</li>
<li>New <strong>Merged Manifest Viewer</strong> to help you diagnose how your
manifest file merges with your app dependencies across project build
variants.
</li>
<li>The <strong>Run</strong> window now contains log messages for the current
running app. Note that you can configure the <a href=
"/studio/debug/am-logcat.html">logcat Monitor</a> display, but not the
<strong>Run</strong> window.
</li>
<li>New <strong><a href="/studio/run/emulator.html">Android
Emulator</a></strong> features:
<ul>
<li>Added new <strong>Virtual</strong> <strong>Sensors</strong> and
<strong>Cellular</strong> > <strong>Signal Strength</strong> controls.
</li>
<li>Added an <strong>LTE</strong> option to the <strong>Cellular</strong>
> <strong>Network type</strong> control.
</li>
<li>Added simulated vertical swipes for scrolling through vertical menus
with a mouse wheel.
</li>
</ul>
</li>
<li>New <strong><a href="/studio/run/rundebugconfig.html">Run/Debug
Configuration</a></strong> features:
<ul>
<li>The <strong>Debugger</strong> tab of the Android App and Android
Tests templates now contain several new options for debugging with LLDB.
</li>
<li>The <strong>Profiling</strong> tab of the Android App and Android
Tests templates now contain a <strong>Capture GPU Commands</strong>
option for enabling GPU tracing. You can display GPU traces in the GPU
Debugger (a beta feature).
</li>
<li>The Android Tests template now has a <strong>Firebase Test Lab Device
Matrix</strong> option for the <strong>Deployment Target</strong>.
</li>
<li>The Native Application template has been deprecated. If you use this
template in a project, Android Studio automatically converts it to the
Android App template.
</li>
<li>The Android Application template has been renamed to Android App.
</li>
</ul>
</li>
<li>Improved installation, configuration, performance, and UI features in the
<strong><a href="/studio/debug/am-gpu-debugger.html">GPU
Debugger</a></strong> (currently in beta).
</li>
<li>Android Studio now comes bundled with <strong>OpenJDK 8</strong>.
Existing projects still use the JDK specified in <strong>File > Project
Structure > SDK Location</strong>. You can switch to use the new bundled
JDK by clicking <strong>File > Project Structure > SDK
Location</strong> and checking the <strong>Use embedded JDK</strong>
checkbox.
</li>
<li>Added new <strong>help menus and buttons</strong> in the UI so you can
more easily find the online documentation.
</li>
बदलाव
- IDE के कोडबेस को IntelliJ 15 से IntelliJ 2016.1 पर अपडेट किया गया
- Instant Run के लिए अब टारगेट डिवाइस के एपीआई लेवल के हिसाब से, प्लैटफ़ॉर्म SDK टूल इंस्टॉल करना ज़रूरी है.
- अगर उपयोगकर्ता ऐप्लिकेशन को वर्क प्रोफ़ाइल या सेकंडरी उपयोगकर्ता के तौर पर चला रहा है, तो इंस्टैंट रन अपने-आप बंद हो जाएगा.
- इंस्टैंट रन के लिए, भरोसेमंदता से जुड़ी कई समस्याएं ठीक की गई हैं. इनमें, बदलावों को डिप्लॉय न होने या ऐप्लिकेशन के क्रैश होने की समस्याएं शामिल हैं:
- आपके चल रहे ऐप्लिकेशन में कुछ ऐप्लिकेशन ऐसेट डिप्लॉय नहीं की गईं. ( गड़बड़ी: #213454)
- जब उपयोगकर्ता, इंस्टैंट रन और नॉन-इंस्टैंट रन सेशन के बीच ट्रांज़िशन करता है, तो ऐप्लिकेशन क्रैश हो जाता है. ऐसा तब होता है, जब Serializable क्लास में serialVersionUID की जानकारी नहीं दी गई हो. (बग: #209006)
- स्टाइल में किए गए बदलाव, Instant Run में नहीं दिखते. (बग: #210851)
- इंस्टैंट रन सेशन भरोसेमंद नहीं है और इसकी वजह से FileNotFoundException होता है. (बग: #213083)
- KitKat के लिए, ड्रॉबल में किए गए बदलाव तब तक नहीं दिखते, जब तक कि पूरी तरह से फिर से न बनाया जाए. (बग: #21530)
- कस्टम sourceSets में नेस्ट किए गए पाथ होने पर, संसाधन में किए गए बदलाव, इंस्टैंट रन में नहीं दिखते. (गड़बड़ी: #219145)
- अगर बदली गई क्लास में, सूची में शामिल वैल्यू वाला एनोटेशन है, तो हॉट और वॉर्म स्वैप काम नहीं करते. (बग: #209047)
- एनोटेशन डेटा में किए गए बदलाव, Instant Run में नहीं दिखते. (बग: #210089)
- अगर IDE के बाहर बदलाव किए जाते हैं, तो इंस्टैंट रन को कोड में हुए बदलाव नहीं दिखते. (बग: #213205)
- सुरक्षा टोकन मेल न खाने की वजह से, इंस्टैंट रन सेशन भरोसेमंद नहीं है. (गड़बड़ी: #211989
- जिन डिवाइसों पर run-as ठीक से काम नहीं करता उन पर कोल्ड स्वैप नहीं किया जा सकता. (बग: #210875)
- इंस्टैंट रन रीस्टार्ट होने के बाद, ऐप्लिकेशन क्रैश हो जाता है. (गड़बड़ी: #219744)
- इंस्टैंट रन से इंस्टैंट डीबग पर स्विच करने पर, ClassNotFoundException का पता चला. (बग: #215805)
<li>Improved performance for <strong>Gradle sync</strong> within the IDE,
especially for large projects.
</li>
<li>Improved build times for both full and incremental builds with new app
packaging code.
</li>
<li>Improved <strong>Jack compiler performance and features</strong>,
including support for annotation processors and dexing in process. To learn
more, read the <a href=
"/studio/releases/gradle-plugin.html#revisions">Android plugin for Gradle
2.2.0 release notes</a>.
</li>
<li>Removed the <strong>Scale</strong> AVD property from the AVD Manager.
</li>
<li>The Android Emulator <strong>-port</strong> and <strong>-ports</strong>
command-line options now report which ports and serial number the emulator
instance is using, and warn if there are any issues with the values you
provided.
</li>
<li>Improved the <strong><a href=
"/studio/write/create-java-class.html">Create New Class dialog</a></strong>
and the corresponding file templates. <strong>Note:</strong> If you've
previously customized the <strong>AnnotationType</strong>,
<strong>Class</strong>, <strong>Enum</strong>, <strong>Interface</strong>, or
<strong>Singleton</strong> file templates, you need to modify your templates
to comply with the new templates or you won’t be able to use the new fields
in the <strong>Create New Class</strong> dialog.
</li>
<li>Improved the <strong><a href=
"/studio/write/vector-asset-studio.html">Vector Asset Studio</a></strong>
user interface and added support for Adobe Photoshop Document (PSD) files.
</li>
<li>Improved the <strong><a href=
"/studio/write/image-asset-studio.html">Image Asset Studio</a></strong> user
interface.
</li>
<li>Improved the <strong>Theme Editor</strong>'s Resource Picker.
</li>
<li>Fixed memory leaks and reduced overall memory usage in Android Studio.
</li>
<li>Added a <strong>Background</strong> button in the <strong><a href=
"/studio/intro/update.html#sdk-manager">SDK Manager</a></strong> so you can
get back to work and install your packages in the background.
</li>
<li>Improved <strong><a href="/studio/intro/accessibility.html">Accessibility
features</a></strong>, including support for screen readers and keyboard
navigation.
</li>
<li>Enhanced <strong>Code Analysis</strong> includes code quality checks for
Java 8 language usage and more cross-file analysis.
</li>
<li>Several toolbar icons have changed.
</li>
2.1 (अप्रैल 2016)
इस अपडेट में किए गए मुख्य बदलावों से, Android N Preview के साथ डेवलपमेंट की सुविधा मिलती है.
2.1.3 (अगस्त 2016)
इस अपडेट में, Gradle 2.14.1 के साथ काम करने की सुविधा जोड़ी गई है. इसमें परफ़ॉर्मेंस में सुधार, नई सुविधाएं, और सुरक्षा से जुड़ी एक अहम गड़बड़ी को ठीक करने की सुविधा शामिल है. ज़्यादा जानकारी के लिए, Gradle के रिलीज़ नोट देखें.
Android Studio 2.1.3 में नए प्रोजेक्ट, डिफ़ॉल्ट रूप से Gradle 2.14.1 का इस्तेमाल करते हैं. मौजूदा प्रोजेक्ट के लिए, IDE आपको Gradle 2.14.1 और Gradle 2.1.3 के लिए Android प्लग इन पर अपग्रेड करने के लिए कहता है. ऐसा करना ज़रूरी है, क्योंकि Gradle 2.14.1 और इसके बाद के वर्शन का इस्तेमाल करने के लिए, यह ज़रूरी है.
2.1.2 (जून 2016)
इस अपडेट में कई छोटे बदलाव किए गए हैं और गड़बड़ियां ठीक की गई हैं:
- इंस्टैंट रन के अपडेट और गड़बड़ियां ठीक की गईं.
- LLDB की परफ़ॉर्मेंस और क्रैश की सूचनाओं में सुधार किए गए हैं.
- Android Studio 2.1.1 के सुरक्षा अपडेट में एक समस्या को ठीक किया गया है, जिसकी वजह से
git rebase
काम नहीं कर रहा था.
2.1.1 (मई 2016)
सुरक्षा से जुड़ी रिलीज़ का अपडेट.
Android N प्लैटफ़ॉर्म में, Java 8 भाषा की सुविधाओं के लिए सहायता जोड़ी गई है. इसके लिए, Jack नाम के नए एक्सपेरिमेंटल कंपाइलर की ज़रूरत होती है. फ़िलहाल, Jack के नए वर्शन का इस्तेमाल सिर्फ़ Android Studio 2.1 में किया जा सकता है. इसलिए, अगर आपको Java 8 भाषा की सुविधाओं का इस्तेमाल करना है, तो आपको अपना ऐप्लिकेशन बनाने के लिए Android Studio 2.1 का इस्तेमाल करना होगा.
ध्यान दें: Jack कंपाइलर चालू करने पर, इंस्टैंट रन की सुविधा बंद हो जाती है. ऐसा इसलिए होता है, क्योंकि फ़िलहाल ये दोनों सुविधाएं साथ में काम नहीं करतीं.
Android Studio 2.1 अब स्टेबल है, लेकिन Jack कंपाइलर अब भी प्रयोग के तौर पर उपलब्ध है. आपको अपनी build.gradle
फ़ाइल में jackOptions
प्रॉपर्टी की मदद से इसे चालू करना होगा.
Android Studio 2.1 में, N Preview के साथ काम करने के लिए किए गए बदलावों के अलावा, गड़बड़ियों को ठीक करने के लिए कुछ छोटे बदलाव किए गए हैं. साथ ही, इसमें ये सुधार भी किए गए हैं:
- Java-aware C++ डीबगर अब डिफ़ॉल्ट रूप से चालू है. ऐसा तब होता है, जब N डिवाइस या एमुलेटर का इस्तेमाल किया जा रहा हो और रन/डीबग कॉन्फ़िगरेशन के लिए डीबगर टैब में, नेटिव डीबगर मोड चुना गया हो.
बिल्ड से जुड़ी अन्य सुविधाओं के लिए, Gradle के लिए Android प्लग इन को 2.1.0 वर्शन पर अपडेट करें. इन सुविधाओं में,इंक्रीमेंटल Java कंपाइलेशन और प्रोसेस के दौरान डेक्सिंग शामिल है.
2.0 (अप्रैल 2016)
ध्यान दें: अगर आपको N Developer Preview के लिए ऐप्लिकेशन बनाना है, तो आपको Android Studio 2.1 Preview का इस्तेमाल करना चाहिए. Android Studio 2.0 में, N Preview को टारगेट करने के लिए ज़रूरी सभी सुविधाएं काम नहीं करती हैं.
इंस्टैंट रन:
- Android Studio अब पहले से ज़्यादा तेज़ी से क्लीन बिल्ड डिप्लॉय करता है. इसके अलावा, एमुलेटर या किसी फ़िज़िकल डिवाइस पर कोड में किए गए बदलावों को लागू होने में अब काफ़ी कम समय लगता है. नए डीबग बिल्ड को फिर से डिप्लॉय किए बिना या ज़्यादातर मामलों में, ऐप्लिकेशन को रीस्टार्ट किए बिना अपने अपडेट की समीक्षा करें.
- इंस्टैंट रन की सुविधा, चल रहे ऐप्लिकेशन में ये बदलाव करने की अनुमति देती है:
- किसी मौजूदा इंस्टेंस मैथड या स्टैटिक मैथड को लागू करने के तरीके में बदलाव
- किसी मौजूदा ऐप्लिकेशन रिसॉर्स में बदलाव करना
- स्ट्रक्चरल कोड में बदलाव, जैसे कि कोई तरीका हस्ताक्षर या स्टैटिक फ़ील्ड (इसके लिए, टारगेट डिवाइस पर एपीआई लेवल 21 या उसके बाद का वर्शन होना चाहिए).
- इंस्टैंट रन के बारे में ज़्यादा जानने के लिए, दस्तावेज़ पढ़ें.
ध्यान दें: इंस्टैंट रन की सुविधा सिर्फ़ तब काम करती है, जब डिबग बिल्ड वैरिएंट को डिप्लॉय किया जाता है, Gradle के 2.0.0 या उसके बाद के वर्शन के लिए Android प्लग इन का इस्तेमाल किया जाता है, और अपने ऐप्लिकेशन के मॉड्यूल-लेवल की
build.gradle
फ़ाइल कोminSdkVersion 15
या उसके बाद के वर्शन के लिए कॉन्फ़िगर किया जाता है. सबसे अच्छी परफ़ॉर्मेंस के लिए, अपने ऐप्लिकेशन कोminSdkVersion 21
या इससे ज़्यादा के लिए कॉन्फ़िगर करें.
Lint में जोड़े गए नए फ़ंक्शन:
- एनोटेट किए गए पूर्णांक
@IntDef
का इस्तेमाल करके,switch
स्टेटमेंट की जांच करना, ताकि यह पक्का किया जा सके कि सभी कॉन्स्टेंट मैनेज किए गए हैं. जो स्टेटमेंट मौजूद नहीं हैं उन्हें तुरंत जोड़ने के लिए, इंटेंट ऐक्शन ड्रॉप-डाउन मेन्यू का इस्तेमाल करें और मौजूद न होने वाले @IntDef कॉन्स्टेंट जोड़ें को चुनें. build.gradle
फ़ाइल में वर्शन नंबर डालने के लिए, स्ट्रिंग इंटरपोलेशन का इस्तेमाल करने की गलत कोशिशों के लिए फ़्लैग.Fragment
क्लास को एक्सटेंड करने वाली, गुमनाम क्लास के लिए फ़्लैग.- असुरक्षित जगहों पर मौजूद नेटिव कोड के लिए फ़्लैग, जैसे कि
res/
औरasset/
फ़ोल्डर. इस फ़्लैग की मदद से, नेटिव कोड कोlibs/
फ़ोल्डर में सेव किया जा सकता है. इसके बाद, इंस्टॉल के समय, इसे ऐप्लिकेशन केdata/app-lib/
फ़ोल्डर में सुरक्षित तरीके से पैकेज किया जाता है. AOSP: #169950 Runtime.load()
औरSystem.load()
कॉल के लिए, असुरक्षित कॉल के फ़्लैग. AOSP: #179980- मेन्यू बार से Refactor > Remove
Unused Resources चुनकर, इस्तेमाल न किए गए संसाधनों को ढूंढें और हटाएं. अब, इस्तेमाल न किए गए संसाधन का पता लगाने की सुविधा, सिर्फ़ उन संसाधनों के लिए काम करती है जिनका रेफ़रंस, इस्तेमाल न किए गए संसाधनों ने दिया है. साथ ही, यह सुविधा रॉ फ़ाइलों में मौजूद रेफ़रंस के लिए भी काम करती है. जैसे,
.html
इमेज रेफ़रंस और Gradle के संसाधन को छोटा करने वाले टूल के ज़रिए इस्तेमाल किए गएtools:keep
औरtools:discard
एट्रिब्यूट. हालांकि, यह सुविधा इनऐक्टिव सोर्स सेट (जैसे, दूसरे बिल्ड फ़्लेवर में इस्तेमाल किए गए संसाधन) को ध्यान में रखती है और स्टैटिक फ़ील्ड इंपोर्ट को सही तरीके से मैनेज करती है. - यह जांच करता है कि
minSdkVersion
के टारगेट किए गए सभी प्लैटफ़ॉर्म पर, एपीआई के इंप्लिसिट रेफ़रंस काम करते हैं या नहीं. RecyclerView
औरParcelable
के गलत इस्तेमाल की शिकायत करता है.@IntDef
,@IntRange
, और@Size
जांच अबint
ऐरे और वैरग के लिए भी की जाती है.
अन्य सुधार:
- Android Emulator 2.0 के लिए ऑप्टिमाइज़ किया गया है, जो पहले से ज़्यादा तेज़ है. साथ ही, यह वर्शन कई तरह के वर्चुअल डिवाइसों के साथ काम करता है. इसमें यूज़र इंटरफ़ेस (यूआई) को काफ़ी बेहतर बनाया गया है. नए एमुलेटर के बारे में ज़्यादा जानने के लिए, SDK टूल के रिलीज़ नोट पढ़ें.
- Android वर्चुअल डिवाइस मैनेजर में ये सुधार किए गए हैं:
- सिस्टम इमेज को अब इन टैब में बांटा गया है: सुझाई गई, x86, और अन्य.
- बेहतर सेटिंग में जाकर, मल्टी-कोर की सुविधा चालू की जा सकती है. साथ ही, यह भी तय किया जा सकता है कि एमुलेटर कितने कोर का इस्तेमाल कर सकता है.
- बेहतर सेटिंग में जाकर, यह तय किया जा सकता है कि एमुलेटर पर ग्राफ़िक कैसे रेंडर किए जाएं. इसके लिए, इनमें से कोई एक विकल्प चुनें:
- हार्डवेयर: तेज़ी से रेंडरिंग करने के लिए, अपने कंप्यूटर के ग्राफ़िक्स कार्ड का इस्तेमाल करें.
- सॉफ़्टवेयर: सॉफ़्टवेयर पर आधारित रेंडरिंग का इस्तेमाल करें.
- अपने-आप: एमुलेटर को सबसे सही विकल्प चुनने दें. यह डिफ़ॉल्ट सेटिंग है.
- ऐप्लिकेशन बनने से पहले, डिप्लॉय टारगेट तय करके, AAPT पैकेजिंग के समय को बेहतर बनाया गया है. इससे Android Studio, सिर्फ़ उन संसाधनों को पैकेज कर पाता है जो किसी डिवाइस के लिए ज़रूरी होते हैं.
- Cloud Test Lab इंटिग्रेशन जोड़ा गया है, ताकि ऐप्लिकेशन की जांच को ऑन-डिमांड किया जा सके. साथ ही, क्लाउड सेवा की सुविधाओं का फ़ायदा भी लिया जा सके. Android Studio के साथ Cloud Test Lab का इस्तेमाल करने के तरीके के बारे में ज़्यादा जानें.
- नए GPU डीबगर की झलक जोड़ी गई. ज़्यादा ग्राफ़िक वाले ऐप्लिकेशन के लिए, अब अपने ऐप्लिकेशन या गेम को ऑप्टिमाइज़ करने के लिए, अपने OpenGL ES कोड को विज़ुअल तौर पर देखा जा सकता है.
- Google ऐप्लिकेशन इंडेक्सिंग टेस्ट जोड़ा गया. अपने ऐप्लिकेशन में यूआरएल, ऐप्लिकेशन को इंडेक्स करने, और खोज फ़ंक्शन के लिए सहायता जोड़ें. इससे, अपने ऐप्लिकेशन पर ज़्यादा ट्रैफ़िक लाया जा सकता है. साथ ही, यह भी पता लगाया जा सकता है कि ऐप्लिकेशन के किस कॉन्टेंट का सबसे ज़्यादा इस्तेमाल किया जाता है और नए उपयोगकर्ताओं को लुभाया जा सकता है. Android Studio में अपने ऐप्लिकेशन के यूआरएल की जांच करना और उनकी पुष्टि करना. Android Studio में काम करने वाले यूआरएल और ऐप्लिकेशन को इंडेक्स करने की सुविधा देखें.
- IntelliJ 15 के नए वर्शन से अपग्रेड किया गया है. इसमें कोड के विश्लेषण और परफ़ॉर्मेंस को बेहतर बनाया गया है. नई सुविधाओं और बेहतर सुविधाओं के बारे में पूरी जानकारी पाने के लिए, IntelliJ में नया क्या है देखें.
- एक्सएमएल एडिटर में, अब एट्रिब्यूट अपने-आप पूरा होने पर कोटेशन मार्क जुड़ जाते हैं. यह देखने के लिए कि यह विकल्प चालू है या नहीं, सेटिंग या प्राथमिकताएं डायलॉग खोलें. इसके बाद, एडिटर > सामान्य > स्मार्ट बटन पर जाएं और एट्रिब्यूट की वैल्यू पूरी होने पर, एट्रिब्यूट के लिए कोटेशन जोड़ें के बगल में मौजूद बॉक्स को चुनें. समस्या: 195113
- एक्सएमएल एडिटर में अब डेटा बाइंडिंग के लिए, कोड पूरा करने की सुविधा काम करती है.
Android Studio v1.5.1 (दिसंबर 2015)
सुधार और अपडेट:
- लेआउट एडिटर में रेंडरिंग न होने की समस्या को ठीक किया गया. समस्या: 194612
- कॉन्फ़िगरेशन के हिसाब से,
description
मेनिफ़ेस्ट एट्रिब्यूट में बदलाव करने की सुविधा जोड़ी गई. समस्या: 194705 - Vector Asset Studio में, Android Studio की Darcula थीम के कंट्रास्ट को बेहतर बनाया गया है. समस्या: 191819
- वेक्टर ऐसेट स्टूडियो में सहायता बटन जोड़ा गया.
- डेटा बाइंडिंग के लिए,
%
ऑपरेटर के साथ काम करने की सुविधा जोड़ी गई. समस्या: 194045 - डीबग करने के लिए ऐप्लिकेशन लॉन्च करने पर, डीबगर के गलत डिवाइस से कनेक्ट होने की समस्या को ठीक किया गया है. समस्या: 195167
- एक ऐसा नॉल पॉइंटर अपवाद ठीक किया गया है जो कुछ मामलों में, ऐप्लिकेशन को चलाने की कोशिश करते समय हो सकता है.
Android Studio v1.5.0 (नवंबर 2015)
सुधार और अपडेट:
- Android Monitor में, मेमोरी मॉनिटर के विश्लेषण की नई सुविधाएं जोड़ी गई हैं. इस मॉनिटर से कैप्चर की गई HPROF फ़ाइल को देखने पर, डिसप्ले अब ज़्यादा मददगार होता है. इससे, मेमोरी लीक जैसी समस्याओं का पता लगाने में ज़्यादा समय नहीं लगता. इस मॉनिटर का इस्तेमाल करने के लिए, मुख्य विंडो के सबसे नीचे मौजूद Android मॉनिटर पर क्लिक करें. Android मॉनिटर में, मेमोरी टैब पर क्लिक करें. मॉनिटर चालू होने के दौरान, Java Heap को डंप करें आइकॉन पर क्लिक करें. इसके बाद, मुख्य विंडो में कैप्चर पर क्लिक करें और फ़ाइल को देखने के लिए उस पर दो बार क्लिक करें. दाईं ओर, विश्लेषण कैप्चर करें पर क्लिक करें. (Android डिवाइस मॉनिटर और Android मॉनिटर, एक साथ नहीं चल सकते.)
- डीप लिंक और ऐप्लिकेशन लिंक के लिए, नए वर्शन का इस्तेमाल करने की सुविधा जोड़ी गई. कोड एडिटर,
AndroidManifest.xml
फ़ाइल में डीप लिंकिंग के लिए, अपने-आप एक इंटेंट फ़िल्टर बना सकता है. यह कोड भी जनरेट कर सकता है, ताकि आपको किसी Java फ़ाइल की गतिविधि में, ऐप्लिकेशन को इंडेक्स करने वाले एपीआई के साथ इंटिग्रेट करने में मदद मिल सके. डीप लिंक की जांच करने की सुविधा की मदद से, यह पुष्टि की जा सकती है कि कोई डीप लिंक, ऐप्लिकेशन को लॉन्च कर सकता है या नहीं. कॉन्फ़िगरेशन चलाएं/डीबग करें डायलॉग बॉक्स के सामान्य टैब में, डीप लिंक लॉन्च करने के विकल्प तय किए जा सकते हैं. Android मॉनिटर के logcat डिसप्ले का इस्तेमाल करके, किसी गतिविधि में ऐप्लिकेशन को इंडेक्स करने वाले एपीआई कॉल की जांच भी की जा सकती है. Androidlint
टूल में अब डीप लिंक और ऐप्लिकेशन को इंडेक्स करने वाले एपीआई से जुड़ी कुछ समस्याओं के लिए चेतावनियां दी गई हैं. - कोड एडिटर में कस्टम व्यू कोड करते समय, छोटे नामों का इस्तेमाल करने की सुविधा जोड़ी गई.
- वेक्टर ऐसेट स्टूडियो में,
VectorDrawable
एलिमेंट के लिए ज़्यादा सपोर्ट जोड़ा गया, ताकि वे पुराने सिस्टम के साथ काम कर सकें. वेक्टर एसेट स्टूडियो, इन एलिमेंट का इस्तेमाल करके वेक्टर ड्रॉअरबल को PNG रेस्टर इमेज में बदल सकता है. इन इमेज का इस्तेमाल, Android 4.4 (एपीआई लेवल 20) और उससे पहले के वर्शन के साथ किया जा सकता है. - Android TV और Android Auto के लिए, नई
lint
जांच की सुविधा जोड़ी गई है. इससे आपको Android Studio में तुरंत और काम का सुझाव मिलेगा. साथ ही, कई समस्याओं को तुरंत ठीक करने में मदद मिलेगी. उदाहरण के लिए, Android TV के लिए, यह अनुमतियों, काम न करने वाले हार्डवेयर,uses-feature
एलिमेंट, और बैनर न दिखने से जुड़ी समस्याओं की शिकायत कर सकता है और उन्हें तुरंत ठीक कर सकता है. Android Auto के लिए, यह आपकीAndroidManifest.xml
फ़ाइल से रेफ़र की गई डिस्क्रिप्टर फ़ाइल में, सही इस्तेमाल की पुष्टि कर सकता है. साथ ही, अगरMediaBrowserService
क्लास के लिए कोई इंटेंट फ़िल्टर नहीं है, तो इसकी शिकायत कर सकता है. इसके अलावा, यह कुछ वॉइस ऐक्शन से जुड़ी समस्याओं की पहचान भी कर सकता है. - असुरक्षित ब्रॉडकास्ट रिसीवर,
SSLCertificateSocketFactory
औरHostnameVerifier
क्लास के इस्तेमाल, औरFile.setReadable()
औरFile.setWritable()
कॉल के लिए, नईlint
जांच जोड़ी गई हैं. यह अमान्य मेनिफ़ेस्ट संसाधन लुकअप का भी पता लगाता है. खास तौर पर, उन संसाधनों के लिए जो कॉन्फ़िगरेशन के हिसाब से अलग-अलग होते हैं. - ऐप्लिकेशन के हैंग या क्रैश होने से जुड़ी कई समस्याएं ठीक की गई हैं.
Android Studio v1.4.1 (अक्टूबर 2015)
सुधार और गड़बड़ियां ठीक करना:
- Gradle मॉडल को कैश मेमोरी में सेव करने से जुड़ी समस्या को ठीक किया गया है. इसकी वजह से, IDE को फिर से शुरू करने पर, Gradle को ज़्यादा बार सिंक किया जा सकता था.
- नेटिव डीबगिंग के दौरान होने वाली डेडलॉक समस्या को ठीक किया गया.
- Subversion 1.9 वर्शन कंट्रोल सिस्टम के उपयोगकर्ताओं को ब्लॉक करने वाली समस्या को ठीक किया गया.
- डिवाइस चुनने वाले डायलॉग बॉक्स से जुड़ी समस्या को ठीक किया गया. इस समस्या की वजह से, अनुमति नहीं वाले डिवाइस को कनेक्ट करने के बाद, एमुलेटर नहीं चुना जा सकता था. समस्या: 189658
- उन स्थानीय भाषाओं के लिए, अनुवाद में गड़बड़ी की गलत रिपोर्टिंग ठीक की गई है जिनमें क्षेत्र के हिसाब से क्वालीफ़ायर और क्षेत्र में अनुवाद है (लेकिन बेस लोकल भाषा में नहीं). समस्या: 188577
- थीम एडिटर में, लेआउट एडिटर के साथ इंटरैक्ट करने से जुड़ी डेडलॉक की समस्या को ठीक किया गया. समस्या: 188070
- थीम एडिटर को रीलोड करने और बदलाव करने से जुड़ी समस्या को ठीक किया गया. इस समस्या की वजह से एट्रिब्यूट सही से अपडेट नहीं हो पाते थे. समस्या: 187726
- थीम एडिटर की परफ़ॉर्मेंस बेहतर हुई.
- मेनिफ़ेस्ट में
android:required
एट्रिब्यूट को अनदेखा करने से जुड़ी समस्या को ठीक किया गया. समस्या: 187665
Android Studio v1.4.0 (सितंबर 2015)
सुधार और गड़बड़ियां ठीक करना:
- वेक्टर ग्राफ़िक इंपोर्ट करने के लिए, वेक्टर ऐसेट स्टूडियो टूल जोड़ा गया. जैसे, मटीरियल आइकॉन और SVG फ़ाइलें. इस टूल का इस्तेमाल करने के लिए, प्रोजेक्ट विंडो के Android व्यू में, res फ़ोल्डर पर राइट क्लिक करें. इसके बाद, नया > वेक्टर एसेट चुनें.
- Android Monitor के नए फ़ंक्शन, जीपीयू, और नेटवर्क जोड़े गए. इन मॉनिटर का इस्तेमाल करने के लिए, मुख्य विंडो में सबसे नीचे मौजूद Android मॉनिटर पर क्लिक करें. Android डिवाइस मॉनिटर और Android मॉनिटर, एक साथ काम नहीं कर सकते.
- नए थीम एडिटर की झलक जोड़ी गई है. इस सुविधा का इस्तेमाल करने के लिए, टूल > Android > थीम एडिटर चुनें.
- डिज़ाइन सपोर्ट लाइब्रेरी के लिए, Android टेंप्लेट अपडेट किए गए. टेंप्लेट में अब Material Design स्पेसिफ़िकेशन के साथ-साथ,
appcompat
सहायता लाइब्रेरी के लिए भी सहायता शामिल है, ताकि पुराने सिस्टम के साथ काम करने की सुविधा मिल सके.
Android Studio v1.3.2 (अगस्त 2015)
सुधार और अपडेट:
- Android 6.0 (एपीआई लेवल 23) के लिए सहायता जोड़ी गई है. इसमें नए आइकॉन और AVD मैनेजर के साथ-साथ, नई स्क्रीन डेंसिटी वाले डिवाइस बनाने की सुविधा भी शामिल है.
- अपडेट की जांच के दौरान होने वाली एक गड़बड़ी को ठीक किया गया. समस्या: 183068
- उस समस्या को ठीक किया गया है जिसमें व्यू के कोऑर्डिनेट ठीक न होने की वजह से, लेआउट एडिटर क्रैश हो सकता था. समस्या: 178690
- संसाधन के टाइप की अमान्य चेतावनियों से जुड़ी समस्या को ठीक किया गया. समस्या: 182433
- लिंट की जांच करने की सुविधा को ठीक किया गया है, जो संसाधनों को गलती से निजी के तौर पर फ़्लैग कर रही थी. समस्या: 183120
Android Studio v1.3.1 (अगस्त 2015)
सुधार और अपडेट:
- Windows पर Android Wear Android वर्चुअल डिवाइस (AVD) बनाने की सुविधा ठीक की गई.
- प्रोजेक्ट का नाम डालने के बाद, उसे इस्तेमाल करने के लिए प्रोजेक्ट विज़र्ड को अपडेट किया गया.
- Android SDK टूल को रीड-ओनली डायरेक्ट्री में सेव करने की सुविधा जोड़ी गई.
- Gradle के लिए Android प्लग इन को 1.3.0 वर्शन पर अपडेट किया गया.
- Android Debug Bridge (adb) Unix शेल से डीबग सेशन लॉन्च करने से जुड़ी समस्याएं ठीक की गईं.
- पैकेज का सही नाम दिखाने के लिए, Java पैकेज के नाम में बदलाव करने से जुड़े मैसेज को ठीक किया गया.
Android Studio v1.3.0 (जुलाई 2015)
सुधार और गड़बड़ियां ठीक करना:
- Android Studio में, अपने ऐप्लिकेशन में डेवलपर सेवाएं चालू करने के लिए विकल्प जोड़े गए हैं. जैसे, Google AdMob और Analytics.
@RequiresPermission
,@CheckResults
, और@MainThread
जैसे अतिरिक्त एनोटेशन जोड़े गए.- मेमोरी मॉनिटर से, Java हीप डंप जनरेट करने और थ्रेड के ऐलोकेशन का विश्लेषण करने की सुविधा जोड़ी गई. Android Studio में जाकर, Android के हिसाब से बनी HPROF बाइनरी फ़ॉर्मैट की फ़ाइलों को स्टैंडर्ड HPROF फ़ॉर्मैट में भी बदला जा सकता है.
- Android Studio में SDK मैनेजर को इंटिग्रेट किया गया है, ताकि पैकेज और टूल को आसानी से ऐक्सेस किया जा सके. साथ ही, अपडेट की सूचनाएं भी मिल सकें.
ध्यान दें: स्टैंडअलोन SDK मैनेजर अब भी कमांड लाइन से उपलब्ध है. हालांकि, इसका सुझाव सिर्फ़ स्टैंडअलोन SDK टूल के इंस्टॉलेशन के साथ इस्तेमाल करने के लिए दिया जाता है.
- फ़िंगरप्रिंट की पुष्टि करने की सुविधा को सिम्युलेट करने के लिए, एमुलेटर कंसोल में
finger
कमांड जोड़ा गया. - लाइब्रेरी के संसाधनों को सार्वजनिक और निजी संसाधनों के तौर पर तय करने के लिए,
<public>
संसाधन एलान जोड़ा गया.ध्यान दें: इसके लिए, Gradle के लिए Android प्लग इन के 1.3 या इसके बाद के वर्शन की ज़रूरत होती है.
- डेटा बाइंडिंग की सुविधा जोड़ी गई है, ताकि ऐसे एलान वाले लेआउट बनाए जा सकें जो आपके ऐप्लिकेशन लॉजिक को लेआउट एलिमेंट से जोड़ते हैं.
- Android Studio में टेस्ट APK बनाने के लिए, अलग से एक टेस्ट APK मॉड्यूल जोड़ा गया है.
- AVD Manager को HAXM के ऑप्टिमाइज़ेशन और बेहतर सूचनाओं के साथ अपडेट किया गया.
- QEMU 2.1 के लिए, 64-बिट ARM और MIPS एमुलेटर की सुविधा जोड़ी गई.
- लिंट की चेतावनियों को हल करना आसान बना दिया है. इसके लिए, तुरंत ठीक करने की सुविधाएं जोड़ी गई हैं. जैसे, Parcelable को लागू करने के लिए, कोड अपने-आप जनरेट होना.
- कोड स्निपेट को तुरंत डालने के लिए, लाइव टेंप्लेट का इस्तेमाल करने की सुविधा जोड़ी गई है.
Android Studio v1.2.2(जून 2015)
सुधार और गड़बड़ियां ठीक करना:
- बिल्ड से जुड़ी समस्याओं को ठीक किया गया है, जिनकी वजह से बिल्ड पूरा नहीं हो पा रहा था.
Android Studio v1.2.1 (मई 2015)
सुधार और अपडेट:
- परफ़ॉर्मेंस और सुविधा से जुड़ी छोटी समस्याएं ठीक की गईं.
Android Studio v1.2.0 (अप्रैल 2015)
सुधार और अपडेट:
- मेमोरी मॉनिटर टूल को शामिल करने के लिए, Android रनटाइम विंडो को अपडेट किया गया. साथ ही, सीपीयू की परफ़ॉर्मेंस को मॉनिटर करने के लिए एक टैब जोड़ा गया.
- बाईं ओर मौजूद मार्जिन में कैप्चर टैब जोड़ा गया है. इससे, कैप्चर की गई मेमोरी और सीपीयू की परफ़ॉर्मेंस से जुड़ी डेटा फ़ाइलें देखी जा सकती हैं. जैसे, सीपीयू का तरीका ट्रैक करना और मेमोरी हेप के स्नैपशॉट.
- ज़्यादा मेटाडेटा एनोटेशन और अनुमानित वैल्यू के साथ, एनोटेशन के लिए बेहतर सहायता.
- Translations Editor को बेहतर बनाया गया है. इसमें, सबसे सही मौजूदा तरीका (बीसीपी) 47 के लिए ज़्यादा सहायता जोड़ी गई है. यह तरीका, भाषा और इलाके के तीन अक्षर वाले कोड का इस्तेमाल करता है.
- कोड के विश्लेषण और परफ़ॉर्मेंस को बेहतर बनाने के लिए, IntelliJ 14 और 14.1 की सुविधाओं को इंटिग्रेट किया गया:
-
- बेहतर डीबगिंग, ताकि वैरिएबल और रेफ़र करने वाले ऑब्जेक्ट के लिए इनलाइन वैल्यू दिखाई जा सकें. साथ ही, लैम्ब्डा और ऑपरेटर एक्सप्रेशन का इनलाइन आकलन किया जा सके.
- टैब और इंडेंट साइज़ के लिए, कोड स्टाइल का पता लगाने की सुविधा जोड़ी गई.
- प्रोजेक्ट फ़ाइलों के बिना, कोड एक्सपेरिमेंट और प्रोटोटाइप बनाने के लिए स्क्रैच फ़ाइलें जोड़ी गई हैं.
- एचटीएमएल और एक्सएमएल फ़ाइलों में, एक साथ ओपनिंग और क्लोज़िंग टैग जोड़ने की सुविधा जोड़ी गई है.
- इसमें पहले से मौजूद Java क्लास डिकंपाइलर जोड़ा गया है, ताकि आप उस लाइब्रेरी के अंदर मौजूद कॉन्टेंट को देख सकें जिसके लिए सोर्स कोड उपलब्ध नहीं है.
नई सुविधाओं और सुधारों के बारे में पूरी जानकारी पाने के लिए, IntelliJ में नया क्या है देखें.
- प्रोजेक्ट मैनेजमेंट और ऐक्सेस को बेहतर बनाने के लिए, स्क्रैच, प्रोजेक्ट फ़ाइलें, समस्याएं, प्रोडक्शन, और टेस्ट के लिए, प्रोजेक्ट व्यू जोड़े गए हैं.
- फ़ाइल > सेटिंग मेन्यू और डायलॉग को बेहतर बनाया गया है, ताकि सेटिंग को बेहतर तरीके से ऐक्सेस और मैनेज किया जा सके.
- Windows और Linux के लिए, हाई-डेंसिटी डिसप्ले के साथ काम करने की सुविधा जोड़ी गई.
res/drawable-280dpi/
फ़ोल्डर में, 280 डीपीआई वाले रिसॉर्स के लिए सहायता जोड़ी गई.
Android Studio v1.1.0 (फ़रवरी 2015)
कई गड़बड़ियां ठीक की गईं और उनमें सुधार किए गए:
- Android Wear स्मार्ट वॉच के टेंप्लेट के लिए सहायता जोड़ी गई.
- नए प्रोजेक्ट और मॉड्यूल बनाने की प्रोसेस में बदलाव किया गया है, ताकि डिसप्ले डेंसिटी के हिसाब से लॉन्चर आइकॉन के लिए
res/mipmap
फ़ोल्डर शामिल किए जा सकें. येres/mipmap
फ़ोल्डर, लॉन्चर आइकॉन के लिएres/drawable
फ़ोल्डर की जगह ले लेते हैं. - लॉन्चर आइकॉन को अपडेट किया गया है, ताकि वे Material Design स्टाइल में दिखें. साथ ही, एक
xxxhdpi
लॉन्चर आइकॉन जोड़ा गया है. - क्षेत्र और भाषा के कॉम्बिनेशन, लॉन्चर आइकॉन, संसाधन के नाम, और कोड से जुड़ी अन्य सामान्य समस्याओं के लिए, लिंट की जांच करने की सुविधा जोड़ी गई है और उसे बेहतर बनाया गया है.
- सबसे सही मौजूदा तरीके (बीसीपी) के भाषा टैग 47 के लिए सहायता जोड़ी गई है.
Android Studio v1.0.1 (दिसंबर 2014)
कई गड़बड़ियां ठीक की गईं और उनमें सुधार किए गए:
- AVD मैनेजर और device.xml फ़ाइल लॉक से जुड़ी समस्या को ठीक किया गया.
- Windows सिस्टम पर, एमुलेटर लॉग को ठीक किया गया.
- Windows सिस्टम पर, अलग-अलग ड्राइव में Android Studio और Android SDK इंस्टॉल होने पर, AVD बनाने से जुड़ी समस्या ठीक की गई.
- नए डाउनलोड के लिए, अपडेट चैनल को डिफ़ॉल्ट रूप से स्टेबल पर सेट करता है. अगर आपने Android Studio का 1.0.0 वर्शन इंस्टॉल किया है और आपको स्थिर और प्रोडक्शन के लिए तैयार वर्शन के अपडेट चाहिए, तो फ़ाइल > सेटिंग > अपडेट का इस्तेमाल करके, स्टैबल अपडेट चैनल पर जाएं.
Android Studio v1.0 (दिसंबर 2014)
Android Studio की शुरुआती रिलीज़.
Android Studio v0.8.14 (अक्टूबर 2014)
बदलावों की पूरी सूची के लिए, tools.android.com पर जाएं.
Android Studio v0.8.6 (अगस्त 2014)
बदलावों की पूरी सूची के लिए, tools.android.com पर जाएं.
Android Studio v0.8.0 (जून 2014)
Android Wear प्रोजेक्ट के लिए सहायता जोड़ी गई.
बदलावों की पूरी सूची के लिए, tools.android.com पर जाएं.
Android Studio v0.5.2 (मई 2014)
- बदलावों की पूरी सूची के लिए, tools.android.com पर जाएं.
Android Studio v0.4.6 (मार्च 2014)
- बदलावों की पूरी सूची के लिए, tools.android.com पर जाएं.
Android Studio v0.4.2 (जनवरी 2014)
- बदलावों की पूरी सूची के लिए, tools.android.com पर जाएं.
Android Studio v0.3.2 (अक्टूबर 2013)
- बदलावों की पूरी सूची के लिए, tools.android.com पर जाएं.
Android Studio v0.2.x (जुलाई 2013)
- IntelliJ के कोडबेस में हुए नए बदलावों में मर्ज किया गया. इसमें Studio के उपयोगकर्ताओं की ओर से बताई गई समस्याओं को ठीक करने के लिए बदलाव किए गए हैं. जैसे, Linux फ़ॉन्ट के साइज़ और फ़ॉन्ट रेंडरिंग में बदलाव.
- Android Gradle प्लग इन को 0.5.0 पर अपडेट किया गया.
चेतावनी: यह नया वर्शन, पुराने वर्शन के साथ काम नहीं करता. अगर कोई ऐसा प्रोजेक्ट खोला जाता है जो प्लग-इन के पुराने वर्शन का इस्तेमाल करता है, तो Studio में गड़बड़ी का मैसेज दिखेगा. इसमें, Gradle <project_name> प्रोजेक्ट रीफ़्रेश नहीं हो सका लिखा होगा.
अपडेट किए गए Gradle प्लग-इन में ये बदलाव शामिल हैं:
- डीएसएल की मदद से कस्टमाइज़ की गई आउटपुट फ़ाइल को शामिल करने के लिए, आईडीई मॉडल को ठीक किया गया. साथ ही, वैरिएंट ऑब्जेक्ट पर आउटपुट फ़ाइल पाने/सेट करने के लिए डीएसएल को ठीक किया गया, ताकि
variant.packageApplication or variant.zipAlign
का इस्तेमाल करना ज़रूरी न हो - डिपेंडेंसी रिज़ॉल्यूशन को ठीक किया गया, ताकि हम (डिफ़ॉल्ट कॉन्फ़िगरेशन, बिल्ड टाइप, फ़्लेवर) के कॉम्बिनेशन को अलग-अलग के बजाय एक साथ हल कर सकें.
- लाइब्रेरी प्रोजेक्ट के टेस्ट के लिए डिपेंडेंसी को ठीक किया गया, ताकि लाइब्रेरी की सभी डिपेंडेंसी को सही तरीके से शामिल किया जा सके.
- उस मामले को ठीक किया गया है जहां दो डिपेंडेंसी का लीफ़ नाम एक ही है.
- उस समस्या को ठीक किया गया है जिसकी वजह से Proguard के नियमों वाली फ़ाइल, फ़्लेवर पर लागू नहीं हो पा रही थी.
Gradle प्लग इन के रिलीज़ नोट यहां उपलब्ध हैं: http://tools.android.com/tech-docs/new-build-system.
- डीएसएल की मदद से कस्टमाइज़ की गई आउटपुट फ़ाइल को शामिल करने के लिए, आईडीई मॉडल को ठीक किया गया. साथ ही, वैरिएंट ऑब्जेक्ट पर आउटपुट फ़ाइल पाने/सेट करने के लिए डीएसएल को ठीक किया गया, ताकि
- aapt से मिली Gradle गड़बड़ियां, अब build/ फ़ोल्डर में मर्ज की गई आउटपुट फ़ाइलों पर नहीं दिखती हैं. ये गड़बड़ियां, असल सोर्स की जगहों पर दिखती हैं.
- पैरलल बिल्ड. अब Gradle के पैरलल बिल्ड का इस्तेमाल किया जा सकता है. कृपया ध्यान रखें कि पаралल बिल्ड "इनक्यूबेशन" में हैं. Gradle के दस्तावेज़ देखें. यह सुविधा डिफ़ॉल्ट रूप से बंद है. इसे चालू करने के लिए, प्राथमिकताएं > कंपाइलर पर जाएं और अलग-अलग मॉड्यूल को एक साथ संकलित करें बॉक्स को चुनें.
- लेआउट रेंडरिंग, एडिटर में संसाधन को फ़ोल्ड करने वगैरह के लिए इस्तेमाल किए जाने वाले नए संसाधन रिपॉज़िटरी पर और काम:
- .aar लाइब्रेरी डिपेंडेंसी के लिए बुनियादी सहायता (उदाहरण के लिए, सोर्स की लोकल कॉपी के बिना लाइब्रेरी का इस्तेमाल करना). यह सुविधा, सोर्स एडिटर में संसाधन के एक्सएमएल की पुष्टि करने और नेविगेट करने के लिए अब भी काम नहीं कर रही है.
- रिसॉर्स रेफ़रंस में साइकल का पता लगाना.
- क्विक दस्तावेज़ (F1) की सुविधा, कैरेट के नीचे मौजूद स्ट्रिंग के सभी अनुवाद दिखा सकती है. अब यह सुविधा, Gradle के अलग-अलग फ़्लेवर और बिल्ड टाइप के साथ-साथ, लाइब्रेरी के सभी रिसॉर्स ओवरले भी दिखाएगी. इन्हें रिसॉर्स ओवरले के उलटे क्रम में दिखाया जाता है. साथ ही, मास्क की गई स्ट्रिंग के वर्शन पर स्ट्राइकथ्रू लगा होता है.
- मॉड्यूल की डिपेंडेंसी के सेट में बदलाव होने पर, मर्ज किए गए संसाधनों को अपडेट करने से जुड़ी समस्याएं ठीक की गई हैं.
- एक्सएमएल रेंडरिंग से जुड़ी गड़बड़ियों को ठीक किया गया है, ताकि वर्ण एंटिटी के एलान और एक्सएमएल और यूनिकोड के एस्केप को सही तरीके से मैनेज किया जा सके.
- लेआउट की झलक और लेआउट एडिटर विंडो के लिए, स्क्रीनशॉट की सुविधा सेव करें.
- टेंप्लेट से जुड़ी गड़बड़ियां ठीक की गईं.
- Lint की गड़बड़ियां ठीक की गईं.
- क्रैश रिपोर्ट से जुड़ी कई गड़बड़ियां ठीक की गईं. धन्यवाद. क्रैश की रिपोर्ट भेजते रहें!
Android Studio v0.1.x (मई 2013)
- कई गड़बड़ियां ठीक की गईं. इनमें, Windows इंस्टॉल करने से जुड़ी एक सामान्य समस्या को ठीक करना भी शामिल है.
Android Gradle प्लग इन के पुराने वर्शन
3.6.0 (फ़रवरी 2020)
Android प्लग इन के इस वर्शन के लिए, ये ज़रूरी हैं:
-
Gradle 5.6.4. ज़्यादा जानने के लिए, Gradle को अपडेट करने के बारे में सेक्शन पढ़ें.
-
SDK Build Tools 28.0.3 या इसके बाद का वर्शन.
इस मामूली अपडेट में, नई डिफ़ॉल्ट सेटिंग और सुविधाओं के साथ काम करने की सुविधा जोड़ी गई है. ये सुविधाएं, Android 11 में पैकेज की दिखने की सुविधा के लिए हैं.
ज़्यादा जानकारी के लिए, 4.0.1 के रिलीज़ नोट देखें.
नई सुविधाएं
Android Gradle प्लग इन के इस वर्शन में ये नई सुविधाएं शामिल हैं.
व्यू बाइंडिंग
व्यू बाइंडिंग की मदद से, कोड में व्यू का रेफ़रंस देते समय, कंपाइल टाइम (कंपाइल का समय) में सुरक्षा मिलती है. अब findViewById()
को अपने-आप जनरेट हुई बिडिंग क्लास के रेफ़रंस से बदला जा सकता है. व्यू बाइंडिंग का इस्तेमाल शुरू करने के लिए,
हर मॉड्यूल की build.gradle
फ़ाइल में ये शामिल करें:
android { viewBinding.enabled = true }
android { viewBinding.enabled = true }
ज़्यादा जानने के लिए, व्यू के लिए बाइंडिंग का दस्तावेज़ पढ़ें.
Maven Publish प्लग इन के लिए सहायता
Android Gradle प्लग इन में, Maven Publish Gradle प्लग इन के लिए सहायता शामिल होती है. इसकी मदद से, Apache Maven रिपॉज़िटरी में बिल्ड आर्टफ़ैक्ट पब्लिश किए जा सकते हैं. Android Gradle प्लग इन, आपके ऐप्लिकेशन या लाइब्रेरी मॉड्यूल में मौजूद हर बिल्ड वैरिएंट आर्टफ़ैक्ट के लिए एक कॉम्पोनेंट बनाता है. इसका इस्तेमाल, Maven रिपॉज़िटरी में किसी पब्लिकेशन को पसंद के मुताबिक बनाने के लिए किया जा सकता है.
ज़्यादा जानने के लिए, Maven Publish प्लग इन का इस्तेमाल करने के तरीके के बारे में बताने वाले पेज पर जाएं.
पैकेजिंग के लिए नया डिफ़ॉल्ट टूल
आपके ऐप्लिकेशन का डीबग वर्शन बनाते समय, प्लग इन आपके APK को बनाने के लिए, zipflinger नाम के नए पैकेजिंग टूल का इस्तेमाल करता है. इस नए टूल से, बिल्ड की स्पीड में सुधार होगा. अगर पैकेजिंग वाला नया टूल आपकी उम्मीद के मुताबिक काम नहीं करता है, तो कृपया बग की शिकायत करें. अपनी gradle.properties
फ़ाइल में ये चीज़ें शामिल करके, पैकेजिंग के पुराने टूल का इस्तेमाल फिर से शुरू किया जा सकता है:
android.useNewApkCreator=false
नेटिव बिल्ड एट्रिब्यूशन
अब आपके पास यह तय करने का विकल्प है कि Clang को आपके प्रोजेक्ट में मौजूद हर C/C++ फ़ाइल को बनाने और लिंक करने में कितना समय लगेगा. Gradle, एक ऐसा Chrome ट्रेस आउटपुट कर सकता है जिसमें इन कंपाइलर इवेंट के टाइमस्टैंप शामिल होते हैं. इससे, आपको अपने प्रोजेक्ट को बनाने में लगने वाले समय को बेहतर तरीके से समझने में मदद मिलती है. इस एट्रिब्यूशन फ़ाइल को आउटपुट करने के लिए, ये करें:
-
Gradle बिल्ड को चलाते समय,
-Pandroid.enableProfileJson=true
फ़्लैग जोड़ें. उदाहरण के लिए:gradlew assembleDebug -Pandroid.enableProfileJson=true
-
Chrome ब्राउज़र खोलें और खोज बार में
chrome://tracing
टाइप करें. -
फ़ाइल ढूंढने के लिए, लोड करें बटन पर क्लिक करें और
<var>project-root</var>/build/android-profile
पर जाएं. फ़ाइल का नामprofile-<var>timestamp</var>.json.gz
है.
नेटिव बिल्ड एट्रिब्यूशन डेटा, व्यूअर के सबसे ऊपर वाले हिस्से के पास देखा जा सकता है:
उपयोगकर्ता के व्यवहार में बदलाव
प्लग इन के इस वर्शन का इस्तेमाल करने पर, आपको इसके व्यवहार में ये बदलाव दिख सकते हैं.
डिफ़ॉल्ट रूप से, कंप्रेस नहीं की गई नेटिव लाइब्रेरी
ऐप्लिकेशन बनाने पर, प्लगिन अब डिफ़ॉल्ट रूप से extractNativeLibs
को "false"
पर सेट करता है. इसका मतलब है कि आपकी नेटिव लाइब्रेरी, पेज के हिसाब से अलाइन की गई हैं और उन्हें बिना कंप्रेस किए पैकेज किया गया है. इससे अपलोड का साइज़ बड़ा हो जाता है. हालांकि, इससे आपके उपयोगकर्ताओं को ये फ़ायदे मिलते हैं:
- ऐप्लिकेशन इंस्टॉल करने के बाद उसका साइज़ कम हो जाता है. ऐसा इसलिए होता है, क्योंकि प्लैटफ़ॉर्म, लाइब्रेरी की कॉपी बनाए बिना, सीधे तौर पर इंस्टॉल किए गए APK से नेटिव लाइब्रेरी को ऐक्सेस कर सकता है.
- डाउनलोड करने के लिए कम जगह चाहिए, क्योंकि APK या Android ऐप्लिकेशन बंडल में बिना कंप्रेस की गई नेटिव लाइब्रेरी शामिल करने पर, आम तौर पर Play Store का कंप्रेस करने का तरीका बेहतर होता है.
अगर आपको Android Gradle प्लग इन से, कंप्रेस की गई नेटिव लाइब्रेरी को पैकेज कराना है, तो अपने ऐप्लिकेशन के मेनिफ़ेस्ट में ये चीज़ें शामिल करें:
<application
android:extractNativeLibs="true"
... >
</application>
ध्यान दें: extractNativeLibs
मेनिफ़ेस्ट एट्रिब्यूट की जगह useLegacyPackaging
डीएसएल विकल्प का इस्तेमाल किया गया है. ज़्यादा जानकारी के लिए, रिलीज़ नोट देखें
कंप्रेस की गई नेटिव लाइब्रेरी को पैकेज करने के लिए, डीएसएल का इस्तेमाल करना.
NDK का डिफ़ॉल्ट वर्शन
अगर NDK टूल के कई वर्शन डाउनलोड किए जाते हैं, तो Android Gradle प्लग इन अब आपके सोर्स कोड फ़ाइलों को कंपाइल करने के लिए, डिफ़ॉल्ट वर्शन चुनता है.
पहले, प्लग इन NDK का डाउनलोड किया गया नया वर्शन चुनता था.
प्लग इन की ओर से चुने गए डिफ़ॉल्ट विकल्प को बदलने के लिए, मॉड्यूल की
build.gradle
फ़ाइल में android.ndkVersion
प्रॉपर्टी का इस्तेमाल करें.
R क्लास को आसानी से जनरेट करना
Android Gradle प्लग इन, आपके प्रोजेक्ट में हर लाइब्रेरी मॉड्यूल के लिए सिर्फ़ एक R क्लास जनरेट करके और उन R क्लास को अन्य मॉड्यूल डिपेंडेंसी के साथ शेयर करके, क्लासपथ को कंपाइल करना आसान बनाता है. इस ऑप्टिमाइज़ेशन की वजह से, बिल्ड तेज़ी से होने चाहिए. हालांकि, इसके लिए आपको इन बातों का ध्यान रखना होगा:
- कंपाइलर, अपस्ट्रीम मॉड्यूल डिपेंडेंसी के साथ R क्लास शेयर करता है. इसलिए, यह ज़रूरी है कि आपके प्रोजेक्ट में हर मॉड्यूल, पैकेज के एक अलग नाम का इस्तेमाल करे.
- किसी लाइब्रेरी की R क्लास को प्रोजेक्ट की अन्य डिपेंडेंसी के लिए दिखने या न दिखने का फ़ैसला, लाइब्रेरी को डिपेंडेंसी के तौर पर शामिल करने के लिए इस्तेमाल किए गए कॉन्फ़िगरेशन से तय होता है. उदाहरण के लिए, अगर लाइब्रेरी A में लाइब्रेरी B को 'एपीआई' डिपेंडेंसी के तौर पर शामिल किया गया है, तो लाइब्रेरी A और लाइब्रेरी A पर निर्भर अन्य लाइब्रेरी के पास, लाइब्रेरी B की R क्लास का ऐक्सेस होता है. हालांकि, हो सकता है कि अन्य लाइब्रेरी के पास, लाइब्रेरी B की R क्लास का ऐक्सेस न हो. अगर लाइब्रेरी A,
implementation
डिपेंडेंसी कॉन्फ़िगरेशन का इस्तेमाल करती है. ज़्यादा जानने के लिए, डिपेंडेंसी कॉन्फ़िगरेशन के बारे में पढ़ें.
डिफ़ॉल्ट कॉन्फ़िगरेशन में मौजूद रिसॉर्स हटाना
लाइब्रेरी मॉड्यूल के लिए, अगर आपने किसी ऐसी भाषा के लिए संसाधन शामिल किया है जिसे आपने
संसाधनों के डिफ़ॉल्ट सेट में शामिल नहीं किया है—उदाहरण के लिए, अगर आपने
/values-es/strings.xml
में hello_world
को स्ट्रिंग संसाधन के तौर पर शामिल किया है, लेकिन आपने उस संसाधन को
/values/strings.xml
में तय नहीं किया है—तो Android Gradle प्लग इन अब आपके प्रोजेक्ट को संकलित करते समय उस संसाधन को शामिल नहीं करता. इस बदलाव की वजह से, Resource Not Found
रनटाइम एक्ससेप्शन कम होंगे और बिल्ड की स्पीड बेहतर होगी.
D8 अब एनोटेशन के लिए, क्लास के डेटा के रखरखाव की नीति का पालन करता है
आपके ऐप्लिकेशन को कंपाइल करते समय, D8 अब इस बात का ध्यान रखता है कि एनोटेशन, क्लास के डेटा को बनाए रखने की नीति लागू करते हैं या नहीं. साथ ही, वे एनोटेशन रनटाइम के दौरान उपलब्ध नहीं होते. ऐप्लिकेशन के टारगेट SDK टूल को एपीआई लेवल 23 पर सेट करने पर भी यह समस्या होती है. इससे पहले, Android Gradle प्लग इन और D8 के पुराने वर्शन का इस्तेमाल करके ऐप्लिकेशन को कंपाइल करते समय, रनटाइम के दौरान इन एनोटेशन को ऐक्सेस करने की अनुमति दी जाती थी.
व्यवहार में अन्य बदलाव
-
aaptOptions.noCompress
अब सभी प्लैटफ़ॉर्म पर केस-संवेदनशील नहीं है. यह एपीके और बंडल, दोनों के लिए है. साथ ही, यह अपरकेस वर्णों का इस्तेमाल करने वाले पाथ का भी सम्मान करता है. -
डेटा बाइंडिंग अब डिफ़ॉल्ट रूप से इंक्रीमेंटल है. ज़्यादा जानने के लिए, समस्या #110061530 देखें.
-
Roboelectric यूनिट टेस्ट के साथ-साथ, सभी यूनिट टेस्ट अब पूरी तरह से कैश मेमोरी में सेव किए जा सकते हैं. ज़्यादा जानने के लिए, समस्या #115873047 देखें.
बग समाधान
Android Gradle प्लग इन के इस वर्शन में, गड़बड़ी ठीक करने के ये उपाय शामिल हैं:
- Robolectric यूनिट टेस्ट, अब उन लाइब्रेरी मॉड्यूल में काम करते हैं जो डेटा बाइंडिंग का इस्तेमाल करते हैं. ज़्यादा जानने के लिए, समस्या #126775542 देखें.
- अब Gradle के एक साथ कई टास्क चलाने की सुविधा चालू होने पर, एक से ज़्यादा मॉड्यूल में
connectedAndroidTest
टास्क चलाए जा सकते हैं.
पहले से मालूम समस्याएं
इस सेक्शन में, Android Gradle प्लग इन के 3.6.0 वर्शन में मौजूद समस्याओं के बारे में बताया गया है.
Android Lint टास्क की धीमी परफ़ॉर्मेंस
Android Lint को कुछ प्रोजेक्ट पर काम पूरा करने में ज़्यादा समय लग सकता है. ऐसा, पार्स करने के इन्फ़्रास्ट्रक्चर में हुई गिरावट की वजह से होता है. इसकी वजह से, कुछ कोड कंस्ट्रक्ट में, लैम्ब्डा के लिए अनुमानित टाइप का हिसाब लगाने में ज़्यादा समय लगता है.
इस समस्या को IDEA में मौजूद गड़बड़ी के तौर पर रिपोर्ट किया गया है. इसे Android Gradle प्लग इन 4.0 में ठीक कर दिया जाएगा.
मेनिफ़ेस्ट क्लास {:#agp-missing-manifest} मौजूद नहीं है
अगर आपका ऐप्लिकेशन अपने मेनिफ़ेस्ट में कस्टम अनुमतियां तय करता है, तो Android Gradle प्लग इन आम तौर पर एक Manifest.java
क्लास जनरेट करता है. इसमें आपकी कस्टम अनुमतियां, स्ट्रिंग कॉन्स्टेंट के तौर पर शामिल होती हैं. प्लग इन इस क्लास को आपके ऐप्लिकेशन के साथ पैकेज करता है, ताकि रनटाइम के दौरान उन अनुमतियों का रेफ़रंस आसानी से दिया जा सके.
Android Gradle प्लग इन 3.6.0 में, मेनिफ़ेस्ट क्लास जनरेट करने की सुविधा काम नहीं कर रही है.
अगर आपने प्लग इन के इस वर्शन का इस्तेमाल करके अपना ऐप्लिकेशन बनाया है और इसमें मेनिफ़ेस्ट क्लास का रेफ़रंस दिया गया है, तो आपको ClassNotFoundException
अपवाद दिख सकता है. इस समस्या को हल करने के लिए, इनमें से कोई एक तरीका अपनाएं:
-
अपनी कस्टम अनुमतियों को उनके पूरी तरह से क्वालिफ़ाइड नाम से रेफ़र करें. उदाहरण के लिए,
"com.example.myapp.permission.DEADLY_ACTIVITY"
. -
नीचे दिए गए तरीके से, अपने कंसटेंट तय करें:
public final class CustomPermissions { public static final class permission { public static final String DEADLY_ACTIVITY="com.example.myapp.permission.DEADLY_ACTIVITY"; } }
3.5.0 (अगस्त 2019)
Android Studio 3.5 के साथ-साथ, Android Gradle प्लग इन 3.5.0 एक मुख्य रिलीज़ है. यह Project Marble का नतीजा है. इस प्रोजेक्ट का मकसद, Android डेवलपर टूल के तीन मुख्य हिस्सों को बेहतर बनाना है: सिस्टम की परफ़ॉर्मेंस, सुविधाओं को बेहतर बनाना, और गड़बड़ियों को ठीक करना. खास तौर पर, इस अपडेट में प्रोजेक्ट को बनाने में लगने वाले समय को कम करने पर फ़ोकस किया गया है.
इन और Project Marble के अन्य अपडेट के बारे में जानने के लिए, Android Developers की ब्लॉग पोस्ट पढ़ें या नीचे दिए गए सेक्शन देखें.
Android प्लग इन के इस वर्शन के लिए, ये ज़रूरी हैं:
-
Gradle 5.4.1. ज़्यादा जानने के लिए, Gradle को अपडेट करने के बारे में सेक्शन पढ़ें.
-
SDK Build Tools के 28.0.3 या इसके बाद के वर्शन.
इस मामूली अपडेट में, नई डिफ़ॉल्ट सेटिंग और सुविधाओं के साथ काम करने की सुविधा जोड़ी गई है. ये सुविधाएं, Android 11 में पैकेज की दिखने की सुविधा के लिए हैं.
ज़्यादा जानकारी के लिए, 4.0.1 के रिलीज़ नोट देखें.
3.5.3 (दिसंबर 2019)
यह मामूली अपडेट, Android Studio 3.5.3 के साथ काम करता है. इसमें कई गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस में सुधार किए गए हैं.
3.5.2 (नवंबर 2019)
यह मामूली अपडेट, Android Studio 3.5.2 के साथ काम करता है. इसमें कई गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस में सुधार किए गए हैं. गड़बड़ियों को ठीक करने से जुड़ी अहम जानकारी देखने के लिए, रिलीज़ से जुड़े अपडेट वाले ब्लॉग पर जाएं.
3.5.1 (अक्टूबर 2019)
यह मामूली अपडेट, Android Studio 3.5.1 के साथ काम करता है. इसमें कई गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस में सुधार किए गए हैं. गड़बड़ियों को ठीक करने से जुड़ी अहम जानकारी देखने के लिए, रिलीज़ से जुड़े अपडेट वाले ब्लॉग पर जाएं.
इंक्रीमेंटल एनोटेशन प्रोसेसिंग
डेटा बाइंडिंग एनोटेशन प्रोसेसर, एनोटेशन की इंक्रीमेंटल प्रोसेसिंग के साथ काम करता है. इसके लिए, gradle.properties
फ़ाइल में android.databinding.incremental=true
सेट करें. इस ऑप्टिमाइज़ेशन की वजह से, इंक्रीमेंटल बिल्ड की परफ़ॉर्मेंस बेहतर होती है. ऑप्टिमाइज़ किए गए एनोटेशन प्रोसेसर की पूरी सूची के लिए, इंक्रीमेंटल एनोटेशन प्रोसेसर की टेबल देखें.
इसके अलावा, KAPT 1.3.30 और इसके बाद के वर्शन में, एनोटेशन के लिए इंंक्रीमेंटल प्रोसेसर का भी इस्तेमाल किया जा सकता है. इसे चालू करने के लिए, अपनी gradle.properties
फ़ाइल में kapt.incremental.apt=true
शामिल करें.
कैश मेमोरी में सेव की जा सकने वाली यूनिट टेस्ट
includeAndroidResources
को true
पर सेट करके, Android के संसाधनों, एसेट, और मेनिफ़ेस्ट का इस्तेमाल करने के लिए यूनिट टेस्ट चालू करने पर, Android Gradle प्लग इन एक टेस्ट कॉन्फ़िगरेशन फ़ाइल जनरेट करता है. इसमें पूर्ण पाथ होते हैं, जिससे कैश मेमोरी को फिर से सेट करने की सुविधा बंद हो जाती है. आपके पास, प्लग इन को रेलेटिव पाथ का इस्तेमाल करके टेस्ट कॉन्फ़िगरेशन जनरेट करने का निर्देश देने का विकल्प है. इससे AndroidUnitTest
टास्क को पूरी तरह से कैश मेमोरी में सेव किया जा सकता है. इसके लिए, अपनी gradle.properties
फ़ाइल में ये शामिल करें:
android.testConfig.useRelativePath = true
पहले से मालूम समस्याएं
-
Kotlin Gradle प्लग इन 1.3.31 या उससे पहले के वर्शन का इस्तेमाल करने पर, आपको प्रोजेक्ट को बिल्ड या सिंक करते समय यह चेतावनी दिख सकती है:
WARNING: API 'variant.getPackageLibrary()' is obsolete and has been replaced with 'variant.getPackageLibraryProvider()'.
इस समस्या को ठीक करने के लिए, प्लग इन को 1.3.40 या इसके बाद के वर्शन पर अपग्रेड करें.
3.4.0 (अप्रैल 2019)
Android प्लग इन के इस वर्शन के लिए, ये ज़रूरी हैं:
-
Gradle 5.1.1 या इसके बाद का वर्शन. ज़्यादा जानने के लिए, Gradle को अपडेट करने के बारे में सेक्शन पढ़ें.
ध्यान दें: Gradle 5.0 और इसके बाद के वर्शन का इस्तेमाल करने पर, Gradle डेमन मेमोरी हेप का डिफ़ॉल्ट साइज़ 1 जीबी से घटकर 512 एमबी हो जाता है. इससे, बिल्ड की परफ़ॉर्मेंस में गिरावट आ सकती है. इस डिफ़ॉल्ट सेटिंग को बदलने के लिए, अपने प्रोजेक्ट की
gradle.properties
फ़ाइल में, Gradle डेमन हेप का साइज़ तय करें. -
SDK Build Tools के 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
: यह एक मौजूदा कॉन्फ़िगरेशन है. इसका इस्तेमाल, लिंट की उन जांचों के लिए किया जाना चाहिए जिन्हें आपको सिर्फ़ प्रोजेक्ट को स्थानीय तौर पर बिल्ड करते समय चलाना है. अगर आपने पब्लिश किए गए 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 Instant Apps के फ़ीचर प्लग इन के बंद होने की चेतावनी: अगर आपने अब भी अपने झटपट ऐप्लिकेशन को बनाने के लिए,
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 के साथ काम करने से जुड़े अक्सर पूछे जाने वाले सवाल पढ़ें. इससे आपको पता चलेगा कि आपकी समस्या का हल मौजूद है या नहीं. अगर समस्या हल करने का तरीका दस्तावेज़ में नहीं दिया गया है, तो कृपया गड़बड़ी की शिकायत करें.
अपने प्रोजेक्ट की
gradle.properties
फ़ाइल में इनमें से कोई एक लाइन जोड़कर, R8 को बंद किया जा सकता है:
# 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 = true
Android Gradle प्लग-इन की मदद से पैकेज का नाम सेट करने के बारे में ज़्यादा जानने के लिए, ऐप्लिकेशन आईडी सेट करना लेख पढ़ें.
3.3.0 (जनवरी 2019)
Android प्लग इन के इस वर्शन के लिए, ये ज़रूरी हैं:
-
Gradle 4.10.1 या इसके बाद का वर्शन. ज़्यादा जानने के लिए, Gradle को अपडेट करने के बारे में सेक्शन पढ़ें.
ध्यान दें: Gradle 5.0 और इसके बाद के वर्शन का इस्तेमाल करने पर, Gradle डेमन मेमोरी हेप का डिफ़ॉल्ट साइज़ 1 जीबी से घटकर 512 एमबी हो जाता है. इससे, बिल्ड की परफ़ॉर्मेंस में गिरावट आ सकती है. इस डिफ़ॉल्ट सेटिंग को बदलने के लिए, अपने प्रोजेक्ट की
gradle.properties
फ़ाइल में Gradle डेमन हेप का साइज़ तय करें. -
SDK Build Tools 28.0.3 या इसके बाद का वर्शन.
इस मामूली अपडेट में, नई डिफ़ॉल्ट सेटिंग और सुविधाओं के साथ काम करने की सुविधा जोड़ी गई है. ये सुविधाएं, Android 11 में पैकेज की दिखने की सुविधा के लिए हैं.
ज़्यादा जानकारी के लिए, 4.0.1 के रिलीज़ नोट देखें.
3.3.2 (मार्च 2019)
यह मामूली अपडेट, Android Studio 3.3.2 के साथ काम करता है. इसमें कई गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस में सुधार किए गए हैं. गड़बड़ियों को ठीक करने से जुड़ी अहम जानकारी देखने के लिए, रिलीज़ से जुड़े अपडेट वाले ब्लॉग पर जाएं.
3.3.1 (फ़रवरी 2019)
यह मामूली अपडेट, Android Studio 3.3.1 के साथ काम करता है. इसमें कई गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस को बेहतर बनाया गया है.
नई सुविधाएं
-
बेहतर क्लासपाथ सिंक्रोनाइज़ेशन: Android Gradle प्लग इन, रनटाइम और कॉम्पाइल टाइम क्लासपाथ पर डिपेंडेंसी को हल करते समय, कई क्लासपाथ में दिखने वाली डिपेंडेंसी के लिए, डाउनस्ट्रीम वर्शन के कुछ विरोधों को ठीक करने की कोशिश करता है.
उदाहरण के लिए, अगर रनटाइम क्लासपाथ में लाइब्रेरी A का वर्शन 2.0 और कंपाइल क्लासपाथ में लाइब्रेरी A का वर्शन 1.0 शामिल है, तो गड़बड़ियों से बचने के लिए प्लग इन, कंपाइल क्लासपाथ पर लाइब्रेरी A के वर्शन 2.0 पर डिपेंडेंसी को अपने-आप अपडेट कर देता है.
हालांकि, अगर रनटाइम क्लासपाथ में लाइब्रेरी A का वर्शन 1.0 शामिल है और संकलन में लाइब्रेरी A का वर्शन 2.0 शामिल है, तो प्लग इन, संकलन क्लासपाथ पर लाइब्रेरी A के वर्शन 1.0 पर डिपेंडेंसी को डाउनग्रेड नहीं करता. साथ ही, आपको गड़बड़ी का मैसेज दिखेगा. ज़्यादा जानने के लिए, क्लासपथ के बीच के संघर्षों को ठीक करना लेख पढ़ें.
-
एनोटेशन प्रोसेसर का इस्तेमाल करते समय, बेहतर इंक्रीमेंटल Java कंपाइलेशन: इस अपडेट से, एनोटेशन प्रोसेसर का इस्तेमाल करते समय, इंक्रीमेंटल Java कंपाइलेशन के लिए बेहतर सहायता मिलती है. इससे, बिल्ड में लगने वाला समय कम हो जाता है.
ध्यान दें: यह सुविधा Gradle 4.10.1 और इसके बाद के वर्शन के साथ काम करती है. हालांकि, Gradle के 8194 से जुड़ी समस्या की वजह से, यह सुविधा Gradle 5.1 के साथ काम नहीं करती.
-
Kapt का इस्तेमाल करने वाले प्रोजेक्ट के लिए (सिर्फ़ Kotlin वाले ज़्यादातर प्रोजेक्ट और Kotlin-Java हाइब्रिड प्रोजेक्ट): डेटा बाइंडिंग या रिट्रो-लैम्ब्डा प्लग इन का इस्तेमाल करने पर भी, Java का इंक्रीमेंटल कंपाइलेशन चालू होता है. Kapt टास्क की मदद से एनोटेशन प्रोसेस करने की सुविधा अभी तक इंक्रीमेंटल नहीं है.
-
Kapt का इस्तेमाल न करने वाले प्रोजेक्ट (सिर्फ़ Java प्रोजेक्ट) के लिए: अगर इस्तेमाल किए जा रहे सभी एनोटेशन प्रोसेसर, इंक्रीमेंटल एनोटेशन प्रोसेसिंग के साथ काम करते हैं, तो इंक्रीमेंटल Java कंपाइलेशन डिफ़ॉल्ट रूप से चालू होता है. एनोटेशन प्रोसेसर के इस्तेमाल में बढ़ोतरी पर नज़र रखने के लिए, Gradle की समस्या 5277 देखें.
हालांकि, अगर एक या एक से ज़्यादा एनोटेशन प्रोसेसर, इंक्रीमेंटल बिल्ड के साथ काम नहीं करते, तो इंक्रीमेंटल Java कंपाइलेशन की सुविधा चालू नहीं होती. इसके बजाय, अपनी
gradle.properties
फ़ाइल में यह फ़्लैग शामिल करें:android.enableSeparateAnnotationProcessing=true
इस फ़्लैग को शामिल करने पर, Android Gradle प्लग इन एनोटेशन प्रोसेसर को एक अलग टास्क में चलाता है. साथ ही, Java कंपाइलेशन टास्क को धीरे-धीरे चलाने की अनुमति देता है.
-
-
पुराने एपीआई का इस्तेमाल करते समय, डीबग करने से जुड़ी बेहतर जानकारी: जब प्लग इन को पता चलता है कि आपने ऐसे एपीआई का इस्तेमाल किया है जो अब काम नहीं करता, तो वह अब ज़्यादा जानकारी दे सकता है. इससे आपको यह पता लगाने में मदद मिलती है कि उस एपीआई का इस्तेमाल कहां किया जा रहा है. ज़्यादा जानकारी देखने के लिए, आपको अपने प्रोजेक्ट की
gradle.properties
फ़ाइल में ये शामिल करने होंगे:android.debug.obsoleteApi=true
कमांड लाइन से
-Pandroid.debug.obsoleteApi=true
डालकर भी फ़्लैग चालू किया जा सकता है. -
कमांड लाइन से, फ़ीचर मॉड्यूल पर इंस्ट्रुमेंटेशन टेस्ट चलाए जा सकते हैं.
उपयोगकर्ता के व्यवहार में बदलाव
-
टास्क को धीरे-धीरे कॉन्फ़िगर करना: अब प्लग इन, Gradle के टास्क बनाने वाले नए एपीआई का इस्तेमाल करता है. इससे, उन टास्क को शुरू और कॉन्फ़िगर करने से बचा जा सकता है जो मौजूदा बिल्ड को पूरा करने के लिए ज़रूरी नहीं हैं या जो टास्क, टास्क के ग्राफ़ में नहीं हैं. उदाहरण के लिए, अगर आपके पास “रिलीज़” और “डीबग” जैसे कई बिल्ड वैरिएंट हैं और आप अपने ऐप्लिकेशन का “डीबग” वर्शन बना रहे हैं, तो प्लग इन आपके ऐप्लिकेशन के “रिलीज़” वर्शन के लिए, टास्क को शुरू और कॉन्फ़िगर करने से बचता है.
वैरिएंट एपीआई में कुछ पुराने तरीकों को कॉल करने पर, अब भी टास्क कॉन्फ़िगरेशन को फ़ोर्स किया जा सकता है. जैसे,
variant.getJavaCompile()
. यह पक्का करने के लिए कि आपका बिल्ड, टास्क के लेज़ी कॉन्फ़िगरेशन के लिए ऑप्टिमाइज़ किया गया है, ऐसे नए तरीके लागू करें जोvariant.getJavaCompileProvider()
जैसे TaskProvider ऑब्जेक्ट दिखाते हैं.अगर कस्टम बिल्ड टास्क चलाए जाते हैं, तो Gradle के नए टास्क बनाने वाले API के साथ काम करने का तरीका जानें.
-
किसी खास बिल्ड टाइप के लिए,
useProguard false
सेट करते समय, प्लग इन अब आपके ऐप्लिकेशन के कोड और संसाधनों को छोटा करने और उन्हें अस्पष्ट करने के लिए, ProGuard के बजाय R8 का इस्तेमाल करता है. R8 के बारे में ज़्यादा जानने के लिए, Android डेवलपर ब्लॉग पर मौजूद यह ब्लॉग पोस्ट पढ़ें. -
लाइब्रेरी प्रोजेक्ट के लिए R क्लास तेज़ी से जनरेट करना: पहले, Android Gradle प्लग इन आपके हर प्रोजेक्ट की डिपेंडेंसी के लिए एक
R.java
फ़ाइल जनरेट करता था. इसके बाद, उन R क्लास को आपके ऐप्लिकेशन की अन्य क्लास के साथ कंपाइल करता था. अब प्लग इन, आपके ऐप्लिकेशन की कंपाइल की गई R क्लास वाला एक JAR जनरेट करता है. इसमें, पहले इंटरमीडिएटR.java
क्लास बनाने की ज़रूरत नहीं होती. इस ऑप्टिमाइज़ेशन से, उन प्रोजेक्ट के लिए बिल्ड की परफ़ॉर्मेंस काफ़ी बेहतर हो सकती है जिनमें कई लाइब्रेरी सब-प्रोजेक्ट और डिपेंडेंसी शामिल हैं. साथ ही, Android Studio में इंडेक्स करने की स्पीड भी बेहतर हो सकती है. -
Android ऐप्लिकेशन बंडल बनाते समय, Android 6.0 (एपीआई लेवल 23) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन बंडल से जनरेट किए गए APK में, अब डिफ़ॉल्ट रूप से आपकी नेटिव लाइब्रेरी के बिना कंप्रेस किए गए वर्शन शामिल होते हैं. इस ऑप्टिमाइज़ेशन की मदद से, डिवाइस को लाइब्रेरी की कॉपी बनाने की ज़रूरत नहीं पड़ती. इससे, आपके ऐप्लिकेशन का डिस्क साइज़ कम हो जाता है. अगर आपको यह ऑप्टिमाइज़ेशन बंद करना है, तो अपनी
gradle.properties
फ़ाइल में ये चीज़ें जोड़ें:android.bundle.enableUncompressedNativeLibs = false
-
यह प्लग इन, तीसरे पक्ष के कुछ प्लग इन के कम से कम वर्शन लागू करता है.
-
सिंगल-वैरिएंट प्रोजेक्ट सिंक करना: अपने प्रोजेक्ट को अपने बिल्ड कॉन्फ़िगरेशन के साथ सिंक करना, Android Studio को यह समझने में मदद करने के लिए एक अहम चरण है कि आपके प्रोजेक्ट का स्ट्रक्चर कैसा है. हालांकि, बड़े प्रोजेक्ट के लिए, इस प्रोसेस में समय लग सकता है. अगर आपके प्रोजेक्ट में एक से ज़्यादा बिल्ड वैरिएंट का इस्तेमाल किया जाता है, तो अब प्रोजेक्ट सिंक को ऑप्टिमाइज़ किया जा सकता है. इसके लिए, सिंक को सिर्फ़ उस वैरिएंट तक सीमित करें जिसे आपने फ़िलहाल चुना है.
इस ऑप्टिमाइज़ेशन को चालू करने के लिए, आपको Android Studio 3.3 या इसके बाद के वर्शन के साथ Android Gradle प्लग इन 3.3.0 या इसके बाद के वर्शन का इस्तेमाल करना होगा. इन ज़रूरी शर्तों को पूरा करने पर, प्रोजेक्ट सिंक करते समय IDE आपको इस ऑप्टिमाइज़ेशन को चालू करने के लिए कहता है. ऑप्टिमाइज़ेशन की सुविधा, नए प्रोजेक्ट में भी डिफ़ॉल्ट रूप से चालू होती है.
इस ऑप्टिमाइज़ेशन को मैन्युअल तरीके से चालू करने के लिए, फ़ाइल > सेटिंग > एक्सपेरिमेंटल > Gradle (Mac पर Android Studio > प्राथमिकताएं > एक्सपेरिमेंटल > Gradle) पर क्लिक करें और सिर्फ़ चालू वैरिएंट सिंक करें चेकबॉक्स चुनें.
ध्यान दें: यह ऑप्टिमाइज़ेशन, उन प्रोजेक्ट के साथ पूरी तरह काम करता है जिनमें Java और C++ भाषाएं शामिल होती हैं. साथ ही, यह Kotlin के साथ भी कुछ हद तक काम करता है. Kotlin कॉन्टेंट वाले प्रोजेक्ट के लिए ऑप्टिमाइज़ेशन चालू करने पर, Gradle सिंक, इंटरनल तौर पर पूरे वैरिएंट का इस्तेमाल करने लगता है.
-
SDK टूल के मौजूद न होने पर, उन्हें अपने-आप डाउनलोड होने की सुविधा: इस सुविधा को NDK के साथ काम करने के लिए बेहतर बनाया गया है. ज़्यादा जानने के लिए, पढ़ें Gradle की मदद से, मौजूद न होने वाले पैकेज अपने-आप डाउनलोड होने की सुविधा.
गड़बड़ियां ठीक की गईं
-
Android Gradle प्लग इन 3.3.0 में ये समस्याएं ठीक की गई हैं:
- Jetifier चालू होने के बावजूद, AndroidX वर्शन के बजाय
android.support.v8.renderscript.RenderScript
को कॉल करने वाली बिल्ड प्रोसेस - स्टैटिक तौर पर बंडल किए गए
annotation.AnyRes
के साथandroidx-rs.jar
की वजह से होने वाली गड़बड़ियां - RenderScript का इस्तेमाल करते समय, अब आपको अपनी
build.gradle
फ़ाइलों में, Build Tools का वर्शन मैन्युअल तौर पर सेट करने की ज़रूरत नहीं है
- Jetifier चालू होने के बावजूद, AndroidX वर्शन के बजाय
3.2.0 (सितंबर 2018)
Android प्लग इन के इस वर्शन के लिए, ये ज़रूरी हैं:
- Gradle 4.6 या उसके बाद का वर्शन. ज़्यादा जानने के लिए, Gradle को अपडेट करने के बारे में सेक्शन पढ़ें.
- SDK Build Tools 28.0.3 या इसके बाद का वर्शन.
3.2.1 (अक्टूबर 2018)
इस अपडेट के बाद, आपको SDK टूल के लिए कोई वर्शन बताने की ज़रूरत नहीं है. Android Gradle प्लग इन अब डिफ़ॉल्ट रूप से 28.0.3 वर्शन का इस्तेमाल करता है.
नई सुविधाएं
-
Android ऐप्लिकेशन बंडल बनाने के लिए सहायता: ऐप्लिकेशन बंडल, अपलोड करने का एक नया फ़ॉर्मैट है. इसमें आपके ऐप्लिकेशन का पूरा कोड और संसाधन शामिल होते हैं. साथ ही, Google Play Store पर APK जनरेट करने और साइन करने की प्रोसेस को बाद में किया जाता है. अब आपको कई APK बनाना, उन पर हस्ताक्षर करना, और उन्हें मैनेज करना नहीं पड़ेगा. साथ ही, उपयोगकर्ताओं को अपने डिवाइस के लिए ऑप्टिमाइज़ किए गए छोटे डाउनलोड मिलेंगे. ज़्यादा जानने के लिए, Android ऐप्लिकेशन बंडल के बारे में जानकारी लेख पढ़ें.
-
एनोटेशन प्रोसेसर का इस्तेमाल करते समय, इंक्रीमेंटल बिल्ड की स्पीड को बेहतर बनाने के लिए सहायता: अब
AnnotationProcessorOptions
डीएसएल मेंCommandLineArgumentProvider
की सुविधा जोड़ी गई है. इससे, आप या एनोटेशन प्रोसेसर के लेखक, इंक्रीमेंटल बिल्ड प्रॉपर्टी टाइप के एनोटेशन का इस्तेमाल करके, प्रोसेसर के लिए आर्ग्युमेंट को एनोटेट कर सकते हैं. इन एनोटेशन का इस्तेमाल करने से, इंक्रीमेंटल और कैश मेमोरी में सेव किए गए क्लीन बिल्ड की सटीक जानकारी और परफ़ॉर्मेंस बेहतर होती है. ज़्यादा जानने के लिए, पढ़ें एनोटेशन प्रोसेसर को आर्ग्युमेंट पास करना. -
AndroidX के लिए माइग्रेशन टूल: Android 3.2 और उसके बाद के वर्शन के साथ Android Gradle प्लग इन 3.2.0 का इस्तेमाल करते समय, नई AndroidX लाइब्रेरी का इस्तेमाल करने के लिए, अपने प्रोजेक्ट की लोकल और Maven डिपेंडेंसी को माइग्रेट किया जा सकता है. इसके लिए, मेन्यू बार से Refactor > Migrate to AndroidX को चुनें. माइग्रेशन टूल का इस्तेमाल करने पर, आपकी
gradle.properties
फ़ाइल में ये फ़्लैग भीtrue
पर सेट हो जाते हैं:-
android.useAndroidX
:true
पर सेट होने पर, Android प्लग इन, Support Library के बजाय, सही AndroidX लाइब्रेरी का इस्तेमाल करता है. अगर इस फ़्लैग के बारे में जानकारी नहीं दी जाती है, तो प्लग इन इसे डिफ़ॉल्ट रूप सेfalse
पर सेट कर देता है. -
android.enableJetifier
:true
पर सेट होने पर, Android प्लग इन, तीसरे पक्ष की मौजूदा लाइब्रेरी को AndroidX का इस्तेमाल करने के लिए अपने-आप माइग्रेट कर देता है. इसके लिए, वह लाइब्रेरी की बाइनरी को फिर से लिखता है. अगर इस फ़्लैग की वैल्यू नहीं दी जाती है, तो प्लग इन इसे डिफ़ॉल्ट रूप सेfalse
पर सेट कर देता है. इस फ़्लैग को सिर्फ़ तबtrue
पर सेट किया जा सकता है, जबandroid.useAndroidX
को भीtrue
पर सेट किया गया हो. ऐसा न करने पर, आपको बिल्ड से जुड़ी गड़बड़ी का मैसेज दिखेगा.ज़्यादा जानने के लिए, AndroidX की खास जानकारी पढ़ें.
-
-
कोड को छोटा करने वाला नया टूल, R8: R8, कोड को छोटा करने और उसे बदलने के लिए एक नया टूल है. यह ProGuard की जगह लेता है. R8 के झलक वाले वर्शन का इस्तेमाल शुरू करने के लिए, अपने प्रोजेक्ट की
gradle.properties
फ़ाइल में ये शामिल करें:android.enableR8 = true
android.enableR8 = true
उपयोगकर्ता के व्यवहार में बदलाव
-
D8 की मदद से, शर्करा हटाने की सुविधा अब डिफ़ॉल्ट रूप से चालू है.
-
AAPT2 अब Google के मेवन रिपॉज़िटरी पर उपलब्ध है. AAPT2 का इस्तेमाल करने के लिए, पक्का करें कि आपकी
build.gradle
फ़ाइल मेंgoogle()
डिपेंडेंसी मौजूद हो, जैसा कि यहां दिखाया गया है:buildscript { repositories { google() // here jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.2.0' } } allprojects { repositories { google() // and here jcenter() }
buildscript { repositories { google() // here jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.2.0' } } allprojects { repositories { google() // and here jcenter() }
-
नेटिव मल्टीडेक्स अब डिफ़ॉल्ट रूप से चालू है. Android Studio के पिछले वर्शन में, किसी ऐप्लिकेशन के डीबग वर्शन को Android एपीआई लेवल 21 या उसके बाद के वर्शन पर चलने वाले डिवाइस पर डिप्लॉय करते समय, नेटिव मल्टीडेक्स की सुविधा चालू होती थी. अब, डिवाइस पर डिप्लॉय करने या रिलीज़ के लिए APK बनाने के दौरान, Android Gradle प्लग इन उन सभी मॉड्यूल के लिए नेटिव मल्टीडेक्स को चालू कर देता है जिनमें
minSdkVersion=21
या इसके बाद का वर्शन सेट किया गया है. -
अब इस प्लग इन के लिए, protobuf प्लग इन (0.8.6), Kotlin प्लग इन (1.2.50), और Crashlytics प्लग इन (1.25.4) के कम से कम वर्शन का इस्तेमाल करना ज़रूरी है.
-
फ़ीचर मॉड्यूल प्लगिन,
com.android.feature
, अब मॉड्यूल का नाम बताते समय सिर्फ़ अक्षरों, अंकों, और अंडरस्कोर का इस्तेमाल करने की ज़रूरी शर्त लागू करता है. उदाहरण के लिए, अगर आपके फ़ीचर मॉड्यूल के नाम में डैश शामिल हैं, तो आपको बिल्ड से जुड़ी गड़बड़ी का मैसेज मिलेगा. यह व्यवहार, डाइनैमिक फ़ीचर प्लग इन के व्यवहार से मेल खाता है.
बग समाधान
- JavaCompile को अब डेटा बाइंडिंग वाले प्रोजेक्ट में कैश मेमोरी में सेव किया जा सकता है. (समस्या #69243050)
- डेटा बाइंडिंग वाले लाइब्रेरी मॉड्यूल के लिए, बेहतर तरीके से कंपाइल करने से बचना. (समस्या #77539932)
- अगर आपने पहले के वर्शन में, बिल्ड से जुड़ी कुछ गड़बड़ियों की वजह से, ज़रूरत के हिसाब से कॉन्फ़िगर करें सुविधा को बंद किया था, तो अब इसे फिर से चालू किया जा सकता है. (समस्या #77910727)
3.1.0 (मार्च 2018)
Android प्लग इन के इस वर्शन के लिए, ये ज़रूरी हैं:
-
Gradle 4.4 या इसके बाद का वर्शन.
ज़्यादा जानने के लिए, Gradle को अपडेट करने के बारे में सेक्शन पढ़ें.
-
Build Tools 27.0.3 या इसके बाद का वर्शन.
ध्यान रखें कि अब आपको
android.buildToolsVersion
प्रॉपर्टी का इस्तेमाल करके, बिल्ड टूल के लिए कोई वर्शन तय करने की ज़रूरत नहीं है. प्लग इन, डिफ़ॉल्ट रूप से ज़रूरी वर्शन का इस्तेमाल करता है.
नया DEX कंपाइलर, D8
Android Studio अब डिफ़ॉल्ट रूप से, D8 नाम के नए DEX कंपाइलर का इस्तेमाल करता है. DEX संकलन, Android रनटाइम (या Android के पुराने वर्शन के लिए Dalvik) के लिए, .class
बाइटकोड को .dex
बाइटकोड में बदलने की प्रोसेस है. DX नाम के पिछले कंपाइलर की तुलना में, D8
तेज़ी से कंपाइल करता है और छोटी DEX फ़ाइलें आउटपुट करता है. साथ ही, ऐप्लिकेशन के रनटाइम की परफ़ॉर्मेंस पहले जैसी या उससे बेहतर होती है.
D8 से, आपके ऐप्लिकेशन डेवलपमेंट के रोज़ के वर्कफ़्लो में कोई बदलाव नहीं होना चाहिए. हालांकि, अगर आपको नए कंपाइलर से जुड़ी कोई समस्या आती है, तो कृपया गड़बड़ी की शिकायत करें. अपने प्रोजेक्ट की gradle.properties
फ़ाइल में ये शामिल करके, D8 को कुछ समय के लिए बंद किया जा सकता है और DX का इस्तेमाल किया जा सकता है:
android.enableD8=false
Java 8 भाषा की सुविधाओं का इस्तेमाल करने वाले प्रोजेक्ट के लिए, धीरे-धीरे डीसुगर करने की सुविधा डिफ़ॉल्ट रूप से चालू होती है. इसे बंद करने के लिए,
अपने प्रोजेक्ट की gradle.properties
फ़ाइल में ये चीज़ें बताएं:
android.enableIncrementalDesugaring=false.
झलक देखने वाले उपयोगकर्ता: अगर आपने पहले से ही D8 के झलक वाले वर्शन का इस्तेमाल किया जा रहा है, तो ध्यान दें कि अब यह JDK के बजाय, SDK टूल के साथ काम करने वाली लाइब्रेरी के हिसाब से कॉम्पाइल होता है. इसलिए, अगर 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 प्लग इन शामिल होता है.
3.0.0 (अक्टूबर 2017)
Android Gradle प्लग इन 3.0.0 में कई तरह के बदलाव किए गए हैं. इनका मकसद, बड़े प्रोजेक्ट की परफ़ॉर्मेंस से जुड़ी समस्याओं को हल करना है.
उदाहरण के लिए, ~130 मॉड्यूल और बड़ी संख्या में बाहरी डिपेंडेंसी (लेकिन कोई कोड या रिसॉर्स नहीं) वाले सैंपल स्केलेटन प्रोजेक्ट पर, परफ़ॉर्मेंस में इस तरह के सुधार देखे जा सकते हैं:
Android प्लग इन का वर्शन + Gradle का वर्शन | Android प्लग इन 2.2.0 + Gradle 2.14.1 | Android प्लग इन 2.3.0 + Gradle 3.3 | Android प्लग इन 3.0.0 + Gradle 4.1 |
---|---|---|---|
कॉन्फ़िगरेशन (उदाहरण के लिए, ./gradlew --help चल रहा है) |
~2 मिनट | ~9 सेकंड | ~2.5 सेकंड |
एक लाइन में Java में बदलाव (लागू करने से जुड़ा बदलाव) | ~2 मिनट 15 सेकंड | ~29 सेकंड | ~6.4 सेकंड |
इनमें से कुछ बदलावों की वजह से, मौजूदा बिल्ड काम नहीं करते. इसलिए, नए प्लग इन का इस्तेमाल करने से पहले, आपको अपने प्रोजेक्ट को माइग्रेट करने के बारे में सोचना चाहिए.
अगर आपको ऊपर बताई गई परफ़ॉर्मेंस में सुधार नहीं दिखता है, तो कृपया बग की शिकायत करें और Gradle प्रोफ़ाइलर का इस्तेमाल करके, अपने बिल्ड का ट्रेस शामिल करें.
Android प्लग इन के इस वर्शन के लिए, ये ज़रूरी हैं:
- Gradle 4.1 या इसके बाद का वर्शन. ज़्यादा जानने के लिए, Gradle को अपडेट करने के बारे में सेक्शन पढ़ें.
-
Build Tools 26.0.2
या इसके बाद का वर्शन. इस अपडेट के बाद, आपको अब बिल्ड टूल के लिए कोई वर्शन बताने की ज़रूरत नहीं है. प्लग इन, डिफ़ॉल्ट रूप से ज़रूरी वर्शन का इस्तेमाल करता है.
इसलिए, अब
android.buildToolsVersion
प्रॉपर्टी को हटाया जा सकता है.
3.0.1 (नवंबर 2017)
यह Android Studio 3.0.1 के साथ काम करने के लिए एक छोटा अपडेट है. इसमें सामान्य गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस को बेहतर बनाया गया है.
ऑप्टिमाइज़ेशन
- बेहतर तरीके से कई मॉड्यूल वाले प्रोजेक्ट के लिए, टास्क ग्राफ़ के ज़रिए एक साथ कई काम करने की सुविधा.
- डिपेंडेंसी में बदलाव करने पर, Gradle उन मॉड्यूल को फिर से कंपाइल नहीं करता जिनके पास डिपेंडेंसी के एपीआई का ऐक्सेस नहीं है. इससे, Gradle तेज़ी से बिल्ड करता है.
आपको यह तय करना चाहिए कि कौनसी डिपेंडेंसी, दूसरे मॉड्यूल को अपने एपीआई को लीक करें. इसके लिए, Gradle के नए डिपेंडेंसी कॉन्फ़िगरेशन का इस्तेमाल करें:
implementation
,api
,compileOnly
, औरruntimeOnly
. - हर क्लास के लिए डेक्सिंग की वजह से, इंक्रीमेंटल बिल्ड की स्पीड तेज़ होती है. अब हर क्लास को अलग-अलग DEX फ़ाइलों में संकलित किया जाता है. साथ ही, सिर्फ़ उन क्लास को फिर से डीईएक्स किया जाता है जिनमें बदलाव किया गया है. आपको उन ऐप्लिकेशन के लिए भी बेहतर बिल्ड स्पीड दिख सकती है जो
minSdkVersion
को 20 या उससे कम पर सेट करते हैं और लेगसी मल्टी-डेक्स का इस्तेमाल करते हैं. - कैश मेमोरी में सेव किए गए आउटपुट का इस्तेमाल करने के लिए, कुछ टास्क को ऑप्टिमाइज़ करके, बिल्ड की स्पीड को बेहतर बनाया गया है. इस ऑप्टिमाइज़ेशन का फ़ायदा पाने के लिए, आपको पहले Gradle बिल्ड कैश को चालू करना होगा.
- AAPT2 का इस्तेमाल करके, संसाधनों को बेहतर तरीके से इंक्रीमेंटल प्रोसेस किया जा सकता है. यह सुविधा अब डिफ़ॉल्ट रूप से चालू है. अगर आपको AAPT2 का इस्तेमाल करते समय समस्याएं आ रही हैं, तो
कृपया बग की शिकायत करें. आपके पास अपनी
gradle.properties
फ़ाइल मेंandroid.enableAapt2=false
सेट करके, AAPT2 को बंद करने का विकल्प भी है. इसके अलावा, कमांड लाइन से./gradlew --stop
चलाकर, Gradle डेमन को फिर से शुरू किया जा सकता है.
नई सुविधाएं
- वैरिएंट के हिसाब से डिपेंडेंसी मैनेज करना. किसी मॉड्यूल का कोई वैरिएंट बनाते समय, प्लग इन अब स्थानीय लाइब्रेरी मॉड्यूल की डिपेंडेंसी के वैरिएंट को, बनाए जा रहे मॉड्यूल के वैरिएंट से अपने-आप मैच करता है.
- इसमें एक नया सुविधा मॉड्यूल प्लग इन शामिल है, ताकि Android इंस्टैंट ऐप्लिकेशन और Android इंस्टैंट ऐप्लिकेशन SDK टूल के साथ काम किया जा सके. SDK टूल को SDK मैनेजर का इस्तेमाल करके डाउनलोड किया जा सकता है. नए प्लग इन की मदद से सुविधा वाले मॉड्यूल बनाने के बारे में ज़्यादा जानने के लिए, एक से ज़्यादा सुविधाओं वाले इंस्टैंट ऐप्लिकेशन का स्ट्रक्चर पढ़ें.
- Java 8 भाषा की कुछ सुविधाओं और Java 8 लाइब्रेरी का इस्तेमाल करने के लिए, पहले से मौजूद सहायता. Jack अब काम नहीं करता और इसकी ज़रूरत भी नहीं है. साथ ही, डिफ़ॉल्ट टूलचेन में पहले से मौजूद, बेहतर Java 8 सपोर्ट का इस्तेमाल करने के लिए, आपको पहले Jack को बंद करना चाहिए. ज़्यादा जानकारी के लिए, Java 8 भाषा की सुविधाओं का इस्तेमाल करना लेख पढ़ें.
-
Android टेस्ट ऑर्केस्ट्रेटर की मदद से टेस्ट चलाने की सुविधा जोड़ी गई है. इससे, अपने ऐप्लिकेशन के हर टेस्ट को, इंस्ट्रूमेंटेशन के अपने आह्वान में चलाया जा सकता है. हर टेस्ट अपने इंस्ट्रुमेंटेशन इंस्टेंस में चलता है. इसलिए, टेस्ट के बीच शेयर की गई कोई भी स्थिति आपके डिवाइस के सीपीयू या मेमोरी में इकट्ठा नहीं होती. अगर कोई टेस्ट क्रैश होता है, तो इससे सिर्फ़ उस टेस्ट के इंस्ट्रूमेंटेशन का इंस्टेंस बंद होता है. इसलिए, आपके अन्य टेस्ट अब भी चलते रहते हैं.
- डिवाइस पर टेस्ट ऑर्केस्ट्रेशन का इस्तेमाल करना है या नहीं, यह तय करने के लिए
testOptions.execution
जोड़ा गया. अगर आपको Android Test Orchestrator का इस्तेमाल करना है, तो आपको नीचे दिखाए गए तरीके सेANDROID_TEST_ORCHESTRATOR
की जानकारी देनी होगी. डिफ़ॉल्ट रूप से, यह प्रॉपर्टीHOST
पर सेट होती है. इससे डिवाइस पर ऑर्केस्ट्रेशन बंद हो जाता है. यह टेस्ट चलाने का स्टैंडर्ड तरीका है.
Groovy
android { testOptions { execution 'ANDROID_TEST_ORCHESTRATOR' } }
Kotlin
android { testOptions { execution = "ANDROID_TEST_ORCHESTRATOR" } }
- डिवाइस पर टेस्ट ऑर्केस्ट्रेशन का इस्तेमाल करना है या नहीं, यह तय करने के लिए
-
androidTestUtil
डिपेंडेंसी कॉन्फ़िगरेशन के नए वर्शन की मदद से, जांच करने वाले टूल के टेस्ट चलाने से पहले, Android Test Orchestrator जैसे किसी अन्य टेस्ट हेल्पर APK को इंस्टॉल किया जा सकता है:Groovy
dependencies { androidTestUtil 'com.android.support.test:orchestrator:1.0.0' ... }
Kotlin
dependencies { androidTestUtil("com.android.support.test:orchestrator:1.0.0") ... }
-
testOptions.unitTests.includeAndroidResources
जोड़ा गया है, ताकि उन यूनिट टेस्ट के साथ काम किया जा सके जिनके लिए Android रिसॉर्स की ज़रूरत होती है. जैसे, Roboelectric. इस प्रॉपर्टी कोtrue
पर सेट करने पर, प्लग इन आपके यूनिट टेस्ट चलाने से पहले, रिसॉर्स, ऐसेट, और मेनिफ़ेस्ट को मर्ज करता है. इसके बाद, आपकी जांचें इन कुंजियों के लिए, क्लासपाथ परcom/android/tools/test_config.properties
की जांच कर सकती हैं:-
android_merged_assets
: मर्ज की गई ऐसेट डायरेक्ट्री का एब्सोल्यूट पाथ.ध्यान दें: लाइब्रेरी मॉड्यूल के लिए, मर्ज की गई ऐसेट में डिपेंडेंसी की ऐसेट शामिल नहीं होती हैं (समस्या #65550419 देखें).
-
android_merged_manifest
: आपस में मिले हुए मेनिफ़ेस्ट की फ़ाइल का ऐब्सलूट पाथ. -
android_merged_resources
: मर्ज की गई रिसॉर्स डायरेक्ट्री का पूरा पाथ, जिसमें मॉड्यूल के सभी रिसॉर्स और उसकी सभी डिपेंडेंसी शामिल होती हैं. -
android_custom_package
: आखिरी R क्लास के पैकेज का नाम. अगर ऐप्लिकेशन आईडी में डाइनैमिक तौर पर बदलाव किया जाता है, तो हो सकता है कि यह पैकेज का नाम, ऐप्लिकेशन के मेनिफ़ेस्ट में मौजूदpackage
एट्रिब्यूट से मेल न खाए.
-
- फ़ॉन्ट को संसाधन के तौर पर इस्तेमाल करने की सुविधा. यह सुविधा, Android 8.0 (एपीआई लेवल 26) में जोड़ी गई है.
- Android Instant Apps SDK 1.1 और इसके बाद के वर्शन के साथ, भाषा के हिसाब से बनाए गए APK के लिए सहायता.
-
अब अपने बाहरी नेटिव बिल्ड प्रोजेक्ट के लिए, आउटपुट डायरेक्ट्री को बदला जा सकता है. इसके लिए, यहां दिया गया तरीका अपनाएं:
Groovy
android { ... externalNativeBuild { // For ndk-build, instead use the ndkBuild block. cmake { ... // Specifies a relative path for outputs from external native // builds. You can specify any path that's not a subdirectory // of your project's temporary build/ directory. buildStagingDirectory "./outputs/cmake" } } }
Kotlin
android { ... externalNativeBuild { // For ndk-build, instead use the ndkBuild block. cmake { ... // Specifies a relative path for outputs from external native // builds. You can specify any path that's not a subdirectory // of your project's temporary build/ directory. buildStagingDirectory = "./outputs/cmake" } } }
- अब Android Studio से नेटिव प्रोजेक्ट बनाते समय, CMake 3.7 या इसके बाद के वर्शन का इस्तेमाल किया जा सकता है.
-
lintChecks
डिपेंडेंसी कॉन्फ़िगरेशन के नए वर्शन की मदद से, ऐसा JAR बनाया जा सकता है जिसमें कस्टम लिंट नियम तय किए जाते हैं. साथ ही, इसे अपने AAR और APK प्रोजेक्ट में पैकेज किया जा सकता है.आपके कस्टम लिंट नियम, किसी ऐसे अलग प्रोजेक्ट से जुड़े होने चाहिए जो एक ही JAR आउटपुट करता हो और जिसमें सिर्फ़
compileOnly
डिपेंडेंसी शामिल हों. इसके बाद, अन्य ऐप्लिकेशन और लाइब्रेरी मॉड्यूल,lintChecks
कॉन्फ़िगरेशन का इस्तेमाल करके, आपके lint प्रोजेक्ट पर निर्भर हो सकते हैं:Groovy
dependencies { // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file // and package it with your module. If the module is an Android library, // other projects that depend on it automatically use the lint checks. // If the module is an app, lint includes these rules when analyzing the app. lintChecks project(':lint-checks') }
Kotlin
dependencies { // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file // and package it with your module. If the module is an Android library, // other projects that depend on it automatically use the lint checks. // If the module is an app, lint includes these rules when analyzing the app. lintChecks(project(":lint-checks")) }
उपयोगकर्ता के व्यवहार में बदलाव
- Android प्लग इन 3.0.0 में कुछ एपीआई हटा दिए गए हैं. अगर इनका इस्तेमाल किया जाता है, तो आपका बिल्ड काम नहीं करेगा. उदाहरण के लिए, अब
outputFile()
ऑब्जेक्ट को ऐक्सेस करने के लिए, वैरिएंट एपीआई का इस्तेमाल नहीं किया जा सकता. इसके अलावा, हर वैरिएंट के लिए मेनिफ़ेस्ट फ़ाइल पाने के लिए,processManifest.manifestOutputFile()
का इस्तेमाल भी नहीं किया जा सकता. ज़्यादा जानने के लिए, पढ़ें एपीआई में हुए बदलाव. - अब आपको बिल्ड टूल के लिए कोई वर्शन तय करने की ज़रूरत नहीं है. इसलिए, अब आपके पास
android.buildToolsVersion
प्रॉपर्टी को हटाने का विकल्प है. डिफ़ॉल्ट रूप से, प्लग इन आपके इस्तेमाल किए जा रहे Android प्लग इन के वर्शन के लिए, कम से कम ज़रूरी बिल्ड टूल के वर्शन का इस्तेमाल अपने-आप करता है. - अब
buildTypes
ब्लॉक में, PNG क्रंचिंग की सुविधा को चालू/बंद किया जा सकता है. इसके लिए, नीचे दिया गया तरीका अपनाएं. डीबग बिल्ड को छोड़कर, सभी बिल्ड के लिए PNG क्रंचिंग डिफ़ॉल्ट रूप से चालू होती है. ऐसा इसलिए होता है, क्योंकि जिन प्रोजेक्ट में कई PNG फ़ाइलें शामिल होती हैं उनके लिए बिल्ड करने में ज़्यादा समय लगता है. इसलिए, दूसरे टाइप के बिल्ड के लिए बिल्ड होने में लगने वाले समय को कम करने के लिए, आपको PNG क्रंचिंग की सुविधा बंद करनी चाहिए या अपनी इमेज को WebP में बदलना चाहिए.Groovy
android { buildTypes { release { // Disables PNG crunching for the release build type. crunchPngs false } } }
Kotlin
android { buildTypes { release { // Disables PNG crunching for the release build type. isCrunchPngs = false } } }
- Android प्लग इन अब उन टारगेट को अपने-आप बनाता है जिन्हें आपने अपने बाहरी CMake प्रोजेक्ट में कॉन्फ़िगर किया है.
- अब आपको प्रोसेसर क्लासपाथ में,
annotationProcessor
डिपेंडेंसी कॉन्फ़िगरेशन का इस्तेमाल करके, एनोटेशन प्रोसेसर जोड़ने होंगे. - अब
ndkCompile
का इस्तेमाल करने पर ज़्यादा पाबंदियां हैं. इसके बजाय, आपको CMake या ndk-build का इस्तेमाल करके, उस नेटिव कोड को कॉम्पाइल करना चाहिए जिसे आपको अपने APK में पैकेज करना है. ज़्यादा जानने के लिए, ndkcompile से माइग्रेट करना लेख पढ़ें.
3.0.0 (अक्टूबर 2017)
Android Gradle प्लग इन 3.0.0 में कई तरह के बदलाव किए गए हैं. इनका मकसद, बड़े प्रोजेक्ट की परफ़ॉर्मेंस से जुड़ी समस्याओं को हल करना है.
उदाहरण के लिए, ~130 मॉड्यूल और बड़ी संख्या में बाहरी डिपेंडेंसी (लेकिन कोई कोड या रिसॉर्स नहीं) वाले सैंपल स्केलेटन प्रोजेक्ट पर, परफ़ॉर्मेंस में इस तरह के सुधार देखे जा सकते हैं:
Android प्लग इन का वर्शन + Gradle का वर्शन | Android प्लग इन 2.2.0 + Gradle 2.14.1 | Android प्लग इन 2.3.0 + Gradle 3.3 | Android प्लग इन 3.0.0 + Gradle 4.1 |
---|---|---|---|
कॉन्फ़िगरेशन (उदाहरण के लिए, ./gradlew --help चल रहा है) |
~2 मिनट | ~9 सेकंड | ~2.5 सेकंड |
एक लाइन में Java में बदलाव (लागू करने से जुड़ा बदलाव) | ~2 मिनट 15 सेकंड | ~29 सेकंड | ~6.4 सेकंड |
इनमें से कुछ बदलावों की वजह से, मौजूदा बिल्ड काम नहीं करते. इसलिए, नए प्लग इन का इस्तेमाल करने से पहले, आपको अपने प्रोजेक्ट को माइग्रेट करने के बारे में सोचना चाहिए.
अगर आपको ऊपर बताई गई परफ़ॉर्मेंस में सुधार नहीं दिखता है, तो कृपया बग की शिकायत करें और Gradle प्रोफ़ाइलर का इस्तेमाल करके, अपने बिल्ड का ट्रेस शामिल करें.
Android प्लग इन के इस वर्शन के लिए, ये ज़रूरी हैं:
- Gradle 4.1 या इसके बाद का वर्शन. ज़्यादा जानने के लिए, Gradle को अपडेट करने के बारे में सेक्शन पढ़ें.
-
Build Tools 26.0.2
या इसके बाद का वर्शन. इस अपडेट के बाद, आपको अब बिल्ड टूल के लिए कोई वर्शन बताने की ज़रूरत नहीं है. प्लग इन, डिफ़ॉल्ट रूप से ज़रूरी वर्शन का इस्तेमाल करता है.
इसलिए, अब
android.buildToolsVersion
प्रॉपर्टी को हटाया जा सकता है.
3.0.1 (नवंबर 2017)
यह Android Studio 3.0.1 के साथ काम करने के लिए एक छोटा अपडेट है. इसमें सामान्य गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस को बेहतर बनाया गया है.
ऑप्टिमाइज़ेशन
- बेहतर तरीके से कई मॉड्यूल वाले प्रोजेक्ट के लिए, टास्क ग्राफ़ के ज़रिए एक साथ कई काम करने की सुविधा.
- डिपेंडेंसी में बदलाव करने पर, Gradle उन मॉड्यूल को फिर से कंपाइल नहीं करता जिनके पास डिपेंडेंसी के एपीआई का ऐक्सेस नहीं है. इससे, Gradle तेज़ी से बिल्ड करता है.
आपको यह तय करना चाहिए कि कौनसी डिपेंडेंसी, दूसरे मॉड्यूल को अपने एपीआई को लीक करें. इसके लिए, Gradle के नए डिपेंडेंसी कॉन्फ़िगरेशन का इस्तेमाल करें:
implementation
,api
,compileOnly
, औरruntimeOnly
. - हर क्लास के लिए डेक्सिंग की वजह से, इंक्रीमेंटल बिल्ड की स्पीड तेज़ होती है. अब हर क्लास को अलग-अलग DEX फ़ाइलों में संकलित किया जाता है. साथ ही, सिर्फ़ उन क्लास को फिर से डीईएक्स किया जाता है जिनमें बदलाव किया गया है. आपको उन ऐप्लिकेशन के लिए भी बेहतर बिल्ड स्पीड दिख सकती है जो
minSdkVersion
को 20 या उससे कम पर सेट करते हैं और लेगसी मल्टी-डेक्स का इस्तेमाल करते हैं. - कैश मेमोरी में सेव किए गए आउटपुट का इस्तेमाल करने के लिए, कुछ टास्क को ऑप्टिमाइज़ करके, बिल्ड की स्पीड को बेहतर बनाया गया है. इस ऑप्टिमाइज़ेशन का फ़ायदा पाने के लिए, आपको पहले Gradle बिल्ड कैश को चालू करना होगा.
- AAPT2 का इस्तेमाल करके, संसाधनों को बेहतर तरीके से इंक्रीमेंटल प्रोसेस किया जा सकता है. यह सुविधा अब डिफ़ॉल्ट रूप से चालू है. अगर आपको AAPT2 का इस्तेमाल करते समय समस्याएं आ रही हैं, तो कृपया बग की शिकायत करें. आपके पास अपनी
gradle.properties
फ़ाइल मेंandroid.enableAapt2=false
सेट करके, AAPT2 को बंद करने का विकल्प भी है. इसके अलावा, कमांड लाइन से./gradlew --stop
चलाकर, Gradle डेमन को फिर से शुरू किया जा सकता है.
नई सुविधाएं
- वैरिएंट के हिसाब से डिपेंडेंसी मैनेज करना. किसी मॉड्यूल का कोई वैरिएंट बनाते समय, प्लग इन अब स्थानीय लाइब्रेरी मॉड्यूल की डिपेंडेंसी के वैरिएंट को, बनाए जा रहे मॉड्यूल के वैरिएंट से अपने-आप मैच करता है.
- इसमें एक नया सुविधा मॉड्यूल प्लग इन शामिल है, ताकि Android इंस्टैंट ऐप्लिकेशन और Android इंस्टैंट ऐप्लिकेशन SDK टूल के साथ काम किया जा सके. SDK टूल को SDK मैनेजर का इस्तेमाल करके डाउनलोड किया जा सकता है. नए प्लग इन की मदद से सुविधा वाले मॉड्यूल बनाने के बारे में ज़्यादा जानने के लिए, एक से ज़्यादा सुविधाओं वाले इंस्टैंट ऐप्लिकेशन का स्ट्रक्चर पढ़ें.
- Java 8 भाषा की कुछ सुविधाओं और Java 8 लाइब्रेरी का इस्तेमाल करने के लिए, पहले से मौजूद सहायता. Jack अब काम नहीं करता और इसकी ज़रूरत भी नहीं है. साथ ही, डिफ़ॉल्ट टूलचेन में पहले से मौजूद, बेहतर Java 8 सपोर्ट का इस्तेमाल करने के लिए, आपको पहले Jack को बंद करना चाहिए. ज़्यादा जानकारी के लिए, Java 8 भाषा की सुविधाओं का इस्तेमाल करना लेख पढ़ें.
-
Android टेस्ट ऑर्केस्ट्रेटर की मदद से टेस्ट चलाने की सुविधा जोड़ी गई है. इससे, अपने ऐप्लिकेशन के हर टेस्ट को, इंस्ट्रूमेंटेशन के अपने आह्वान में चलाया जा सकता है. हर टेस्ट अपने इंस्ट्रुमेंटेशन इंस्टेंस में चलता है. इसलिए, टेस्ट के बीच शेयर की गई कोई भी स्थिति आपके डिवाइस के सीपीयू या मेमोरी में इकट्ठा नहीं होती. अगर कोई टेस्ट क्रैश होता है, तो इससे सिर्फ़ उस टेस्ट के इंस्ट्रूमेंटेशन का इंस्टेंस बंद होता है. इसलिए, आपके अन्य टेस्ट अब भी चलते रहते हैं.
- डिवाइस पर टेस्ट ऑर्केस्ट्रेशन का इस्तेमाल करना है या नहीं, यह तय करने के लिए
testOptions.execution
जोड़ा गया. अगर आपको Android Test Orchestrator का इस्तेमाल करना है, तो आपको नीचे दिखाए गए तरीके सेANDROID_TEST_ORCHESTRATOR
की जानकारी देनी होगी. डिफ़ॉल्ट रूप से, यह प्रॉपर्टीHOST
पर सेट होती है. इससे डिवाइस पर ऑर्केस्ट्रेशन बंद हो जाता है. यह टेस्ट चलाने का स्टैंडर्ड तरीका है.
Groovy
android { testOptions { execution 'ANDROID_TEST_ORCHESTRATOR' } }
Kotlin
android { testOptions { execution = "ANDROID_TEST_ORCHESTRATOR" } }
- डिवाइस पर टेस्ट ऑर्केस्ट्रेशन का इस्तेमाल करना है या नहीं, यह तय करने के लिए
-
androidTestUtil
डिपेंडेंसी कॉन्फ़िगरेशन के नए वर्शन की मदद से, जांच करने वाले टूल के टेस्ट चलाने से पहले, Android Test Orchestrator जैसे किसी अन्य टेस्ट हेल्पर APK को इंस्टॉल किया जा सकता है:Groovy
dependencies { androidTestUtil 'com.android.support.test:orchestrator:1.0.0' ... }
Kotlin
dependencies { androidTestUtil("com.android.support.test:orchestrator:1.0.0") ... }
-
testOptions.unitTests.includeAndroidResources
जोड़ा गया है, ताकि उन यूनिट टेस्ट के साथ काम किया जा सके जिनके लिए Android रिसॉर्स की ज़रूरत होती है. जैसे, Roboelectric. इस प्रॉपर्टी कोtrue
पर सेट करने पर, प्लग इन आपके यूनिट टेस्ट चलाने से पहले, रिसॉर्स, ऐसेट, और मेनिफ़ेस्ट को मर्ज करता है. इसके बाद, आपकी जांचें इन कुंजियों के लिए, क्लासपाथ परcom/android/tools/test_config.properties
की जांच कर सकती हैं:-
android_merged_assets
: मर्ज की गई ऐसेट डायरेक्ट्री का एब्सोल्यूट पाथ.ध्यान दें: लाइब्रेरी मॉड्यूल के लिए, मर्ज की गई ऐसेट में डिपेंडेंसी की ऐसेट शामिल नहीं होती हैं (समस्या #65550419 देखें).
-
android_merged_manifest
: आपस में मिले हुए मेनिफ़ेस्ट की फ़ाइल का ऐब्सलूट पाथ. -
android_merged_resources
: मर्ज की गई रिसॉर्स डायरेक्ट्री का पूरा पाथ, जिसमें मॉड्यूल के सभी रिसॉर्स और उसकी सभी डिपेंडेंसी शामिल होती हैं. -
android_custom_package
: आखिरी R क्लास के पैकेज का नाम. अगर ऐप्लिकेशन आईडी में डाइनैमिक तौर पर बदलाव किया जाता है, तो हो सकता है कि यह पैकेज का नाम, ऐप्लिकेशन के मेनिफ़ेस्ट में मौजूदpackage
एट्रिब्यूट से मेल न खाए.
-
- फ़ॉन्ट को संसाधन के तौर पर इस्तेमाल करने की सुविधा. यह सुविधा, Android 8.0 (एपीआई लेवल 26) में जोड़ी गई है.
- Android Instant Apps SDK 1.1 और इसके बाद के वर्शन के साथ, भाषा के हिसाब से बनाए गए APK के लिए सहायता.
-
अब अपने बाहरी नेटिव बिल्ड प्रोजेक्ट के लिए, आउटपुट डायरेक्ट्री को बदला जा सकता है. इसके लिए, यहां दिया गया तरीका अपनाएं:
Groovy
android { ... externalNativeBuild { // For ndk-build, instead use the ndkBuild block. cmake { ... // Specifies a relative path for outputs from external native // builds. You can specify any path that's not a subdirectory // of your project's temporary build/ directory. buildStagingDirectory "./outputs/cmake" } } }
Kotlin
android { ... externalNativeBuild { // For ndk-build, instead use the ndkBuild block. cmake { ... // Specifies a relative path for outputs from external native // builds. You can specify any path that's not a subdirectory // of your project's temporary build/ directory. buildStagingDirectory = "./outputs/cmake" } } }
- अब Android Studio से नेटिव प्रोजेक्ट बनाते समय, CMake 3.7 या इसके बाद के वर्शन का इस्तेमाल किया जा सकता है.
-
lintChecks
डिपेंडेंसी कॉन्फ़िगरेशन के नए वर्शन की मदद से, कस्टम लिंट नियमों को तय करने वाला JAR बनाया जा सकता है. साथ ही, इसे अपने AAR और APK प्रोजेक्ट में पैकेज किया जा सकता है.आपके कस्टम लिंट नियम, किसी ऐसे अलग प्रोजेक्ट से जुड़े होने चाहिए जो एक ही JAR आउटपुट करता हो और जिसमें सिर्फ़
compileOnly
डिपेंडेंसी शामिल हों. इसके बाद, अन्य ऐप्लिकेशन और लाइब्रेरी मॉड्यूल,lintChecks
कॉन्फ़िगरेशन का इस्तेमाल करके, आपके lint प्रोजेक्ट पर निर्भर हो सकते हैं:Groovy
dependencies { // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file // and package it with your module. If the module is an Android library, // other projects that depend on it automatically use the lint checks. // If the module is an app, lint includes these rules when analyzing the app. lintChecks project(':lint-checks') }
Kotlin
dependencies { // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file // and package it with your module. If the module is an Android library, // other projects that depend on it automatically use the lint checks. // If the module is an app, lint includes these rules when analyzing the app. lintChecks(project(":lint-checks")) }
उपयोगकर्ता के व्यवहार में बदलाव
- Android प्लग इन 3.0.0 में कुछ एपीआई हटा दिए गए हैं. अगर इनका इस्तेमाल किया जाता है, तो आपका बिल्ड काम नहीं करेगा. उदाहरण के लिए, अब
outputFile()
ऑब्जेक्ट को ऐक्सेस करने के लिए, वैरिएंट एपीआई का इस्तेमाल नहीं किया जा सकता. इसके अलावा, हर वैरिएंट के लिए मेनिफ़ेस्ट फ़ाइल पाने के लिए,processManifest.manifestOutputFile()
का इस्तेमाल भी नहीं किया जा सकता. ज़्यादा जानने के लिए, पढ़ें एपीआई में हुए बदलाव. - अब आपको बिल्ड टूल के लिए कोई वर्शन तय करने की ज़रूरत नहीं है. इसलिए, अब आपके पास
android.buildToolsVersion
प्रॉपर्टी को हटाने का विकल्प है. डिफ़ॉल्ट रूप से, प्लग इन आपके इस्तेमाल किए जा रहे Android प्लग इन के वर्शन के लिए, कम से कम ज़रूरी बिल्ड टूल के वर्शन का इस्तेमाल अपने-आप करता है. - अब
buildTypes
ब्लॉक में, PNG क्रंचिंग की सुविधा को चालू/बंद किया जा सकता है. इसके लिए, नीचे दिया गया तरीका अपनाएं. डीबग बिल्ड को छोड़कर, सभी बिल्ड के लिए PNG क्रंचिंग डिफ़ॉल्ट रूप से चालू होती है. ऐसा इसलिए होता है, क्योंकि जिन प्रोजेक्ट में कई PNG फ़ाइलें शामिल होती हैं उनके लिए बिल्ड करने में ज़्यादा समय लगता है. इसलिए, दूसरे टाइप के बिल्ड के लिए बिल्ड होने में लगने वाले समय को कम करने के लिए, आपको PNG क्रंचिंग की सुविधा बंद करनी चाहिए या अपनी इमेज को WebP में बदलना चाहिए.Groovy
android { buildTypes { release { // Disables PNG crunching for the release build type. crunchPngs false } } }
Kotlin
android { buildTypes { release { // Disables PNG crunching for the release build type. isCrunchPngs = false } } }
- Android प्लग इन अब उन टारगेट को अपने-आप बनाता है जिन्हें आपने अपने बाहरी CMake प्रोजेक्ट में कॉन्फ़िगर किया है.
- अब आपको प्रोसेसर क्लासपाथ में,
annotationProcessor
डिपेंडेंसी कॉन्फ़िगरेशन का इस्तेमाल करके, एनोटेशन प्रोसेसर जोड़ने होंगे. - अब
ndkCompile
का इस्तेमाल करने पर ज़्यादा पाबंदियां हैं. इसके बजाय, आपको CMake या ndk-build का इस्तेमाल करके, उस नेटिव कोड को कॉम्पाइल करना चाहिए जिसे आपको अपने APK में पैकेज करना है. ज़्यादा जानने के लिए, ndkcompile से माइग्रेट करना लेख पढ़ें.
2.3.0 (फ़रवरी 2017)
2.3.3 (जून 2017)
यह एक छोटा अपडेट है, जिसमें Android Studio 2.3.3 के साथ काम करने की सुविधा जोड़ी गई है.
2.3.2 (मई 2017)
यह एक छोटा अपडेट है, जिसमें Android Studio 2.3.2 के साथ काम करने की सुविधा जोड़ी गई है.
2.3.1 (अप्रैल 2017)
यह Android प्लग इन 2.3.0 का एक छोटा अपडेट है. इससे उस समस्या को ठीक किया गया है जिसमें कुछ Android डिवाइस, इंस्टैंट रन के साथ ठीक से काम नहीं कर रहे थे. ज़्यादा जानकारी के लिए, समस्या #235879 देखें.
- डिपेंडेंसी:
-
- Gradle 3.3 या इसके बाद का वर्शन.
- Build Tools 25.0.0 या इसके बाद का वर्शन.
- नया:
-
- Gradle 3.3 का इस्तेमाल करता है. इसमें परफ़ॉर्मेंस में सुधार और नई सुविधाएं शामिल हैं. ज़्यादा जानकारी के लिए, Gradle के रिलीज़ नोट देखें.
- बिल्ड कैश मेमोरी: कुछ ऐसे आउटपुट सेव करता है जिन्हें Android प्लग इन आपके प्रोजेक्ट को बिल्ड करते समय जनरेट करता है. जैसे, बिना पैकेज किए गए AAR और पहले से डीईएक्स की गई रिमोट डिपेंडेंसी. कैश का इस्तेमाल करने पर, आपके क्लीन बिल्ड बहुत तेज़ी से होते हैं. ऐसा इसलिए होता है, क्योंकि बिल्ड सिस्टम अगले बिल्ड के दौरान, कैश मेमोरी में सेव की गई फ़ाइलों को फिर से बनाने के बजाय, उनका फिर से इस्तेमाल कर सकता है. Android प्लग इन 2.3.0 और उसके बाद के वर्शन का इस्तेमाल करने वाले प्रोजेक्ट, डिफ़ॉल्ट रूप से बिल्ड कैश का इस्तेमाल करते हैं. ज़्यादा जानने के लिए,
बिल्ड कैश मेमोरी की मदद से, बिल्ड करने में लगने वाले समय को कम करना लेख पढ़ें.
- इसमें एक
cleanBuildCache
टास्क शामिल है, जो बिल्ड कैश मेमोरी को हटाता है. - अगर बिल्ड कैश के एक्सपेरिमेंटल वर्शन का इस्तेमाल किया जा रहा है, जो प्लग इन के पुराने वर्शन में शामिल है, तो आपको अपने प्लग इन को नए वर्शन में अपडेट करना चाहिए.
- इसमें एक
- बदलाव:
-
- Android Studio 2.3 में शामिल, इंस्टैंट रन में किए गए बदलावों के साथ काम करता है.
- बहुत बड़े प्रोजेक्ट के लिए, कॉन्फ़िगरेशन का समय काफ़ी कम होना चाहिए.
- कंस्ट्रेंट लेआउट लाइब्रेरी के लिए, अपने-आप डाउनलोड होने से जुड़ी समस्याएं ठीक की गईं.
- प्लगिन अब ProGuard के वर्शन 5.3.2 का इस्तेमाल करता है.
- इसमें गड़बड़ियों की रिपोर्ट के लिए कई सुधार शामिल हैं. अगर आपको कोई समस्या आती है, तो कृपया गड़बड़ी की रिपोर्ट दर्ज करना जारी रखें.
2.2.0 (सितंबर 2016)
- डिपेंडेंसी:
-
- Gradle 2.14.1 या इसके बाद का वर्शन.
- Build Tools 23.0.2 या इसके बाद का वर्शन.
- नया:
-
- इसमें Gradle 2.14.1 का इस्तेमाल किया गया है. इसमें परफ़ॉर्मेंस में सुधार और नई सुविधाएं शामिल हैं. साथ ही, इसमें सुरक्षा से जुड़ी एक ऐसी समस्या को ठीक किया गया है जिसकी वजह से Gradle डेमन का इस्तेमाल करते समय, स्थानीय विशेषाधिकार बढ़ाए जा सकते हैं. ज़्यादा जानकारी के लिए, Gradle के रिलीज़ नोट देखें.
-
externalNativeBuild {}
DSL का इस्तेमाल करके, Gradle अब आपको अपने नेटिव सोर्स से लिंक करने और CMake या ndk-build का इस्तेमाल करके नेटिव लाइब्रेरी को कंपाइल करने की सुविधा देता है. नेटिव लाइब्रेरी बनाने के बाद, Gradle उन्हें आपके APK में पैकेज करता है. Gradle के साथ CMake और ndk-build का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, अपने प्रोजेक्ट में C और C++ कोड जोड़ना लेख पढ़ें. - कमांड लाइन से कोई प्रोजेक्ट बनाते समय, Gradle अब उन सभी SDK कॉम्पोनेंट या अपडेट को अपने-आप डाउनलोड करने की कोशिश करता है जिन पर आपका प्रोजेक्ट निर्भर करता है. ज़्यादा जानने के लिए, 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
फ़ाइल में ये चीज़ें जोड़ें:Groovy
android { ... signingConfigs { config { ... v2SigningEnabled false } } }
Kotlin
android { ... signingConfigs { create("config") { ... v2SigningEnabled = false } } }
- मल्टीडेक्स बिल्ड के लिए, अब ProGuard के नियमों का इस्तेमाल करके यह तय किया जा सकता है कि Gradle को आपके ऐप्लिकेशन की मुख्य 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 अब
testCoverageEnabled
कोtrue
पर सेट करते समय, Jacoco टेस्ट कवरेज के साथ काम करता है. - एनोटेशन प्रोसेसर के लिए बेहतर सहायता. आपके क्लासपथ पर मौजूद एनोटेशन प्रोसेसर, जैसे कि
compile
डिपेंडेंसी, आपके बिल्ड पर अपने-आप लागू हो जाते हैं. आपके पास अपने बिल्ड में एनोटेशन प्रोसेसर तय करने और अपने मॉड्यूल-लेवलbuild.gradle
फ़ाइल मेंjavaCompileOptions.annotationProcessorOptions {}
डीएसएल का इस्तेमाल करके, आर्ग्युमेंट पास करने का विकल्प भी है:Groovy
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
डिपेंडेंसी स्कोप का इस्तेमाल करें:Groovy
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
- Jack अब
- डिफ़ॉल्ट रूप से, अगर Gradle डेमन का हेप साइज़ कम से कम 1.5
जीबी है, तो Jack अब Gradle की उसी प्रोसेस में चलता है. डेमन हेप के साइज़ में बदलाव करने के लिए, अपनी
gradle.properties
फ़ाइल में ये चीज़ें जोड़ें:# This sets the daemon heap size to 1.5GB. org.gradle.jvmargs=-Xmx1536M
-
2.1.0 (अप्रैल 2016)
2.1.3 (अगस्त 2016)
इस अपडेट के लिए, Gradle 2.14.1 और उसके बाद के वर्शन की ज़रूरत है. Gradle 2.14.1 में, परफ़ॉर्मेंस में सुधार, नई सुविधाएं, और सुरक्षा से जुड़ी एक अहम गड़बड़ी को ठीक करने की सुविधा शामिल है. ज़्यादा जानकारी के लिए, Gradle के रिलीज़ नोट देखें.
- डिपेंडेंसी:
-
- Gradle 2.10 या इसके बाद का वर्शन.
- Build Tools 23.0.2 या इसके बाद का वर्शन.
- नया:
-
- Jack टूलचैन का इस्तेमाल करके, N Developer Preview, JDK 8, और Java 8 भाषा की सुविधाओं के लिए सहायता जोड़ी गई. ज़्यादा जानने के लिए, N Preview की गाइड पढ़ें.
ध्यान दें: फ़िलहाल, इंस्टैंट रन, Jack के साथ काम नहीं करता. साथ ही, नए टूलचेन का इस्तेमाल करने पर, यह सुविधा बंद हो जाएगी. आपको Jack का इस्तेमाल सिर्फ़ तब करना होगा, जब N Preview के लिए ऐप्लिकेशन डेवलप किया जा रहा हो और आपको Java 8 भाषा की सुविधाओं का इस्तेमाल करना हो.
- डेवलपमेंट के दौरान, कंपाइल करने में लगने वाले समय को कम करने के लिए, Java के इंक्रीमेंटल कंपाइलेशन के लिए डिफ़ॉल्ट तौर पर सहायता जोड़ी गई है. यह सिर्फ़ उन सोर्स के हिस्सों को फिर से कॉम्पाइल करके ऐसा करता है जिनमें बदलाव हुआ है या जिन्हें फिर से कॉम्पाइल करने की ज़रूरत है. इस सुविधा को बंद करने के लिए, अपने मॉड्यूल-लेवल की
build.gradle
फ़ाइल में यह कोड जोड़ें:Groovy
android { ... compileOptions { incremental false } }
Kotlin
android { ... compileOptions { incremental = false } }
-
प्रोसेस के दौरान डेक्स करने की सुविधा जोड़ी गई है. यह सुविधा, अलग और बाहरी VM प्रोसेस के बजाय, बिल्ड प्रोसेस के दौरान डेक्स करती है. इससे, इंक्रीमेंटल बिल्ड तेज़ी से होने के साथ-साथ पूरे बिल्ड भी तेज़ी से होते हैं. यह सुविधा, उन प्रोजेक्ट के लिए डिफ़ॉल्ट रूप से चालू होती है जिन्होंने Gradle डेमन के ज़्यादा से ज़्यादा हेप साइज़ को कम से कम 2048 एमबी पर सेट किया है. ऐसा करने के लिए, अपने प्रोजेक्ट की
```none org.gradle.jvmargs = -Xmx2048m ```gradle.properties
फ़ाइल में ये चीज़ें शामिल करें:अगर आपने अपने मॉड्यूल-लेवल की
```none org.gradle.jvmargs = -Xmx3072m ```build.gradle
फ़ाइल मेंjavaMaxHeapSize
के लिए कोई वैल्यू तय की है, तो आपकोorg.gradle.jvmargs
कोjavaMaxHeapSize
+ 1024 एमबी की वैल्यू पर सेट करना होगा. उदाहरण के लिए, अगर आपनेjavaMaxHeapSize
को "2048 मीटर" पर सेट किया है, तो आपको अपने प्रोजेक्ट कीgradle.properties
फ़ाइल में ये जोड़ने होंगे:डेक्सिंग की प्रोसेस को बंद करने के लिए, अपने मॉड्यूल-लेवल की
build.gradle
फ़ाइल में यह कोड जोड़ें:Groovy
android { ... dexOptions { dexInProcess false } }
Kotlin
android { ... dexOptions { dexInProcess = false } }
- Jack टूलचैन का इस्तेमाल करके, N Developer Preview, JDK 8, और Java 8 भाषा की सुविधाओं के लिए सहायता जोड़ी गई. ज़्यादा जानने के लिए, N Preview की गाइड पढ़ें.
2.0.0 (अप्रैल 2016)
- डिपेंडेंसी:
-
- Gradle 2.10 या इसके बाद का वर्शन.
- Build Tools 21.1.1 या इसके बाद का वर्शन.
- नया:
-
- यह इंस्टैंट रन की सुविधा चालू करता है. इसके लिए, यह बाइटकोड इंजेक्शन की सुविधा देता है. साथ ही, एम्युलेटर या फ़िज़िकल डिवाइस पर चल रहे ऐप्लिकेशन में कोड और संसाधन के अपडेट को पुश करता है.
- इंक्रीमेंटल बिल्ड के लिए सहायता जोड़ी गई. भले ही, ऐप्लिकेशन न चल रहा हो. Android डीबग ब्रिज की मदद से, कनेक्ट किए गए डिवाइस पर धीरे-धीरे बदलावों को लागू करके, पूरे बिल्ड में लगने वाले समय को कम किया जाता है.
- एक साथ कितनी वर्कर्स डेक्स प्रोसेस शुरू की जा सकती हैं, यह कंट्रोल करने के लिए
maxProcessCount
जोड़ा गया. मॉड्यूल-लेवल वालीbuild.gradle
फ़ाइल में, यहां दिया गया कोड एक साथ चलने वाली प्रोसेस की ज़्यादा से ज़्यादा संख्या को चार पर सेट करता है:Groovy
android { ... dexOptions { maxProcessCount = 4 // this is the default value } }
Kotlin
android { ... dexOptions { maxProcessCount = 4 // this is the default value } }
</li> <li>Added an experimental code shrinker to support pre-dexing and reduce re-dexing of dependencies, which are not supported with Proguard. This improves the build speed of your debug build variant. Because the experimental shrinker does not support optimization and obfuscation, you should enable Proguard for your release builds. To enable the experimental shrinker for your debug builds, add the following to your module-level <code>build.gradle</code> file:
Groovy
android { ... buildTypes { debug { minifyEnabled true useProguard false } release { minifyEnabled true useProguard true // this is a default setting } } }
Kotlin
android { ... buildTypes { getByName("debug") { minifyEnabled = true useProguard = false } getByName("release") { minifyEnabled = true useProguard = true // this is a default setting } } }
</li> <li>Added logging support and improved performance for the resource shrinker. The resource shrinker now logs all of its operations into a <code>resources.txt</code> file located in the same folder as the Proguard log files. </li> </ul>
- बदला गया व्यवहार:
-
- जब
minSdkVersion
को 18 या उसके बाद के वर्शन पर सेट किया जाता है, तो APK साइनिंग के लिए SHA256 का इस्तेमाल किया जाता है.
<li>DSA and ECDSA keys can now sign APK packages. <p class="note"> <strong>Note:</strong> The <a href= "/training/articles/keystore.html">Android keystore</a> provider no longer supports <a href= "/about/versions/marshmallow/android-6.0-changes.html#behavior-keystore"> DSA keys on Android 6.0</a> (API level 23) and higher. </p> </li> </ul>
- जब
- ठीक की गई समस्याएं:
-
- एक समस्या को ठीक किया गया है जिसकी वजह से टेस्ट और मुख्य बिल्ड कॉन्फ़िगरेशन, दोनों में डुप्लीकेट AAR डिपेंडेंसी बन रही थीं.
Gradle के लिए Android प्लग इन, रिविज़न 1.5.0 (नवंबर 2015)
- डिपेंडेंसी:
-
- Gradle 2.2.1 या इसके बाद का वर्शन.
- Build Tools 21.1.1 या इसके बाद का वर्शन.
- सामान्य जानकारी:
-
- Gradle के लिए Android प्लग इन में, डेटा बाइंडिंग प्लग इन को इंटिग्रेट किया गया. इसे चालू करने के लिए, प्लग इन का इस्तेमाल करने वाली हर प्रोजेक्ट
build.gradle
फ़ाइल में यह कोड जोड़ें: - तीसरे पक्ष के प्लग इन को
.dex
फ़ाइलों में बदलने से पहले, इकट्ठा की गई.class
फ़ाइलों में बदलाव करने की अनुमति देने के लिए, नया ट्रांसफ़ॉर्म एपीआई जोड़ा गया है. Transform API की मदद से, कस्टम क्लास में बदलाव करना आसान हो जाता है. साथ ही, यह आपको बदलाव करने के लिए ज़्यादा विकल्प भी देता है. किसी बिल्ड में ट्रांसफ़ॉर्मेशन डालने के लिए,Transform
इंटरफ़ेस में से किसी एक को लागू करने वाली नई क्लास बनाएं और उसेandroid.registerTransform(theTransform)
याandroid.registerTransform(theTransform, dependencies)
के साथ रजिस्टर करें. टास्क को एक-दूसरे से लिंक करने की ज़रूरत नहीं है. Transform API के बारे में इन बातों का ध्यान रखें: - ट्रांसफ़ॉर्म, इनमें से एक या उससे ज़्यादा पर लागू हो सकता है: मौजूदा प्रोजेक्ट, सब-प्रोजेक्ट, और बाहरी लाइब्रेरी.
- ट्रांसफ़ॉर्म को दुनिया भर में रजिस्टर करना ज़रूरी है, ताकि वे सभी वैरिएंट पर लागू हो सकें.
- Java Code Coverage Library (JaCoCo), ProGuard, और MultiDex के ज़रिए, अब अंदरूनी कोड प्रोसेसिंग के लिए Transform API का इस्तेमाल किया जाता है. हालांकि, Java Android Compiler Kit (Jack) इस एपीआई का इस्तेमाल नहीं करता: सिर्फ़
javac/dx
कोड पाथ इसका इस्तेमाल करता है. - Gradle, ट्रांसफ़ॉर्मेशन को इस क्रम में लागू करता है: JaCoCo, तीसरे पक्ष के प्लगिन, ProGuard. तीसरे पक्ष के प्लग इन के लिए ट्रांसफ़ॉर्मेशन लागू करने का क्रम, उसी क्रम से मेल खाता है जिसमें तीसरे पक्ष के प्लग इन ने ट्रांसफ़ॉर्मेशन जोड़े हैं. तीसरे पक्ष के प्लग इन डेवलपर, एपीआई की मदद से ट्रांसफ़ॉर्मेशन लागू करने के क्रम को कंट्रोल नहीं कर सकते.
ApplicationVariant
क्लास सेdex
गटर को हटा दिया गया है. अब वैरिएंट एपीआई के ज़रिएDex
टास्क को ऐक्सेस नहीं किया जा सकता, क्योंकि अब इसे ट्रांसफ़ॉर्म के ज़रिए पूरा किया जाता है. फ़िलहाल, डीईएक्स प्रोसेस को कंट्रोल करने के लिए कोई दूसरा विकल्प उपलब्ध नहीं है.- एसेट के लिए इंक्रीमेंटल डेटा अपलोड करने की सुविधा को ठीक किया गया.
- जांच प्रोजेक्ट के लिए MultiDex को उपलब्ध कराने के साथ-साथ, इसकी सुविधा को बेहतर बनाया गया है. साथ ही, अब जांच में
com.android.support:multidex-instrumentation
डिपेंडेंसी अपने-आप जुड़ जाती है. - Gradle बिल्ड को सही तरीके से फ़ेल करने और गड़बड़ी की वजह की जानकारी देने की सुविधा जोड़ी गई है. ऐसा तब होता है, जब Gradle बिल्ड, असाइनमेंट के साथ-साथ चलने वाले टास्क को शुरू करता है और वर्कर्स प्रोसेस में कोई गड़बड़ी होती है.
- ऐसे वैरिएंट में किसी खास ऐप्लिकेशन बाइनरी इंटरफ़ेस (एबीआई) को कॉन्फ़िगर करने की सुविधा जोड़ी गई है जिनमें कई एबीआई होते हैं.
- जांच को इंस्टॉल या चलाते समय,
ANDROID_SERIAL
एनवायरमेंट वैरिएबल के लिए, डिवाइस के सीरियल नंबर की कॉमा लगाकर अलग की गई सूची के साथ काम करने की सुविधा जोड़ी गई है. - Android 5.0 (एपीआई लेवल 20) और इसके बाद के वर्शन पर चलने वाले डिवाइसों पर, APK के नाम में स्पेस होने पर ऐप्लिकेशन इंस्टॉल न होने की समस्या को ठीक किया गया है.
- Android ऐसेट पैकेजिंग टूल (AAPT) के गड़बड़ी वाले आउटपुट से जुड़ी कई समस्याएं ठीक की गईं.
- इंक्रीमेंटल बिल्ड को तेज़ी से बनाने के लिए, JaCoCo इंक्रीमेंटल इंस्ट्रूमेंटेशन की सुविधा जोड़ी गई है. Gradle के लिए Android प्लग इन, अब सीधे JaCoCo इंस्ट्रूमेंटर को कॉल करता है. JaCoCo इंस्ट्रूमेंटर के नए वर्शन का इस्तेमाल करने के लिए, आपको इसे बिल्ड स्क्रिप्ट की डिपेंडेंसी के तौर पर जोड़ना होगा.
- JaCoCo के साथ काम करने की सुविधा को ठीक किया गया है, ताकि यह उन फ़ाइलों को अनदेखा कर सके जो क्लास नहीं हैं.
- पुराने सिस्टम के साथ काम करने के लिए, बिल्ड के समय PNG जनरेट करने के लिए वेक्टर ड्रॉबल की सुविधा जोड़ी गई.
Gradle के लिए Android प्लग इन, ऐसे हर वेक्टर ड्रॉबल के लिए PNG जनरेट करता है जो किसी ऐसी संसाधन डायरेक्ट्री में मिलता है जिसमें एपीआई वर्शन की जानकारी नहीं दी गई है या ऐप्लिकेशन मेनिफ़ेस्ट में
<uses-sdk>
एलिमेंट मेंandroid:minSdkVersion
एट्रिब्यूट की वैल्यू 20 या उससे कम दी गई है.build.gradle
फ़ाइल केdefaultConfig
याproductFlavor
सेक्शन मेंgeneratedDensities
प्रॉपर्टी का इस्तेमाल करके, PNG डेंसिटी सेट की जा सकती है. - मॉक किए जा सकने वाले
android.jar
को शेयर करने की सुविधा जोड़ी गई है. प्लग इन इसे सिर्फ़ एक बार जनरेट करता है और यूनिट टेस्टिंग के लिए इस्तेमाल करता है.app
औरlib
जैसे कई मॉड्यूल, अब इसे शेयर करते हैं. इसे फिर से जनरेट करने के लिए,$rootDir/build
को मिटाएं. - APK को पैकेज करने के दौरान, Java रिसॉर्स की प्रोसेसिंग करने के बजाय, अब उसे कोड को बदलने से पहले प्रोसेस किया जाएगा. इस बदलाव की वजह से, पैकेज को गुप्त करने के बाद, Java रिसॉर्स को अडैप्ट करने के लिए, टास्क को गुप्त करने की सुविधा का इस्तेमाल किया जा सकता है.
- एक्सपेरिमेंट के तौर पर उपलब्ध लाइब्रेरी प्लग इन में, Java नेटिव इंटरफ़ेस (JNI) कोड इस्तेमाल करने से जुड़ी गड़बड़ी ठीक की गई.
- एक्सपेरिमेंटल लाइब्रेरी प्लग इन में, प्लैटफ़ॉर्म वर्शन को
android:compileSdkVersion
एट्रिब्यूट से अलग से सेट करने की सुविधा जोड़ी गई है.
android { dataBinding { enabled = true } }
android { dataBinding { enabled = true } }
- Gradle के लिए Android प्लग इन में, डेटा बाइंडिंग प्लग इन को इंटिग्रेट किया गया. इसे चालू करने के लिए, प्लग इन का इस्तेमाल करने वाली हर प्रोजेक्ट
Gradle के लिए Android प्लग इन, रिविज़न 1.3.1 (अगस्त 2015)
डिपेंडेंसी:- Gradle 2.2.1 या इसके बाद का वर्शन.
- Build Tools 21.1.1 या इसके बाद का वर्शन.
- पसंद के मुताबिक फ़ाइल नाम का इस्तेमाल करते समय, पिछले टास्क के आउटपुट का सही तरीके से इस्तेमाल करने के लिए, ZipAlign टास्क को ठीक किया गया.
- NDK की मदद से, Renderscript के पैकेजिंग से जुड़ी समस्या ठीक की गई.
createDebugCoverageReport
बिल्ड टास्क के लिए सहायता जारी रखी गई है.build.gradle
वाली बिल्ड फ़ाइल में,archiveBaseName
प्रॉपर्टी को पसंद के मुताबिक इस्तेमाल करने के लिए सहायता को ठीक किया गया.- Android Studio के बाहर lint चलाते समय, पैरामीटर के तरीके के एनोटेशन लुकअप की वजह से मिलने वाली
Invalid ResourceType
lint चेतावनी को ठीक किया गया.
Gradle के लिए Android प्लग इन, रिविज़न 1.3.0 (जुलाई 2015)
डिपेंडेंसी:- Gradle 2.2.1 या इसके बाद का वर्शन.
- Build Tools 21.1.1 या इसके बाद का वर्शन.
-
com.android.build.threadPoolSize
प्रॉपर्टी के लिए सहायता जोड़ी गई, ताकिgradle.properties
फ़ाइल या कमांड लाइन से,Android
टास्क थ्रेड पूल का साइज़ कंट्रोल किया जा सके. यहां दिए गए उदाहरण में, इस प्रॉपर्टी को 4 पर सेट किया गया है.-Pcom.android.build.threadPoolSize=4
- APKs से
LICENSE
औरLICENSE.txt
फ़ाइलों को बाहर रखने के लिए, डिफ़ॉल्ट तौर पर बने बंडल का तरीका सेट करें. इन फ़ाइलों को APK में शामिल करने के लिए, इन्हेंbuild.gradle
फ़ाइल में मौजूदpackagingOptions.excludes
प्रॉपर्टी से हटाएं. उदाहरण के लिए:android { packagingOptions.excludes = [] }
android { packagingOptions.excludes.clear() }
- सभी उपलब्ध सोर्स सेट की जांच करने के लिए,
sourceSets
टास्क जोड़ा गया. - यूनिट टेस्ट की बेहतर सुविधा, ताकि कई फ़्लेवर और
बिल्ड वैरिएंट सोर्स फ़ोल्डर की पहचान की जा सके. उदाहरण के लिए,
Debug
बिल्ड टाइप के साथ, कई फ़्लेवर वाले ऐप्लिकेशनflavor1
औरflavorA
की जांच करने के लिए, जांच के सोर्स सेट ये हैं:- जांच
- testFlavor1
- testFlavorA
- testFlavor1FlavorA
- testFlavor1FlavorADebug
Android टेस्ट में पहले से ही, अलग-अलग फ़्लेवर वाले सोर्स फ़ोल्डर की पहचान की जा सकती है.
- यूनिट टेस्ट के लिए बेहतर सहायता, ताकि:
- मुख्य और टेस्ट सोर्स पर
javac
चलाएं. भले ही, आपकी बिल्ड फ़ाइल मेंuseJack
प्रॉपर्टी कोtrue
पर सेट किया गया हो. - हर तरह के बिल्ड के लिए, डिपेंडेंसी को सही तरीके से पहचानना.
- मुख्य और टेस्ट सोर्स पर
- कमांड-लाइन से इंस्ट्रूमेंटेशन टेस्ट-रनर के आर्ग्युमेंट तय करने की सुविधा जोड़ी गई है.
उदाहरण के लिए:
./gradlew connectedCheck \ -Pandroid.testInstrumentationRunnerArguments.size=medium \ -Pandroid.testInstrumentationRunnerArguments.class=TestA,TestB
build.gradle
फ़ाइल में, Android एसेट पैकेजिंग टूल (AAPT) के अतिरिक्त पैरामीटर के लिए सहायता जोड़ी गई. उदाहरण के लिए:android { aaptOptions { additionalParameters "--custom_option", "value" } }
android { aaptOptions { additionalParameters += listOf("--custom_option", "value") } }
-
टेस्ट APK मॉड्यूल को अलग टेस्ट मॉड्यूल के तौर पर जोड़ा गया है. इसके लिए, APK के पाथ और टारगेट वैरिएंट को सेट करने के लिए,
targetProjectPath
औरtargetVariant
प्रॉपर्टी का इस्तेमाल किया जाता है.ध्यान दें: टेस्ट APK मॉड्यूल, प्रॉडक्ट के अलग-अलग वर्शन के साथ काम नहीं करता. साथ ही, यह सिर्फ़ एक वैरिएंट को टारगेट कर सकता है. साथ ही, Jacoco का इस्तेमाल अभी तक नहीं किया जा सकता.
- संसाधनों को मर्ज करने से पहले, संसाधन के नाम की पुष्टि करने की सुविधा जोड़ी गई है.
- लाइब्रेरी मॉड्यूल के लिए AAR (Android ARchive) पैकेज बनाते समय,
मेनिफ़ेस्ट मर्ज सेटिंग में, अपने-आप दिखने वाला
@{applicationId}
प्लेसहोल्डर न दें. इसके बजाय, किसी दूसरे प्लेसहोल्डर का इस्तेमाल करें, जैसे कि@{libApplicationId}
और अगर आपको संग्रह लाइब्रेरी में ऐप्लिकेशन आईडी शामिल करने हैं, तो इसके लिए कोई वैल्यू दें.
Gradle के लिए Android प्लग इन, रिविज़न 1.2.0 (अप्रैल 2015)
- डिपेंडेंसी:
-
- Gradle 2.2.1 या इसके बाद का वर्शन.
- Build Tools 21.1.1 या इसके बाद का वर्शन.
- सामान्य जानकारी:
-
- Gradle की मदद से यूनिट टेस्ट चलाने के लिए बेहतर सहायता.
- सीधे Gradle से यूनिट टेस्ट चलाते समय, क्लासपथ में Java-style रिसॉर्स शामिल करने के लिए सहायता जोड़ी गई है.
- Android Archive (AAR) के आर्टफ़ैक्ट के लिए, यूनिट टेस्ट डिपेंडेंसी की सुविधा जोड़ी गई.
unitTestVariants
प्रॉपर्टी के लिए सहायता जोड़ी गई है, ताकिbuild.gradle
फ़ाइल का इस्तेमाल करके, यूनिट टेस्ट वैरिएंट में बदलाव किया जा सके.- यूनिट टेस्ट के लिए, पसंद के मुताबिक बनाए गए टास्क कॉन्फ़िगर करने के लिए,
testOptions
मेंunitTest.all
कोड ब्लॉक जोड़ा गया. नीचे दिए गए सैंपल कोड में, इस नए विकल्प का इस्तेमाल करके यूनिट टेस्ट के लिए कॉन्फ़िगरेशन सेटिंग जोड़ने का तरीका बताया गया है:android { testOptions { unitTest.all { jvmArgs '-XX:MaxPermSize=256m' // Or any other gradle option. } } }
android { testOptions { unitTest.all { jvmArgs += listOf("-XX:MaxPermSize=256m") // Or any other gradle option. } } }
mockable-android.jar
फ़ाइल की पैकेजिंग में, सूची और सार्वजनिक इंस्टेंस फ़ील्ड को हैंडल करने की समस्या को ठीक किया गया.- लाइब्रेरी प्रोजेक्ट के टास्क की डिपेंडेंसी ठीक की गईं, ताकि बदलावों के बाद टेस्ट क्लास फिर से कॉम्पाइल हो सकें.
- जांच वाले APK को छोटा करते समय, ProGuard फ़ाइलें लागू करने के लिए
testProguardFile
प्रॉपर्टी जोड़ी गई. - Android डीबग ब्रिज की स्क्रीन रिकॉर्डिंग के लिए, रिकॉर्डिंग का ज़्यादा से ज़्यादा समय सेट करने के लिए,
adbOptions
कोड ब्लॉक मेंtimeOut
प्रॉपर्टी जोड़ी गई. - 280 डीपीआई वाले संसाधनों के लिए सहायता जोड़ी गई.
- प्रोजेक्ट के आकलन के दौरान बेहतर परफ़ॉर्मेंस.
- Gradle की मदद से यूनिट टेस्ट चलाने के लिए बेहतर सहायता.
Gradle के लिए Android प्लग इन, रिविज़न 1.1.3 (मार्च 2015)
- डिपेंडेंसी:
-
- Gradle 2.2.1 या इसके बाद का वर्शन.
- Build Tools 21.1.1 या इसके बाद का वर्शन.
- सामान्य जानकारी:
-
- टेस्ट ऐप्लिकेशन में डुप्लीकेट डिपेंडेंसी से जुड़ी समस्या को ठीक किया गया. इस समस्या की वजह से, ProGuard काम नहीं कर रहा था.
- Comparator को लागू करने की प्रोसेस को ठीक किया गया है. यह प्रोसेस, JDK Comparator कॉन्ट्रैक्ट का पालन नहीं करती थी और इससे JDK 7 में गड़बड़ी का मैसेज जनरेट होता था.
Gradle के लिए Android प्लग इन, रिविज़न 1.1.2 (फ़रवरी 2015)
- डिपेंडेंसी:
-
- Gradle 2.2.1 या इसके बाद का वर्शन.
- Build Tools 21.1.1 या इसके बाद का वर्शन.
- सामान्य जानकारी:
-
- यूनिट टेस्टिंग के लिए, मॉक किया जा सकने वाला JAR बनाते समय नॉर्मलाइज़ किया गया पाथ.
build.gradle
फ़ाइल मेंarchivesBaseName
सेटिंग को ठीक किया गया.- लाइब्रेरी टेस्ट ऐप्लिकेशन बनाते समय, मेनिफ़ेस्ट मर्ज करने में प्लेसहोल्डर से जुड़ी गड़बड़ी को ठीक किया गया.
Gradle के लिए Android प्लग इन, रिविज़न 1.1.1 (फ़रवरी 2015)
- डिपेंडेंसी:
-
- Gradle 2.2.1 या इसके बाद का वर्शन.
- Build Tools 21.1.1 या इसके बाद का वर्शन.
- सामान्य जानकारी:
-
- बिल्ड वैरिएंट में बदलाव किया गया है, ताकि सिर्फ़ वे वैरिएंट Wear ऐप्लिकेशन को पैकेज कर सकें जो Wear के लिए बने बिल्ड टास्क को ट्रिगर करते हैं.
- डिबग करने के समय के बजाय, डिपेंडेंसी से जुड़ी समस्याओं को बिल्ड के समय फ़ेल करने के लिए बदला गया. इस व्यवहार की मदद से, डाइग्नोस्टिक्स के टास्क (जैसे, 'डिपेंडेंसी') चलाए जा सकते हैं, ताकि विरोध को हल किया जा सके.
- वैल्यू दिखाने के लिए,
android.getBootClasspath()
तरीके को ठीक किया गया.
Gradle के लिए Android प्लग इन, रिविज़न 1.1.0 (फ़रवरी 2015)
- डिपेंडेंसी:
-
- Gradle 2.2.1 या इसके बाद का वर्शन.
- Build Tools 21.1.1 या इसके बाद का वर्शन.
- सामान्य जानकारी:
-
- यूनिट टेस्ट के लिए नई सुविधा जोड़ी गई
android.jar
फ़ाइल के किसी खास वर्शन के आधार पर, स्थानीय जेवीएम पर यूनिट टेस्ट चलाने की सुविधा चालू की गई है. यह वर्शन, मॉकिंग के लोकप्रिय फ़्रेमवर्क के साथ काम करता है. जैसे, Mockito.- प्रॉडक्ट फ़्लेवर का इस्तेमाल करते समय, नए टेस्ट टास्क
testDebug
,testRelease
, औरtestMyFlavorDebug
जोड़े गए. - यूनिट टेस्ट के तौर पर पहचाने जाने वाले नए सोर्स फ़ोल्डर जोड़े गए:
src/test/java/
,src/testDebug/java/
,src/testMyFlavor/java/
. - सिर्फ़ टेस्ट के लिए डिपेंडेंसी का एलान करने के लिए,
build.gradle
फ़ाइल में नए कॉन्फ़िगरेशन जोड़े गए हैं. उदाहरण के लिए,testCompile 'junit:junit:4.11'
,testMyFlavorCompile 'some:library:1.0'
.ध्यान दें: सिर्फ़ टेस्ट के लिए इस्तेमाल की जाने वाली डिपेंडेंसी, फ़िलहाल Jack (Java Android Compiler Kit) के साथ काम नहीं करती हैं.
- मॉक किए जा सकने वाले android.jar के व्यवहार को कंट्रोल करने के लिए,
android.testOptions.unitTests.returnDefaultValues
विकल्प जोड़ा गया. - जांच के टास्क के नामों में
Test
कोAndroidTest
से बदला गया. उदाहरण के लिए,assembleDebugTest
टास्क अबassembleDebugAndroidTest
टास्क हो गया है. यूनिट टेस्ट टास्क के नाम में अब भीUnitTest
है, जैसे किassembleDebugUnitTest
. - बदली गई ProGuard कॉन्फ़िगरेशन फ़ाइलें, अब टेस्ट APK पर लागू नहीं होंगी. अगर छोटा करने की सुविधा चालू है, तो ProGuard, टेस्ट APK को प्रोसेस करता है और सिर्फ़ उस मैपिंग फ़ाइल को लागू करता है जो मुख्य APK को छोटा करते समय जनरेट होती है.
- डिपेंडेंसी मैनेजमेंट को अपडेट किया गया
provided
औरpackage
स्कोप का इस्तेमाल करने से जुड़ी समस्याएं ठीक की गईं.ध्यान दें: ये स्कोप, AAR (Android ARchive) पैकेज के साथ काम नहीं करते. साथ ही, इनकी वजह से AAR पैकेज के साथ बिल्ड नहीं हो पाएगा.
- टेस्ट किए जा रहे ऐप्लिकेशन और टेस्ट ऐप्लिकेशन की डिपेंडेंसी की तुलना करने के लिए, डिपेंडेंसी रिज़ॉल्यूशन को बदला गया है. अगर दोनों ऐप्लिकेशन के लिए एक ही वर्शन का आर्टफ़ैक्ट मिलता है, तो उसे टेस्ट ऐप्लिकेशन में शामिल नहीं किया जाता है. साथ ही, उसे सिर्फ़ टेस्ट किए जा रहे ऐप्लिकेशन के साथ पैकेज किया जाता है. अगर दोनों ऐप्लिकेशन के लिए, अलग-अलग वर्शन वाला आर्टफ़ैक्ट मिलता है, तो बिल्ड पूरा नहीं होता.
- रिसॉर्स मर्ज करने की सुविधा में,
anyDpi
रिसॉर्स क्वालीफ़ायर के लिए सहायता जोड़ी गई. - Android के मॉड्यूल की बड़ी संख्या वाले प्रोजेक्ट के लिए, बेहतर आकलन और आईडीई सिंक करने की स्पीड.
Gradle के लिए Android प्लग इन, रिविज़न 1.0.1 (जनवरी 2015)
- डिपेंडेंसी:
-
-
Gradle 2.2.1 से लेकर 2.3.x तक.
ध्यान दें: Gradle के लिए Android प्लग इन का यह वर्शन, Gradle 2.4 और इसके बाद के वर्शन के साथ काम नहीं करता.
- Build Tools 21.1.1 या इसके बाद का वर्शन.
-
- सामान्य जानकारी:
-
extractReleaseAnnotations
मॉड्यूल को ऐक्सेस करते समय, Gradle बिल्ड न होने की समस्या को ठीक किया गया. (समस्या 81638).Disable
से--no-optimize
सेटिंग को Dalvik Executable (dex) के बाइटकोड में पास करने से जुड़ी समस्या को ठीक किया गया. (समस्या 82662).- 16 से कम
targetSdkVersion
वाली लाइब्रेरी इंपोर्ट करते समय, मेनिफ़ेस्ट मर्ज करने से जुड़ी समस्याएं ठीक की गईं. - JDK 8 के साथ Android Studio का इस्तेमाल करते समय, घनत्व के क्रम से जुड़ी समस्या को ठीक किया गया.
Gradle के लिए Android प्लग इन, रिविज़न 1.0.0 (दिसंबर 2014)
- डिपेंडेंसी:
-
-
Gradle 2.2.1 से लेकर 2.3.x तक.
ध्यान दें: Gradle के लिए Android प्लग इन का यह वर्शन, Gradle 2.4 और इसके बाद के वर्शन के साथ काम नहीं करता.
- Build Tools 21.1.1 या इसके बाद का वर्शन.
-
- सामान्य जानकारी:
-
- प्लग इन की शुरुआती रिलीज़.