यहां 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 के इस वर्शन में, कई डिज़ाइन टूल के अपडेट शामिल हैं. इनमें Layout Editor और Resource Manager भी शामिल हैं.
डिज़ाइन एडिटर में स्प्लिट व्यू और ज़ूम इन करने की सुविधा

इस रिलीज़ में, विज़ुअल डिज़ाइन एडिटर से जुड़े ये अपडेट शामिल हैं:
-
लेआउट एडिटर और नेविगेशन एडिटर जैसे डिज़ाइन एडिटर में अब स्प्लिट व्यू उपलब्ध है. इसकी मदद से, यूज़र इंटरफ़ेस (यूआई) के डिज़ाइन और कोड व्यू, दोनों को एक साथ देखा जा सकता है. एडिटर विंडो में सबसे ऊपर दाएं कोने में, अब तीन बटन
मौजूद हैं. इनसे व्यू के विकल्पों के बीच टॉगल किया जा सकता है:-
स्प्लिट व्यू चालू करने के लिए, स्प्लिट करें आइकॉन
पर क्लिक करें.
-
एक्सएमएल सोर्स व्यू चालू करने के लिए, सोर्स आइकॉन
पर क्लिक करें.
-
डिज़ाइन व्यू चालू करने के लिए, डिज़ाइन आइकॉन
पर क्लिक करें.
-
स्प्लिट व्यू चालू करने के लिए, स्प्लिट करें आइकॉन
-
ज़ूम करने और पैन करने के कंट्रोल, डिज़ाइन एडिटर में सबसे नीचे दाएं कोने में मौजूद फ़्लोटिंग पैनल में ले जाए गए हैं.
ज़्यादा जानने के लिए, लेआउट एडिटर की मदद से यूज़र इंटरफ़ेस (यूआई) बनाना लेख पढ़ें.
कलर पिकर रिसॉर्स टैब
अगर आपको अपने ऐप्लिकेशन में रंग के संसाधन की वैल्यू को तुरंत अपडेट करना है, तो अब आईडीई आपके लिए रंग के संसाधन की वैल्यू अपने-आप भर देता है. ऐसा तब होता है, जब आपने अपने एक्सएमएल या डिज़ाइन टूल में कलर पिकर का इस्तेमाल किया हो.

Resource Manager
Resource Manager में ये अपडेट किए गए हैं:
- Resource Manager अब ज़्यादातर संसाधन टाइप के साथ काम करता है.
- किसी संसाधन को खोजते समय, Resource Manager अब सभी प्रोजेक्ट मॉड्यूल से नतीजे दिखाता है. पहले, खोज के नतीजे सिर्फ़ चुने गए मॉड्यूल से मिलते थे.
- फ़िल्टर बटन की मदद से, लोकल डिपेंडेंट मॉड्यूल, बाहरी लाइब्रेरी, और 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 }
बदलाव लागू करें
अब क्लास जोड़ी जा सकती है. इसके बाद, कोड में किए गए बदलाव को अपने ऐप्लिकेशन में लागू किया जा सकता है. इसके लिए, कोड में किए गए बदलाव लागू करें या बदलाव लागू करें और गतिविधि फिर से शुरू करें पर क्लिक करें.
इन दोनों कार्रवाइयों के बीच के अंतर के बारे में ज़्यादा जानने के लिए, बदलाव लागू करें लेख पढ़ें.
इंस्टेंट ऐप्लिकेशन की सुविधा चालू करने के लिए, मेन्यू के विकल्प को फिर से फ़ैक्टर किया गया
ऐप्लिकेशन प्रोजेक्ट बनाने के बाद, अब किसी भी समय अपने बेस मॉड्यूल को तुरंत चालू किया जा सकता है. इसके लिए, यह तरीका अपनाएं:
- मेन्यू बार में जाकर, व्यू > टूल विंडो > प्रोजेक्ट चुनकर, प्रोजेक्ट पैनल खोलें.
- अपने बेस मॉड्यूल पर राइट क्लिक करें. इसका नाम आम तौर पर 'app' होता है. इसके बाद, Refactor > Enable Instant Apps Support को चुनें.
- दिखने वाले डायलॉग बॉक्स में, ड्रॉपडाउन मेन्यू से अपना बेस मॉड्यूल चुनें.
- ठीक है पर क्लिक करें.
ध्यान दें:नया प्रोजेक्ट बनाएं विज़र्ड से, अपने बुनियादी ऐप्लिकेशन मॉड्यूल को तुरंत चालू करने का विकल्प हटा दिया गया है.
ज़्यादा जानने के लिए, Google Play Instant की खास जानकारी पढ़ें.
APK ऐनालाइज़र में क्लास और तरीके के बाइटकोड को डीऑब्फ़स्केट करना
DEX फ़ाइलों की जांच करने के लिए, APK Analyzer का इस्तेमाल करते समय, क्लास और तरीके के बाइटकोड को इस तरह से डिकोड किया जा सकता है:
- मेन्यू बार में जाकर, बनाएं > APK का विश्लेषण करें चुनें.
- इसके बाद, आपको एक डायलॉग बॉक्स दिखेगा. इसमें उस APK पर जाएं जिसकी आपको जांच करनी है और उसे चुनें.
- खोलें पर क्लिक करें.
- APK Analyzer में, वह DEX फ़ाइल चुनें जिसकी आपको जांच करनी है.
- DEX फ़ाइल व्यूअर में, उस APK के लिए ProGuard मैपिंग फ़ाइल लोड करें जिसका विश्लेषण किया जा रहा है.
- उस क्लास या तरीके पर राइट क्लिक करें जिसकी आपको जांच करनी है. इसके बाद, बाइटकोड दिखाएं को चुनें.
नेटिव टूलिंग
यहां दिए गए अपडेट, Android Studio में नेटिव (C/C++) डेवलपमेंट के साथ काम करते हैं.
Kotlin के साथ काम करने की सुविधा
Android Studio में NDK की ये सुविधाएं, पहले Java के साथ काम करती थीं. अब ये Kotlin के साथ भी काम करती हैं:
-
जेएनआई डिक्लेरेशन से, C/C++ में मौजूद उससे जुड़े फ़ंक्शन को लागू करने वाले फ़ंक्शन पर जाएं. इस मैपिंग को देखने के लिए, मैनेज किए गए सोर्स कोड फ़ाइल में लाइन नंबर के पास मौजूद C या C++ आइटम मार्कर पर कर्सर घुमाएं.
-
JNI डिक्लेरेशन के लिए, स्टब लागू करने वाला फ़ंक्शन अपने-आप बनाता है. सबसे पहले, JNI डिक्लेरेशन तय करें. इसके बाद, C/C++ फ़ाइल में “jni” या तरीके का नाम टाइप करके इसे चालू करें.

-
सोर्स कोड में, इस्तेमाल नहीं किए गए नेटिव फ़ंक्शन को चेतावनी के तौर पर हाइलाइट किया जाता है. जिन JNI एलान में लागू करने की जानकारी मौजूद नहीं होती उन्हें भी गड़बड़ी के तौर पर हाइलाइट किया जाता है.
-
नेटिव कोड में लागू किए गए किसी फ़ंक्शन का नाम बदलने (रीफ़ैक्टर करने) पर, उससे जुड़े सभी JNI एलान अपडेट हो जाते हैं. नेटिव कोड लागू करने वाले फ़ंक्शन को अपडेट करने के लिए, JNI एलान का नाम बदलें.
-
यह कुकी, JNI के ऐसे इंप्लिमेंटेशन के लिए सिग्नेचर की जांच करती है जो अपने-आप बाइंड हो जाते हैं.
जेएनआई में किए गए अन्य सुधार
Android Studio में मौजूद कोड एडिटर अब JNI डेवलपमेंट के लिए, बेहतर तरीके से काम करता है. इसमें टाइप हिंट, अपने-आप पूरा होने की सुविधा, कोड की जांच, और कोड रीफ़ैक्टरिंग की सुविधा शामिल है.
नेटिव लाइब्रेरी के लिए APK फिर से लोड करना {:#3.6-reload-apk}
अगर आपके प्रोजेक्ट में मौजूद APK को IDE के बाहर अपडेट किया जाता है, तो अब आपको नया प्रोजेक्ट बनाने की ज़रूरत नहीं है. Android Studio, APK में हुए बदलावों का पता लगाता है. साथ ही, आपको इसे फिर से इंपोर्ट करने का विकल्प देता है.

सिर्फ़ Kotlin वाले APK सोर्स अटैच करना
अब प्री-बिल्ट APK की प्रोफ़ाइल बनाते और उन्हें डीबग करते समय, सिर्फ़ Kotlin वाले बाहरी APK सोर्स अटैच किए जा सकते हैं. ज़्यादा जानने के लिए, Kotlin/Java सोर्स अटैच करना लेख पढ़ें.
मेमोरी प्रोफ़ाइलर में लीक का पता लगाना
Memory Profiler में हीप डंप का विश्लेषण करते समय, अब प्रोफ़ाइलिंग डेटा को फ़िल्टर किया जा सकता है. Android Studio को लगता है कि यह डेटा, आपके ऐप्लिकेशन में Activity और Fragment इंस्टेंस के लिए मेमोरी लीक का संकेत दे सकता है.
फ़िल्टर में इस तरह का डेटा दिखता है:
-
ऐसे
Activityइंस्टेंस जिन्हें डिस्ट्रॉय कर दिया गया है, लेकिन अब भी उनका रेफ़रंस दिया जा रहा है. -
Fragmentऐसे उदाहरण जिनमें मान्यFragmentManagerनहीं है, लेकिन अब भी उनका रेफ़रंस दिया जा रहा है.
सिर्फ़ Kotlin वाले APK सोर्स अटैच करना
अब प्री-बिल्ट APK की प्रोफ़ाइल बनाते और उन्हें डीबग करते समय, सिर्फ़ Kotlin वाले बाहरी APK सोर्स अटैच किए जा सकते हैं. ज़्यादा जानने के लिए, Kotlin/Java सोर्स अटैच करना लेख पढ़ें.
मेमोरी प्रोफ़ाइलर में लीक का पता लगाना
Memory Profiler में हीप डंप का विश्लेषण करते समय, अब प्रोफ़ाइलिंग डेटा को फ़िल्टर किया जा सकता है. Android Studio को लगता है कि यह डेटा, आपके ऐप्लिकेशन में Activity और Fragment इंस्टेंस के लिए मेमोरी लीक का संकेत दे सकता है.
फ़िल्टर में इस तरह का डेटा दिखता है:
-
ऐसे
Activityइंस्टेंस जिन्हें डिस्ट्रॉय कर दिया गया है, लेकिन अब भी उनका रेफ़रंस दिया जा रहा है. -
Fragmentऐसे उदाहरण जिनमें मान्यFragmentManagerनहीं है, लेकिन अब भी उनका रेफ़रंस दिया जा रहा है.
कुछ स्थितियों में, जैसे कि यहां दी गई स्थितियों में, फ़िल्टर से गलत पॉज़िटिव नतीजे मिल सकते हैं:
Fragmentबनाया गया है, लेकिन इसका इस्तेमाल अब तक नहीं किया गया है.Fragmentको कैश मेमोरी में सेव किया जा रहा है, लेकिनFragmentTransactionके हिस्से के तौर पर नहीं.
इस सुविधा का इस्तेमाल करने के लिए, पहले Android Studio में हीप डंप कैप्चर करें या हीप डंप फ़ाइल इंपोर्ट करें. मेमोरी लीक करने वाले फ़्रैगमेंट और गतिविधियों को दिखाने के लिए, Memory Profiler के हीप डंप पैन में मौजूद Activity/Fragment Leaks चेकबॉक्स को चुनें.
मेमोरी लीक के लिए हीप डंप को फ़िल्टर करना.
एम्युलेटर
Android Studio 3.6 की मदद से, Android Emulator 29.2.7 और इसके बाद के वर्शन में शामिल कई अपडेट का फ़ायदा उठाया जा सकता है. इनके बारे में यहां बताया गया है.
जगह की जानकारी की सुविधा को बेहतर बनाया गया है
Android Emulator 29.2.7 और इसके बाद के वर्शन में, जीपीएस कोऑर्डिनेट और रास्ते की जानकारी को एम्युलेट करने की सुविधा मिलती है. एम्युलेटर के एक्सटेंडेड कंट्रोल खोलने पर, जगह की जानकारी वाले टैब में मौजूद विकल्पों को अब दो टैब में व्यवस्थित किया गया है: सिंगल पॉइंट और रास्ते.
सिंगल पॉइंट
सिंगल पॉइंट टैब में, Google Maps के वेबव्यू का इस्तेमाल करके दिलचस्पी की जगहों को खोजा जा सकता है. ठीक उसी तरह जैसे फ़ोन या ब्राउज़र पर Google Maps का इस्तेमाल करते समय खोजा जाता है. मैप में किसी जगह को खोजने या उस पर क्लिक करने के बाद, उसे सेव किया जा सकता है. इसके लिए, मैप में सबसे नीचे मौजूद 'सेव करें' विकल्प को चुनें. सेव की गई सभी जगहें, ज़्यादा कंट्रोल विंडो की दाईं ओर दिखती हैं.
एम्युलेटर की जगह को मैप पर चुनी गई जगह पर सेट करने के लिए, एक्सटेंडेड कंट्रोल विंडो में सबसे नीचे दाईं ओर मौजूद, जगह की जानकारी सेट करें बटन पर क्लिक करें.
.
रास्ते
सिंगल पॉइंट टैब की तरह ही, रास्ते टैब में Google Maps का वेबव्यू दिखता है. इसका इस्तेमाल करके, दो या उससे ज़्यादा जगहों के बीच का रास्ता बनाया जा सकता है. कोई रास्ता बनाने और उसे सेव करने के लिए, यह तरीका अपनाएं:
- मैप व्यू में, टेक्स्ट फ़ील्ड का इस्तेमाल करके अपने रास्ते में मौजूद पहले डेस्टिनेशन को खोजें.
- खोज के नतीजों में से जगह चुनें.
- नेविगेट करें बटन चुनें.
- मैप पर, अपने रास्ते की शुरुआती जगह चुनें.
- (ज़रूरी नहीं) अपने रास्ते में और स्टॉप जोड़ने के लिए, डिलीवरी की जगह जोड़ें पर क्लिक करें.
- मैप व्यू में, रास्ता सेव करें पर क्लिक करके, अपना रास्ता सेव करें.
- रास्ते का नाम डालें और सेव करें पर क्लिक करें.
सेव किए गए रास्ते के हिसाब से एम्युलेटर को सिम्युलेट करने के लिए, सेव किए गए रास्तों की सूची से रास्ता चुनें. इसके बाद, ज़्यादा कंट्रोल विंडो में सबसे नीचे दाईं ओर मौजूद, रास्ता चलाएं पर क्लिक करें. सिमुलेशन रोकने के लिए, रास्ता रोकें पर क्लिक करें.
.
अगर आपको Emulator को तय किए गए रूट पर लगातार सिम्युलेट करना है, तो दोबारा चलाएं के बगल में मौजूद स्विच को चालू करें. एम्युलेटर को तय किए गए रास्ते पर कितनी तेज़ी से चलाना है, यह तय करने के लिए प्लेबैक स्पीड ड्रॉपडाउन से कोई विकल्प चुनें.
मल्टी-डिसप्ले की सुविधा
Android Emulator की मदद से, अब अपने ऐप्लिकेशन को एक से ज़्यादा डिसप्ले पर डिप्लॉय किया जा सकता है. ये डिसप्ले, पसंद के मुताबिक डाइमेंशन के साथ काम करते हैं. इससे आपको ऐसे ऐप्लिकेशन की जांच करने में मदद मिल सकती है जो मल्टी-विंडो और मल्टी-डिसप्ले के साथ काम करते हैं. वर्चुअल डिवाइस के चालू होने पर, ज़्यादा से ज़्यादा दो डिसप्ले जोड़े जा सकते हैं. इसके लिए, यह तरीका अपनाएं:
-
बेहतर कंट्रोल खोलें और डिस्प्ले टैब पर जाएं.
-
सेकंडरी डिसप्ले जोड़ें पर क्लिक करके, दूसरा डिसप्ले जोड़ें.
-
सेकंडरी डिसप्ले में मौजूद ड्रॉपडाउन मेन्यू से, इनमें से कोई एक काम करें:
-
पहले से तय किए गए आसपेक्ट रेशियो में से कोई एक चुनें
-
कस्टम को चुनें. इसके बाद, कस्टम डिसप्ले के लिए ऊंचाई, चौड़ाई, और डीपीआई सेट करें.
-
(ज़रूरी नहीं) तीसरा डिसप्ले जोड़ने के लिए, सेकंडरी डिसप्ले जोड़ें पर क्लिक करें.
-
चल रहे वर्चुअल डिवाइस में बताए गए डिसप्ले जोड़ने के लिए, बदलाव लागू करें पर क्लिक करें.

Android Automotive OS के लिए नए वर्चुअल डिवाइस और प्रोजेक्ट टेंप्लेट
Android Studio का इस्तेमाल करके नया प्रोजेक्ट बनाते समय, अब नया प्रोजेक्ट बनाएं विज़र्ड में Automotive टैब में जाकर, तीन टेंप्लेट में से कोई एक चुना जा सकता है: No Activity, Media service, और Messaging service. मौजूदा प्रोजेक्ट के लिए, Android Automotive डिवाइसों के लिए सहायता जोड़ी जा सकती है. इसके लिए, मेन्यू बार से File > New > New Module को चुनें. इसके बाद, Automotive Module को चुनें. इसके बाद, नया मॉड्यूल बनाएं विज़र्ड, Android Automotive प्रोजेक्ट के किसी टेंप्लेट का इस्तेमाल करके नया मॉड्यूल बनाने में आपकी मदद करता है.
.
इसके अलावा, अब Android Automotive OS डिवाइसों के लिए Android वर्चुअल डिवाइस (AVD) बनाया जा सकता है. इसके लिए, वर्चुअल डिवाइस कॉन्फ़िगरेशन विज़र्ड में Automotive टैब में जाकर, इनमें से कोई एक विकल्प चुनें.
- Polestar 2: एक ऐसा एवीडी बनाएं जो Polestar 2 की हेड यूनिट की तरह काम करे.
- Automotive (1024 पिक्सल लैंडस्केप): सामान्य 1024 x 768 पिक्सल वाले Android Automotive हेड यूनिट के लिए, AVD बनाएं.
.
एसडीके डाउनलोड को फिर से शुरू करने की सुविधा
SDK Manager का इस्तेमाल करके SDK कॉम्पोनेंट और टूल डाउनलोड करते समय, Android Studio अब आपको उन डाउनलोड को फिर से शुरू करने की अनुमति देता है जो किसी वजह से रुक गए थे. उदाहरण के लिए, नेटवर्क की समस्या की वजह से. इसके बजाय, आपको डाउनलोड को शुरू से फिर से शुरू करने की ज़रूरत नहीं है. यह सुधार खास तौर पर बड़े डाउनलोड के लिए मददगार है. जैसे, Android Emulator या सिस्टम इमेज. ऐसा तब होता है, जब इंटरनेट कनेक्टिविटी भरोसेमंद न हो.
इसके अलावा, अगर आपने एसडीके डाउनलोड करने का कोई टास्क बैकग्राउंड में चालू किया है, तो अब स्टेटस बार में मौजूद कंट्रोल का इस्तेमाल करके, डाउनलोड को रोका या फिर से शुरू किया जा सकता है.
स्टेटस बार में बैकग्राउंड डाउनलोड टास्क. इसमें नए कंट्रोल दिए गए हैं, जिनकी मदद से डाउनलोड को रोका या फिर से शुरू किया जा सकता है.
Win32 अब उपलब्ध नहीं है
Android Studio के Windows 32-बिट वर्शन को दिसंबर 2019 के बाद अपडेट नहीं किया जाएगा. साथ ही, दिसंबर 2020 के बाद इसके लिए सहायता भी उपलब्ध नहीं होगी. Android Studio का इस्तेमाल जारी रखा जा सकता है. हालांकि, ज़्यादा अपडेट पाने के लिए, अपने वर्कस्टेशन को Windows के 64-बिट वर्शन पर अपग्रेड करें.
ज़्यादा जानने के लिए, Windows 32-बिट के बंद होने के बारे में ब्लॉग पढ़ें
Gradle सिंक करने में लगने वाले समय को ऑप्टिमाइज़ करने के लिए नया विकल्प
पिछली रिलीज़ में, Android Studio, Gradle सिंक के दौरान सभी Gradle टास्क की सूची को फिर से हासिल करता था. बड़े प्रोजेक्ट के लिए, टास्क की सूची वापस पाने से सिंक होने में ज़्यादा समय लग सकता है.
Gradle सिंक करने की परफ़ॉर्मेंस को बेहतर बनाने के लिए, फ़ाइल > सेटिंग > एक्सपेरिमेंटल पर जाएं और Gradle सिंक करने के दौरान, Gradle टास्क की सूची न बनाएं को चुनें.
इस विकल्प को चालू करने पर, Android Studio सिंक के दौरान टास्क लिस्ट नहीं बनाता है. इससे Gradle Sync तेज़ी से पूरा होता है और यूज़र इंटरफ़ेस (यूआई) की परफ़ॉर्मेंस बेहतर होती है. ध्यान रखें कि जब IDE, टास्क की सूची बनाने की प्रोसेस को स्किप करता है, तो Gradle पैनल में टास्क की सूचियां खाली होती हैं. साथ ही, बिल्ड फ़ाइलों में टास्क के नाम अपने-आप पूरे होने की सुविधा काम नहीं करती.
Gradle के ऑफ़लाइन मोड को टॉगल करने के लिए नई जगह
Gradle के ऑफ़लाइन मोड को चालू या बंद करने के लिए, सबसे पहले मेन्यू बार से View > Tool Windows > Gradle चुनें. इसके बाद, Gradle विंडो में सबसे ऊपर, ऑफ़लाइन मोड टॉगल करें
पर क्लिक करें.
IntelliJ IDEA 2019.2
Android Studio के मुख्य आईडीई को IntelliJ IDEA से मिले सुधारों के साथ अपडेट किया गया है. यह 2019.2 रिलीज़ के ज़रिए किया गया है.
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 की प्रोसेस के लिए ज़्यादा से ज़्यादा रैम असाइन करके, परफ़ॉर्मेंस को बेहतर बनाया जा सकता है. जैसे, कोर IDE, Gradle डेमॉन, और Kotlin डेमॉन. आपके पास दो विकल्प हैं. पहला, सूचना में दिए गए कार्रवाई के लिंक पर क्लिक करके, सुझाई गई सेटिंग को स्वीकार करें. दूसरा, इन सेटिंग को मैन्युअल तरीके से अडजस्ट करें. इसके लिए, फ़ाइल > सेटिंग (या macOS पर Android Studio > प्राथमिकताएं) को चुनें. इसके बाद, दिखावट और व्यवहार > सिस्टम सेटिंग में जाकर, मेमोरी सेटिंग सेक्शन ढूंढें. ज़्यादा जानने के लिए, ज़्यादा से ज़्यादा हीप साइज़ देखें.
यादें बनाने की सेटिंग के बारे में सुझाव देने वाली सूचना.
मेमोरी के इस्तेमाल की रिपोर्ट
Android Studio में मेमोरी से जुड़ी समस्याओं को कभी-कभी दोहराना और उनकी शिकायत करना मुश्किल होता है. इस समस्या को हल करने के लिए, Android Studio आपको मेमोरी के इस्तेमाल की रिपोर्ट जनरेट करने की सुविधा देता है. इसके लिए, मेन्यू बार में जाकर सहायता > मेमोरी के इस्तेमाल का विश्लेषण करें पर क्लिक करें. ऐसा करने पर, आईडीई निजी जानकारी के लिए डेटा को स्थानीय तौर पर सुरक्षित करता है. इसके बाद, आपसे पूछा जाता है कि क्या आपको इसे Android Studio की टीम को भेजना है, ताकि मेमोरी से जुड़ी समस्याओं के सोर्स का पता लगाने में मदद मिल सके. ज़्यादा जानने के लिए, मेमोरी के इस्तेमाल की रिपोर्ट जनरेट करना लेख पढ़ें.
मेमोरी के इस्तेमाल की रिपोर्ट.
Windows: एंटीवायरस फ़ाइल I/O ऑप्टिमाइज़ेशन
Android Studio अब अपने-आप यह जांच करता है कि कुछ प्रोजेक्ट डायरेक्ट्री को रीयल-टाइम एंटीवायरस स्कैनिंग से बाहर रखा गया है या नहीं. अगर बिल्ड की परफ़ॉर्मेंस को बेहतर बनाने के लिए कुछ बदलाव किए जा सकते हैं, तो Android Studio आपको इसकी सूचना देता है. साथ ही, एंटीवायरस कॉन्फ़िगरेशन को ऑप्टिमाइज़ करने के बारे में निर्देश देता है. ज़्यादा जानने के लिए, एंटीवायरस सॉफ़्टवेयर की वजह से, बिल्ड की स्पीड पर पड़ने वाले असर को कम करना लेख पढ़ें.
Project Marble: सुविधा को बेहतर बनाना
इस सेक्शन में, Android Studio 3.5 में हुए उन बदलावों के बारे में बताया गया है जिनका मकसद मौजूदा सुविधाओं को बेहतर बनाना है.
बदलाव लागू करें
'बदलाव लागू करें' सुविधा की मदद से, कोड और संसाधन में किए गए बदलावों को चालू ऐप्लिकेशन में पुश किया जा सकता है. इसके लिए, आपको ऐप्लिकेशन को रीस्टार्ट करने की ज़रूरत नहीं होती. साथ ही, कुछ मामलों में मौजूदा गतिविधि को रीस्टार्ट करने की भी ज़रूरत नहीं होती. Apply Changes, आपके ऐप्लिकेशन की स्थिति को बनाए रखने के लिए पूरी तरह से नया तरीका लागू करता है. इंस्टेंट रन की सुविधा, आपके APK के बाइटकोड को फिर से लिखती है. हालांकि, 'बदलाव लागू करें' सुविधा, Android 8.0 (एपीआई लेवल 26) या इसके बाद के वर्शन में उपलब्ध रनटाइम इंस्ट्रुमेंटेशन का इस्तेमाल करके, क्लास को तुरंत फिर से तय करती है.
ज़्यादा जानने के लिए, बदलाव लागू करना लेख पढ़ें.
बदलाव लागू करने के लिए, टूलबार बटन.
ऐप्लिकेशन डिप्लॉयमेंट का फ़्लो
IDE में एक नया ड्रॉप-डाउन मेन्यू है. इसकी मदद से, यह तुरंत चुना जा सकता है कि आपको अपना ऐप्लिकेशन किस डिवाइस पर डिप्लॉय करना है. इस मेन्यू में एक नया विकल्प भी शामिल है. इसकी मदद से, एक साथ कई डिवाइसों पर ऐप्लिकेशन चलाया जा सकता है.
टारगेट डिवाइस का ड्रॉप-डाउन मेन्यू.
Gradle सिंक करने और कैश मेमोरी का पता लगाने की सुविधा को बेहतर बनाया गया
अब IDE को बेहतर तरीके से पता चलता है कि Gradle, हार्ड डिस्क की खपत को कम करते समय, आपकी बिल्ड कैश को समय-समय पर कब मिटाता है. पिछले वर्शन में, इस स्थिति की वजह से IDE, डिपेंडेंसी के मौजूद न होने की सूचना देता था. साथ ही, Gradle सिंक नहीं हो पाता था. अब IDE, Gradle सिंक को पूरा करने के लिए, ज़रूरत के हिसाब से डिपेंडेंसी डाउनलोड करता है.
बिल्ड से जुड़ी गड़बड़ियों के आउटपुट को बेहतर बनाया गया
बिल्ड करें
विंडो में, अब गड़बड़ी की बेहतर रिपोर्टिंग की सुविधा मिलती है. जैसे, रिपोर्ट की गई गड़बड़ी की फ़ाइल और लाइन का लिंक. यह सुविधा, बिल्ड करने की इन प्रोसेस के लिए उपलब्ध है:
- AAPT कंपाइल करना और लिंक करना
- R8 और ProGuard
- डेक्सिंग
- संसाधनों को मर्ज करना
- एक्सएमएल फ़ाइल पार्स करना
- Javac, Kotlinc, और CMake कंपाइलेशन
प्रोजेक्ट अपग्रेड
अपडेट करने का बेहतर अनुभव, ताकि आपको ज़्यादा जानकारी और कार्रवाइयां मिल सकें. इससे आपको IDE और Android Gradle प्लग-इन को अपडेट करने में मदद मिलेगी. उदाहरण के लिए, सिंक करने और बनाने से जुड़ी ज़्यादा गड़बड़ियों में, अपडेट करते समय गड़बड़ियों को कम करने में आपकी मदद करने वाली कार्रवाइयां शामिल होती हैं.
यह ध्यान रखना ज़रूरी है कि Android Gradle प्लगिन जैसे अन्य कॉम्पोनेंट से अलग, IDE को अपडेट किया जा सकता है. इसलिए, नया वर्शन उपलब्ध होते ही IDE को सुरक्षित तरीके से अपडेट किया जा सकता है. साथ ही, अन्य कॉम्पोनेंट को बाद में अपडेट किया जा सकता है.
लेआउट एडिटर
Android Studio 3.5 में, लेआउट विज़ुअलाइज़ेशन, मैनेजमेंट, और इंटरैक्शन से जुड़े कई सुधार किए गए हैं.
ConstraintLayout के साथ काम करते समय, एट्रिब्यूट पैनल में मौजूद कॉन्स्ट्रेंट सेक्शन में, चुने गए यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट के कॉन्स्ट्रेंट रिलेशनशिप की सूची दिखती है. दोनों जगहों पर कंस्ट्रेंट को हाइलाइट करने के लिए, डिज़ाइन सर्फ़ेस या कंस्ट्रेंट की सूची में से कोई कंस्ट्रेंट चुना जा सकता है.
चुने गए यूज़र इंटरफ़ेस (यूआई) एलिमेंट के लिए, कंस्ट्रेंट के संबंध.
इसी तरह, अब किसी शर्त को मिटाने के लिए, उसे चुनें और Delete बटन दबाएं. Control बटन (macOS पर Command) को दबाकर रखने के बाद, कंस्ट्रेंट ऐंकर पर क्लिक करके भी कंस्ट्रेंट को मिटाया जा सकता है. ध्यान दें कि Control या Command कुंजी को दबाकर रखने और किसी ऐंकर पर कर्सर घुमाने पर, उससे जुड़ी सभी पाबंदियां लाल रंग में बदल जाती हैं. इससे पता चलता है कि उन्हें मिटाने के लिए क्लिक किया जा सकता है.
किसी व्यू को चुनने के बाद, एट्रिब्यूट पैनल के कॉन्स्ट्रेंट विजेट सेक्शन में मौजूद किसी भी + आइकॉन पर क्लिक करके, कॉन्स्ट्रेंट बनाया जा सकता है. इसे यहां दी गई इमेज में दिखाया गया है. नई शर्त बनाने पर, लेआउट एडिटर अब शर्त को चुनता है और हाइलाइट करता है. इससे आपको यह तुरंत पता चलता है कि आपने क्या जोड़ा है.
कॉन्स्ट्रेंट बनाने के लिए, कॉन्स्ट्रेंट विजेट का इस्तेमाल करना .
कंस्ट्रेंट बनाते समय, लेआउट एडिटर अब सिर्फ़ उन एंकर पॉइंट को दिखाता है जिन पर कंस्ट्रेंट लागू किया जा सकता है. इससे पहले, लेआउट एडिटर सभी व्यू पर सभी ऐंकर पॉइंट को हाइलाइट करता था. भले ही, उन्हें सीमित किया जा सकता हो या नहीं. इसके अलावा, नीले रंग का ओवरले अब पाबंदी के टारगेट को हाइलाइट करता है. यह हाइलाइटिंग खास तौर पर तब काम आती है, जब आपको किसी ऐसे कॉम्पोनेंट को सीमित करना हो जो किसी दूसरे कॉम्पोनेंट के साथ ओवरलैप करता है.
Android Studio 3.4 में, ओवरलैप होने वाले कॉम्पोनेंट के लिए कंस्ट्रेंट बनाना.
Android Studio 3.5 में, ओवरलैप होने वाले कॉम्पोनेंट के लिए कंस्ट्रेंट बनाना.
ऊपर दिए गए अपडेट के अलावा, Android Studio 3.5 में Layout Editor से जुड़े ये सुधार भी किए गए हैं:
- कॉन्स्ट्रेंट विजेट और डिफ़ॉल्ट मार्जिन ड्रॉप-डाउन की मदद से, अब मार्जिन के लिए डाइमेंशन संसाधनों का इस्तेमाल किया जा सकता है.
- लेआउट एडिटर टूलबार में, उन डिवाइसों की सूची अपडेट की गई है जो डिज़ाइन सर्फ़ेस का साइज़ तय करते हैं. इसके अलावा, साइज़ बदलते समय स्नैपिंग के व्यवहार को बेहतर बनाया गया है. साथ ही, डिज़ाइन सर्फ़ेस पर साइज़ बदलने वाले हैंडल अब हमेशा दिखते हैं. रीसाइज़ करते समय, नई ओवरले दिखती हैं. इनमें डिवाइस के सामान्य साइज़ दिखते हैं.
- लेआउट एडिटर में नई कलर स्कीम है. इससे कॉम्पोनेंट, टेक्स्ट, और कंस्ट्रेंट के बीच एकरूपता बढ़ती है और कंट्रास्ट कम होता है.
- ब्लूप्रिंट मोड में अब कुछ कॉम्पोनेंट के लिए टेक्स्ट सपोर्ट शामिल है. पहले इन कॉम्पोनेंट में टेक्स्ट नहीं दिखता था.
इन बदलावों के बारे में ज़्यादा जानने के लिए, Android Studio Project Marble: Layout Editor देखें.
डेटा बाइंडिंग
डेटा बाइंडिंग के लिए, इंक्रीमेंटल एनोटेशन प्रोसेसिंग की सुविधा जोड़ने के साथ-साथ, IDE, एक्सएमएल में डेटा बाइंडिंग एक्सप्रेशन बनाते समय स्मार्ट एडिटर की सुविधाओं और परफ़ॉर्मेंस को बेहतर बनाता है.
Android Studio 3.4 पर कोड एडिटर की परफ़ॉर्मेंस.
Android Studio 3.5 में, कोड में बदलाव करने की परफ़ॉर्मेंस को बेहतर बनाया गया है.
C/C++ प्रोजेक्ट के लिए बेहतर सहायता
Android Studio 3.5 में कई बदलाव किए गए हैं. इनसे C/C++ प्रोजेक्ट के लिए बेहतर सपोर्ट मिलता है.
एक वैरिएंट को सिंक करने के लिए, Build Variants पैनल में सुधार किए गए हैं
अब Build Variants पैनल में, चालू बिल्ड वैरिएंट और चालू एबीआई, दोनों के बारे में जानकारी दी जा सकती है. इस सुविधा से, हर मॉड्यूल के लिए बिल्ड कॉन्फ़िगरेशन को आसान बनाया जा सकता है. साथ ही, इससे 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, और अन्य डिवाइसों के बारे में सिस्टम की ज़रूरी शर्तों में पढ़ा जा सकता है. शुरू करने के लिए, Android Studio डाउनलोड करें. इसे ChromeOS डिवाइस पर डाउनलोड करें. इसके बाद, इंस्टॉल करने के निर्देशों का पालन करें.
ध्यान दें: फ़िलहाल, ChromeOS पर Android Studio, सिर्फ़ कनेक्ट किए गए हार्डवेयर डिवाइस पर ऐप्लिकेशन डिप्लॉय करने की सुविधा देता है. ज़्यादा जानने के लिए, हार्डवेयर डिवाइस पर ऐप्लिकेशन चलाना लेख पढ़ें.
फ़ीचर मॉड्यूल के लिए, शर्तों के साथ डिलीवरी की सुविधा
कंडिशनल डिलीवरी की मदद से, ऐप्लिकेशन इंस्टॉल करते समय फ़ीचर मॉड्यूल अपने-आप डाउनलोड होने के लिए, डिवाइस कॉन्फ़िगरेशन से जुड़ी कुछ ज़रूरी शर्तें सेट की जा सकती हैं. उदाहरण के लिए, डेवलपर ऐसा फ़ीचर मॉड्यूल कॉन्फ़िगर कर सकते हैं जिसमें ऑगमेंटेड रिएलिटी (एआर) की सुविधा शामिल हो. यह सुविधा, ऐप्लिकेशन इंस्टॉल करने के दौरान सिर्फ़ उन डिवाइसों पर उपलब्ध होगी जिन पर एआर की सुविधा काम करती है.
फ़िलहाल, डिलीवरी का यह तरीका इन डिवाइस कॉन्फ़िगरेशन के आधार पर, ऐप्लिकेशन इंस्टॉल करने के समय मॉड्यूल के डाउनलोड को कंट्रोल करने की सुविधा देता है:
- डिवाइस के हार्डवेयर और सॉफ़्टवेयर की सुविधाएं. इनमें OpenGL ES वर्शन भी शामिल है
- उपयोगकर्ता का देश
- API स्तर
अगर कोई डिवाइस, आपकी बताई गई सभी ज़रूरी शर्तें पूरी नहीं करता है, तो ऐप्लिकेशन इंस्टॉल करते समय मॉड्यूल डाउनलोड नहीं होता. हालांकि, आपका ऐप्लिकेशन बाद में Play Core लाइब्रेरी का इस्तेमाल करके, ज़रूरत पड़ने पर मॉड्यूल डाउनलोड करने का अनुरोध कर सकता है. ज़्यादा जानने के लिए, शर्त के हिसाब से डिलीवरी की सुविधा कॉन्फ़िगर करना लेख पढ़ें.
IntelliJ IDEA 2019.1
Android Studio के मुख्य आईडीई को IntelliJ IDEA की 2019.1 रिलीज़ के साथ अपडेट किया गया है. इसमें थीम को पसंद के मुताबिक बनाने जैसी सुविधाएं शामिल हैं.
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 Beta पर चल रहे डिवाइस पर अपना ऐप्लिकेशन डिप्लॉय करने पर, प्रोफ़ाइलिंग की सुविधा बंद हो जाती है.
- डेटा बाइंडिंग लाइब्रेरी का इस्तेमाल करते समय,
LiveDataListener.onChanged()में NPE की गड़बड़ी हो सकती है. इस समस्या को ठीक करने के लिए, Android Studio 3.4.1 में एक अपडेट शामिल किया जाएगा. यह अपडेट, Android Studio 3.5 के प्रीव्यू वर्शन में पहले से उपलब्ध है. ( समस्या #122066788 देखें)
IntelliJ IDEA 2018.3.4
Android Studio IDE के मुख्य हिस्से को IntelliJ IDEA से मिले सुधारों के साथ अपडेट किया गया है. यह 2018.3.4 रिलीज़ के ज़रिए किया गया है.
Android Gradle प्लग इन 3.4.0 के अपडेट
Android Gradle प्लग इन 3.4.0 में नई सुविधाओं के बारे में जानने के लिए, इसके रिलीज़ नोट देखें.
नया प्रोजेक्ट स्ट्रक्चर डायलॉग
नए प्रोजेक्ट स्ट्रक्चर डायलॉग (पीएसडी) की मदद से, डिपेंडेंसी को अपडेट करना आसान हो जाता है. साथ ही, अपने प्रोजेक्ट के अलग-अलग पहलुओं को कॉन्फ़िगर करना भी आसान हो जाता है. जैसे, मॉड्यूल, बिल्ड वैरिएंट, हस्ताक्षर करने के कॉन्फ़िगरेशन, और बिल्ड वैरिएबल.
मेन्यू बार में जाकर, फ़ाइल > प्रोजेक्ट स्ट्रक्चर को चुनकर, PSD फ़ाइल खोली जा सकती है. Windows और Linux पर Ctrl+Shift+Alt+S दबाकर या macOS पर Command+; (सेमीकोलन) दबाकर भी PSD फ़ाइल खोली जा सकती है. पीएसडी के कुछ नए और अपडेट किए गए सेक्शन के बारे में यहां बताया गया है.
वैरिएबल
पीएसडी के नए वैरिएबल सेक्शन की मदद से, बिल्ड वैरिएबल बनाए और मैनेज किए जा सकते हैं. जैसे, ऐसे वैरिएबल जिनकी मदद से, आपके प्रोजेक्ट में डिपेंडेंसी के वर्शन नंबर एक जैसे रखे जा सकते हैं.

- अपने प्रोजेक्ट की Gradle बिल्ड स्क्रिप्ट में पहले से मौजूद बिल्ड वैरिएबल को तुरंत देखें और उनमें बदलाव करें.
- पीएसडी से सीधे तौर पर, प्रोजेक्ट या मॉड्यूल लेवल पर नए बिल्ड वैरिएबल जोड़ें.
ध्यान दें: अगर आपकी मौजूदा बिल्ड कॉन्फ़िगरेशन फ़ाइलें, जटिल Groovy स्क्रिप्ट के ज़रिए वैल्यू असाइन करती हैं, तो हो सकता है कि PSD के ज़रिए उन वैल्यू में बदलाव न किया जा सके. इसके अलावा, PSD का इस्तेमाल करके, Kotlin में लिखी गई बिल्ड फ़ाइलों में बदलाव नहीं किया जा सकता.
मॉड्यूल
उन प्रॉपर्टी को कॉन्फ़िगर करें जो किसी मौजूदा मॉड्यूल में सभी बिल्ड वैरिएंट पर लागू होती हैं. इसके अलावा, मॉड्यूल सेक्शन से अपने प्रोजेक्ट में नए मॉड्यूल जोड़ें. उदाहरण के लिए, यहां defaultConfig प्रॉपर्टी कॉन्फ़िगर की जा सकती हैं या साइनिंग कॉन्फ़िगरेशन मैनेज किए जा सकते हैं.
डिपेंडेंसी
अपने प्रोजेक्ट के डिपेंडेंसी ग्राफ़ में मौजूद हर डिपेंडेंसी की जांच करें और उसे विज़ुअलाइज़ करें. प्रोजेक्ट सिंक करने के दौरान, Gradle इन डिपेंडेंसी को हल करता है. इसके लिए, यह तरीका अपनाएं:
- पीएसडी के बाएं पैनल में, डिपेंडेंसी चुनें.
- मॉड्यूल पैनल में, वह मॉड्यूल चुनें जिसके लिए आपको हल की गई डिपेंडेंसी की जांच करनी है.
- PSD के दाईं ओर, हल की गई डिपेंडेंसी वाला पैनल खोलें. यह पैनल यहां दिखाया गया है.

अपने प्रोजेक्ट में डिपेंडेंसी को तेज़ी से खोजा और जोड़ा भी जा सकता है. इसके लिए, सबसे पहले PSD के डिपेंडेंसी सेक्शन से कोई मॉड्यूल चुनें. इसके बाद, डिक्लेयर की गई डिपेंडेंसी सेक्शन में मौजूद (+) बटन पर क्लिक करें. इसके बाद, उस डिपेंडेंसी का टाइप चुनें जिसे आपको जोड़ना है.
चुनी गई डिपेंडेंसी के टाइप के आधार पर, आपको नीचे दिए गए डायलॉग जैसा एक डायलॉग दिखेगा. इससे आपको मॉड्यूल में डिपेंडेंसी जोड़ने में मदद मिलेगी.

बिल्ड वैरिएंट
पीएसडी के इस सेक्शन में, अपने प्रोजेक्ट के हर मॉड्यूल के लिए बिल्ड वैरिएंट और प्रॉडक्ट फ़्लेवर बनाएं और उन्हें कॉन्फ़िगर करें. मेनिफ़ेस्ट प्लेसहोल्डर जोड़े जा सकते हैं. साथ ही, ProGuard फ़ाइलें जोड़ी जा सकती हैं, हस्ताक्षर करने की कुंजियां असाइन की जा सकती हैं, और भी बहुत कुछ किया जा सकता है.

सुझाव
नीचे दिए गए तरीके से, सुझाव सेक्शन में जाकर, प्रोजेक्ट की डिपेंडेंसी और बिल्ड वैरिएबल के लिए सुझाए गए अपडेट देखें.

नया रिसोर्स मैनेजर
Resource Manager, एक नई टूल विंडो है. इसका इस्तेमाल, अपने ऐप्लिकेशन में संसाधनों को इंपोर्ट करने, बनाने, मैनेज करने, और इस्तेमाल करने के लिए किया जाता है. टूल विंडो खोलने के लिए, मेन्यू बार में जाकर व्यू > टूल विंडो > Resource Manager को चुनें. Resource Manager की मदद से ये काम किए जा सकते हैं:

- संसाधनों को विज़ुअलाइज़ करना: आपको ड्रॉएबल, रंगों, और लेआउट की झलक देखने का विकल्प मिलता है. इससे आपको अपनी ज़रूरत के संसाधन तुरंत मिल जाते हैं.
- एक साथ कई ऐसेट इंपोर्ट करना: एक साथ कई ड्रॉएबल ऐसेट इंपोर्ट की जा सकती हैं. इसके लिए, उन्हें संसाधन मैनेजर टूल विंडो में खींचें और छोड़ें या ड्रॉएबल इंपोर्ट करें विज़र्ड का इस्तेमाल करें. विज़र्ड को ऐक्सेस करने के लिए, टूल विंडो के सबसे ऊपर बाएं कोने में मौजूद (+) बटन को चुनें. इसके बाद, ड्रॉप-डाउन मेन्यू से ड्रॉएबल इंपोर्ट करें को चुनें.
-
एसवीजी को
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 के साथ काम करने से जुड़े अक्सर पूछे जाने वाले सवाल पढ़ें. इससे आपको अपनी समस्या का समाधान मिल सकता है. अगर समस्या का समाधान नहीं दिया गया है, तो कृपया गड़बड़ी की शिकायत करें.
R8 को बंद करने के लिए, अपने प्रोजेक्ट की gradle.properties फ़ाइल में इनमें से कोई एक लाइन जोड़ें:
# Disables R8 for Android Library modules only.
android.enableR8.libraries = false
# Disables R8 for all modules.
android.enableR8 = false
ध्यान दें: अगर किसी बिल्ड टाइप के लिए, आपने अपने ऐप्लिकेशन मॉड्यूल की build.gradle फ़ाइल में useProguard को false पर सेट किया है, तो Android Gradle प्लग इन उस बिल्ड टाइप के लिए, आपके ऐप्लिकेशन के कोड को छोटा करने के लिए R8 का इस्तेमाल करेगा. भले ही, आपने अपने प्रोजेक्ट की gradle.properties फ़ाइल में R8 को बंद कर दिया हो.
नेविगेशन एडिटर में अब सभी तरह के आर्ग्युमेंट इस्तेमाल किए जा सकते हैं
नेविगेशन कॉम्पोनेंट के साथ काम करने वाले सभी आर्ग्युमेंट टाइप, अब नेविगेशन एडिटर में काम करते हैं. सपोर्ट किए गए टाइप के बारे में ज़्यादा जानने के लिए, डेटा को एक डेस्टिनेशन से दूसरे डेस्टिनेशन पर भेजें लेख पढ़ें.
लेआउट एडिटर में सुधार {:#layout-editor}
लेआउट एडिटर में मौजूद एट्रिब्यूट पैनल को एक ही पेज में व्यवस्थित कर दिया गया है. इसमें ऐसे सेक्शन हैं जिन्हें बड़ा करके, कॉन्फ़िगर किए जा सकने वाले एट्रिब्यूट देखे जा सकते हैं. एट्रिब्यूट पैनल में ये अपडेट भी शामिल हैं:
- नए डिक्लेयर किए गए एट्रिब्यूट सेक्शन में, उन एट्रिब्यूट की सूची दी गई है जिन्हें लेआउट फ़ाइल में शामिल किया गया है. साथ ही, इसमें नए एट्रिब्यूट तुरंत जोड़ने की सुविधा भी मिलती है.
- एट्रिब्यूट पैनल में अब हर एट्रिब्यूट के बगल में इंडिकेटर भी दिखते हैं. अगर एट्रिब्यूट की वैल्यू रिसॉर्स रेफ़रंस है, तो इंडिकेटर सॉलिड होते हैं. अगर ऐसा नहीं है, तो इंडिकेटर खाली होते हैं.
- गड़बड़ियों या चेतावनियों वाले एट्रिब्यूट अब हाइलाइट किए जाते हैं. लाल रंग से हाइलाइट की गई वैल्यू गड़बड़ियों के बारे में बताती हैं. उदाहरण के लिए, जब लेआउट की अमान्य वैल्यू का इस्तेमाल किया जाता है. वहीं, नारंगी रंग से हाइलाइट की गई वैल्यू चेतावनियों के बारे में बताती हैं. उदाहरण के लिए, जब हार्ड-कोड की गई वैल्यू का इस्तेमाल किया जाता है.
डिपेंडेंसी को तुरंत इंपोर्ट करने के लिए, नई इंटेंशन ऐक्शन सुविधा
अगर आपने अपने कोड में Jetpack और Firebase की कुछ क्लास का इस्तेमाल करना शुरू कर दिया है, तो एक नई इंटेंशन ऐक्शन सुविधा आपको अपने प्रोजेक्ट में ज़रूरी Gradle लाइब्रेरी डिपेंडेंसी जोड़ने का सुझाव देती है. ऐसा तब होता है, जब आपने पहले से ऐसा न किया हो. उदाहरण के लिए, अगर आपने ज़रूरी android.arch.work:work-runtime डिपेंडेंसी को इंपोर्ट किए बिना WorkManager क्लास को रेफ़रंस किया है, तो इंटेंशन ऐक्शन की मदद से, एक क्लिक में ऐसा आसानी से किया जा सकता है. इसे यहां दिखाया गया है.

खास तौर पर, Jetpack ने Support Library को अलग-अलग पैकेज में फिर से पैक किया है. इन पैकेज को मैनेज और अपडेट करना आसान होता है. इसलिए, इस इंटेंट ऐक्शन की मदद से, सिर्फ़ उन डिपेंडेंसी को तुरंत जोड़ा जा सकता है जिनकी ज़रूरत आपको Jetpack के उन कॉम्पोनेंट के लिए होती है जिनका आपको इस्तेमाल करना है.
3.3 (जनवरी 2019)
Android Studio 3.3 एक मुख्य रिलीज़ है. इसमें कई नई सुविधाएं और सुधार शामिल हैं.
3.3.2 (मार्च 2019)
इस छोटे अपडेट में, कई गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस में सुधार किए गए हैं. बग ठीक करने से जुड़े अहम बदलावों की सूची देखने के लिए, रिलीज़ अपडेट ब्लॉग पर इससे जुड़ी पोस्ट पढ़ें.
3.3.1 (फ़रवरी 2019)
इस छोटे अपडेट में, कई गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस में सुधार किए गए हैं.
IntelliJ IDEA 2018.2.2
Android Studio के मुख्य IDE को IntelliJ IDEA से मिले सुधारों के साथ अपडेट किया गया है. यह 2018.2.2 रिलीज़ के ज़रिए किया गया है.
Android Gradle प्लगिन के अपडेट
Android Gradle प्लगिन में नया क्या है, इस बारे में जानने के लिए इसके रिलीज़ नोट देखें.
नेविगेशन एडिटर
नेविगेशन एडिटर की मदद से, नेविगेशन आर्किटेक्चर कॉम्पोनेंट का इस्तेमाल करके, अपने ऐप्लिकेशन में नेविगेशन को तुरंत विज़ुअलाइज़ और बनाया जा सकता है.

ज़्यादा जानकारी के लिए, Navigation Architecture Component की मदद से नेविगेशन लागू करना लेख पढ़ें.
Android Studio की उन डायरेक्ट्री को मिटाएं जिनका इस्तेमाल नहीं किया जा रहा है
Android Studio के मुख्य वर्शन को पहली बार चलाने पर, यह उन डायरेक्ट्री को खोजता है जिनमें Android Studio के उन वर्शन के लिए कैश मेमोरी, सेटिंग, इंडेक्स, और लॉग मौजूद होते हैं जिनके लिए कोई इंस्टॉलेशन नहीं मिला है. इसके बाद, Delete Unused Android Studio Directories डायलॉग में, इस्तेमाल न की गई इन डायरेक्ट्री की जगहें, साइज़, और आखिरी बार बदलाव किए जाने का समय दिखता है. साथ ही, इन्हें मिटाने का विकल्प भी मिलता है.
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 से शुरू करने पर, Lint बहुत तेज़ी से काम करता है. बड़े प्रोजेक्ट में, Lint को चार गुना तेज़ी से चलाया जा सकता है.
'नया प्रोजेक्ट बनाएं' विज़र्ड
नया प्रोजेक्ट बनाएं विज़र्ड को नया लुक दिया गया है. साथ ही, इसमें ऐसे अपडेट शामिल किए गए हैं जिनसे Android Studio के नए प्रोजेक्ट आसानी से बनाए जा सकते हैं.

ज़्यादा जानकारी के लिए, प्रोजेक्ट बनाना लेख पढ़ें.
प्रोफ़ाइलर से जुड़े अपडेट
Android Studio 3.3 में, अलग-अलग प्रोफ़ाइलर के लिए अपडेट शामिल हैं.
बेहतर परफ़ॉर्मेंस
उपयोगकर्ताओं के सुझाव/राय या शिकायत के आधार पर, प्रोफ़ाइलर का इस्तेमाल करते समय रेंडरिंग की परफ़ॉर्मेंस को बेहतर बनाया गया है. कृपया सुझाव/राय दें या शिकायत करें. खास तौर पर, अगर आपको परफ़ॉर्मेंस से जुड़ी समस्याएं दिखती हैं.
प्रोफ़ाइलर में मेमोरी ऐलोकेशन को ट्रैक करने के विकल्प
प्रोफ़ाइलिंग के दौरान ऐप्लिकेशन की परफ़ॉर्मेंस को बेहतर बनाने के लिए, मेमोरी प्रोफ़ाइलर अब डिफ़ॉल्ट रूप से, समय-समय पर मेमोरी के सैंपल लेता है. अगर चाहें, तो इस व्यवहार को बदला जा सकता है. इसके लिए, Android 8.0 (एपीआई लेवल 26) या उसके बाद के वर्शन पर काम करने वाले डिवाइसों पर टेस्ट करते समय, Allocation Tracking ड्रॉपडाउन का इस्तेमाल करें.

बजट के बंटवारे की ट्रैकिंग ड्रॉपडाउन का इस्तेमाल करके, इनमें से कोई मोड चुना जा सकता है:
-
पूरी जानकारी: इससे ऑब्जेक्ट के लिए मेमोरी के सभी असाइनमेंट कैप्चर किए जाते हैं. ध्यान दें कि अगर आपके पास ऐसा ऐप्लिकेशन है जो बहुत सारे ऑब्जेक्ट असाइन करता है, तो आपको प्रोफ़ाइलिंग के दौरान परफ़ॉर्मेंस से जुड़ी गंभीर समस्याएं दिख सकती हैं.
-
सैंपल लिया गया: यह ऑब्जेक्ट मेमोरी के समय-समय पर किए गए असाइनमेंट का सैंपल कैप्चर करता है. यह डिफ़ॉल्ट व्यवहार है और इससे प्रोफ़ाइलिंग के दौरान ऐप्लिकेशन की परफ़ॉर्मेंस पर कम असर पड़ता है. आपको ऐसे ऐप्लिकेशन की परफ़ॉर्मेंस से जुड़ी कुछ समस्याएं आ सकती हैं जो कम समय में कई ऑब्जेक्ट असाइन करते हैं.
-
बंद है: इससे मेमोरी ऐलोकेशन बंद हो जाता है. अगर यह मोड पहले से नहीं चुना गया है, तो सीपीयू रिकॉर्डिंग करते समय यह मोड अपने-आप चालू हो जाता है. रिकॉर्डिंग खत्म होने के बाद, यह मोड पिछली सेटिंग पर वापस आ जाता है. सीपीयू रिकॉर्डिंग कॉन्फ़िगरेशन डायलॉग में जाकर, इस सेटिंग को बदला जा सकता है.
ट्रैकिंग का असर Java ऑब्जेक्ट और JNI रेफ़रंस, दोनों पर पड़ता है.
फ़्रेम रेंडरिंग डेटा की जांच करना
सीपीयू प्रोफ़ाइलर में, अब यह देखा जा सकता है कि आपके Java ऐप्लिकेशन को मुख्य यूज़र इंटरफ़ेस (यूआई) थ्रेड और RenderThread पर हर फ़्रेम को रेंडर करने में कितना समय लगता है. यह डेटा, उन समस्याओं की जांच करने में मददगार हो सकता है जिनकी वजह से यूज़र इंटरफ़ेस (यूआई) में रुकावट आती है और फ़्रेमरेट कम हो जाता है. उदाहरण के लिए, हर वह फ़्रेम लाल रंग में दिखता है जिसे स्मूथ फ़्रेमरेट बनाए रखने के लिए ज़रूरी 16 मि॰से॰ से ज़्यादा समय लगता है.
फ़्रेम रेंडरिंग का डेटा देखने के लिए, ट्रेस रिकॉर्ड करें. इसके लिए, ऐसे कॉन्फ़िगरेशन का इस्तेमाल करें जिससे सिस्टम कॉल को ट्रेस किया जा सके. ट्रेस रिकॉर्ड करने के बाद, रिकॉर्डिंग की टाइमलाइन में हर फ़्रेम के बारे में जानकारी देखें. यह जानकारी, नीचे दिए गए फ़्रेम सेक्शन में मौजूद होती है.

फ़्रेमरेट से जुड़ी समस्याओं की जांच करने और उन्हें ठीक करने के बारे में ज़्यादा जानने के लिए, धीमी रेंडरिंग लेख पढ़ें.
इवेंट की टाइमलाइन में फ़्रैगमेंट
इवेंट की टाइमलाइन में अब यह दिखता है कि फ़्रैगमेंट कब अटैच और डिटैच किए गए थे. इसके अलावा, किसी फ़्रैगमेंट पर कर्सर घुमाने पर, टूलटिप में फ़्रैगमेंट का स्टेटस दिखता है.

नेटवर्क प्रोफ़ाइलर में कनेक्शन पेलोड के लिए फ़ॉर्मैट किया गया टेक्स्ट देखना
इससे पहले, नेटवर्क प्रोफ़ाइलर सिर्फ़ कनेक्शन पेलोड से मिले रॉ टेक्स्ट को दिखाता था. Android Studio 3.3 अब कुछ टेक्स्ट टाइप को डिफ़ॉल्ट रूप से फ़ॉर्मैट करता है. इनमें JSON, XML, और एचटीएमएल शामिल हैं. फ़ॉर्मैट किए गए टेक्स्ट को दिखाने के लिए, जवाब और अनुरोध टैब में जाकर, पार्स किया गया व्यू देखें लिंक पर क्लिक करें. इसके अलावा, रॉ टेक्स्ट को दिखाने के लिए, सोर्स देखें लिंक पर क्लिक करें.

ज़्यादा जानकारी के लिए, नेटवर्क प्रोफ़ाइलर की मदद से नेटवर्क ट्रैफ़िक की जांच करना लेख पढ़ें.
एसडीके कॉम्पोनेंट अपने-आप डाउनलोड होने की सुविधा
जब आपके प्रोजेक्ट को 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++ सपोर्ट को पसंद के मुताबिक बनाएं डायलॉग से, ये विकल्प हटा दिए गए हैं:
- Exceptions Support (-fexceptions)
- Runtime Type Information Support (-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 ऐप्लिकेशन बंडल अब Instant Apps के साथ काम करते हैं
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 के साथ आपके मौजूदा अनुभव के बारे में सबसे सही जानकारी देता है. ऐसा करने पर, 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 और उसके बाद के वर्शन में यह समस्या ठीक कर दी गई है.
-
आम तौर पर, आपको बिल्ड टूल का वर्शन बताने की ज़रूरत नहीं होती. हालांकि, Android Gradle प्लगिन 3.2.0 का इस्तेमाल करते समय, अगर
renderscriptSupportModeEnabledकोtrueपर सेट किया जाता है, तो आपको हर मॉड्यूल कीbuild.gradleफ़ाइल में यह जानकारी शामिल करनी होगी:android.buildToolsVersion "28.0.3"
Assistant में नया क्या है
Android Studio में हुए नए बदलावों के बारे में आपको एक नई असिस्टेंट बताती है.
अगर Android Studio को नए सिरे से इंस्टॉल किया गया है या अपडेट किया गया है, तो उसे शुरू करने पर Assistant खुल जाती है. ऐसा तब होता है, जब Assistant को पता चलता है कि दिखाने के लिए कोई नई जानकारी उपलब्ध है. सहायता > Android Studio में नया क्या है को चुनकर भी, Assistant को खोला जा सकता है.
Android Jetpack
Android Jetpack, Android डेवलपमेंट को तेज़ करने में मदद करता है. इसके लिए, यह कॉम्पोनेंट, टूल, और दिशा-निर्देश उपलब्ध कराता है. इनकी मदद से, दोहराए जाने वाले कामों को खत्म किया जा सकता है. साथ ही, अच्छी क्वालिटी वाले ऐसे ऐप्लिकेशन बनाए जा सकते हैं जिनकी जांच की जा सकती है. इन ऐप्लिकेशन को तेज़ी से और आसानी से बनाया जा सकता है. Android Studio में, Jetpack के साथ काम करने के लिए ये अपडेट शामिल हैं. ज़्यादा जानकारी के लिए, Jetpack का दस्तावेज़ देखें.
नेविगेशन एडिटर
नया नेविगेशन एडिटर, Android Jetpack के नेविगेशन कॉम्पोनेंट के साथ इंटिग्रेट होता है. इससे आपको अपने ऐप्लिकेशन के नेविगेशन स्ट्रक्चर को ग्राफ़िकल व्यू में बनाने में मदद मिलती है. नेविगेशन एडिटर, ऐप्लिकेशन में मौजूद डेस्टिनेशन के बीच नेविगेशन को डिज़ाइन और लागू करने की प्रोसेस को आसान बनाता है.
Android Studio 3.2 में, नेविगेशन एडिटर एक एक्सपेरिमेंटल सुविधा है. नेविगेशन एडिटर को चालू करने के लिए, फ़ाइल > सेटिंग (Mac पर Android Studio > प्राथमिकताएं) पर क्लिक करें. इसके बाद, बाईं ओर मौजूद पैनल में एक्सपेरिमेंटल कैटगरी चुनें. इसके बाद, नेविगेशन एडिटर चालू करें के बगल में मौजूद बॉक्स पर सही का निशान लगाएं. इसके बाद, Android Studio को फिर से चालू करें.
ज़्यादा जानने के लिए, नेविगेशन एडिटर का दस्तावेज़ पढ़ें.
AndroidX पर माइग्रेट करना
Jetpack के तहत, हम Android Support Libraries को androidx नेमस्पेस का इस्तेमाल करके, नई Android एक्सटेंशन लाइब्रेरी पर माइग्रेट कर रहे हैं. ज़्यादा जानकारी के लिए, AndroidX की खास जानकारी देखें.
Android Studio 3.2 में, माइग्रेट करने की नई सुविधा उपलब्ध है. इसकी मदद से, इस प्रोसेस को पूरा किया जा सकता है.
किसी मौजूदा प्रोजेक्ट को AndroidX पर माइग्रेट करने के लिए, Refactor > Migrate to 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पर सेट किया गया हो.
Migrate to AndroidX कमांड का इस्तेमाल करने पर, दोनों फ़्लैग true पर सेट हो जाते हैं.
अगर आपको AndroidX लाइब्रेरी का इस्तेमाल तुरंत शुरू करना है और तीसरे पक्ष की मौजूदा लाइब्रेरी को बदलने की ज़रूरत नहीं है, तो android.useAndroidX फ़्लैग को true पर और android.enableJetifier फ़्लैग को false पर सेट करें.
Android ऐप्लिकेशन बंडल
Android ऐप्लिकेशन बंडल, अपलोड करने का एक नया फ़ॉर्मैट है. इसमें आपके ऐप्लिकेशन का कंपाइल किया गया पूरा कोड और रिसॉर्स शामिल होते हैं. हालांकि, यह Google Play Store को एपीके जनरेट करने और साइन करने की अनुमति देता है.
इसके बाद, Google Play का नया ऐप्लिकेशन डिलीवरी मॉडल, आपके ऐप्लिकेशन बंडल का इस्तेमाल करके हर उपयोगकर्ता के डिवाइस कॉन्फ़िगरेशन के हिसाब से ऑप्टिमाइज़ किए गए APK जनरेट करता है और उन्हें डिलीवर करता है. इससे हर उपयोगकर्ता सिर्फ़ वह कोड और संसाधन डाउनलोड करता है जिनकी उसे आपका ऐप्लिकेशन चलाने के लिए ज़रूरत होती है. अब आपको एक से ज़्यादा APK बनाने, साइन करने, और मैनेज करने की ज़रूरत नहीं है. साथ ही, उपयोगकर्ताओं को छोटे और ज़्यादा ऑप्टिमाइज़ किए गए डाउनलोड मिलते हैं.
इसके अलावा, अपने ऐप्लिकेशन प्रोजेक्ट में फ़ीचर मॉड्यूल जोड़े जा सकते हैं. साथ ही, उन्हें अपने ऐप्लिकेशन बंडल में शामिल किया जा सकता है. इसके बाद, आपके उपयोगकर्ता ज़रूरत के हिसाब से आपके ऐप्लिकेशन की सुविधाएं डाउनलोड और इंस्टॉल कर सकते हैं.
बंडल बनाने के लिए, बनाएं > बंडल / APK बनाएं > बंडल बनाएं को चुनें.
Android ऐप्लिकेशन बंडल बनाने और उसका विश्लेषण करने के निर्देशों के साथ-साथ ज़्यादा जानकारी के लिए, Android ऐप्लिकेशन बंडल लेख पढ़ें.
लेआउट एडिटर में सैंपल डेटा
कई Android लेआउट में रनटाइम डेटा होता है. इससे ऐप्लिकेशन डेवलपमेंट के डिज़ाइन स्टेज के दौरान, लेआउट के लुक और फ़ील की कल्पना करना मुश्किल हो सकता है. अब लेआउट एडिटर में, सैंपल डेटा के साथ अपने व्यू की झलक आसानी से देखी जा सकती है. कोई व्यू जोड़ने पर, डिज़ाइन विंडो में व्यू के नीचे एक बटन
दिखता है. इस बटन पर क्लिक करके, डिज़ाइन-टाइम व्यू एट्रिब्यूट सेट करें. आपके पास कई तरह के सैंपल डेटा टेंप्लेट में से किसी एक को चुनने का विकल्प होता है. साथ ही, यह तय किया जा सकता है कि व्यू में कितने सैंपल आइटम दिखाने हैं.
सैंपल डेटा का इस्तेमाल करने के लिए, नए लेआउट में RecyclerView जोड़ें. इसके बाद, व्यू के नीचे मौजूद डिज़ाइन-टाइम एट्रिब्यूट बटन
पर क्लिक करें. अब सैंपल डेटा टेंप्लेट के कैरसेल से कोई विकल्प चुनें.
स्लाइस
स्लाइस, Android पर अन्य यूज़र इंटरफ़ेस प्लैटफ़ॉर्म में आपके ऐप्लिकेशन के कुछ हिस्सों को एम्बेड करने का एक नया तरीका है. उदाहरण के लिए, स्लाइस की मदद से Google Search के सुझावों में ऐप्लिकेशन की सुविधाओं और कॉन्टेंट को दिखाया जा सकता है.
Android Studio 3.2 में, स्लाइस प्रोवाइडर के नए एपीआई के साथ-साथ नए लिंट चेक की सुविधा भी है. इनकी मदद से, अपने ऐप्लिकेशन को बेहतर बनाया जा सकता है. साथ ही, यह पक्का किया जा सकता है कि स्लाइस बनाते समय, सबसे सही तरीकों का इस्तेमाल किया जा रहा हो.
शुरू करने के लिए, किसी प्रोजेक्ट फ़ोल्डर पर राइट क्लिक करें. इसके बाद, New > Other > Slice Provider चुनें.
ज़्यादा जानने के लिए, स्लाइस इस्तेमाल करने से जुड़े दिशा-निर्देश पढ़ें. इसमें स्लाइस इंटरैक्शन की जांच करने का तरीका भी बताया गया है.
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 को IntelliJ IDEA से मिले सुधारों के साथ अपडेट किया गया है. यह अपडेट, 2018.1.6 रिलीज़ के ज़रिए किया गया है.
Android प्रोफ़ाइलर
Android Studio 3.2 में, Android Profiler की इन नई सुविधाओं को आज़माएं.
सेशन
अब Profiler के डेटा को सेशन के तौर पर सेव किया जा सकता है, ताकि बाद में इसे फिर से देखा जा सके और इसकी जांच की जा सके. प्रोफ़ाइलर, आपके सेशन के डेटा को तब तक सेव रखता है, जब तक कि IDE को फिर से चालू नहीं किया जाता.
मेथड ट्रेस रिकॉर्ड करने या हीप डंप कैप्चर करने पर, IDE उस डेटा को मौजूदा सेशन में एक अलग एंट्री के तौर पर जोड़ता है. इसमें आपके ऐप्लिकेशन की नेटवर्क गतिविधि भी शामिल होती है. साथ ही, डेटा की तुलना करने के लिए, रिकॉर्डिंग के बीच आसानी से स्विच किया जा सकता है.
सिस्टम ट्रेस करने वाला टूल
अपने डिवाइस के सिस्टम सीपीयू और थ्रेड ऐक्टिविटी की जांच करने के लिए, सीपीयू प्रोफ़ाइलर में जाकर, नया सिस्टम ट्रेस कॉन्फ़िगरेशन चुनें. यह ट्रेस कॉन्फ़िगरेशन, systrace पर आधारित है. यह सिस्टम-लेवल की समस्याओं की जांच करने के लिए फ़ायदेमंद है. जैसे, यूज़र इंटरफ़ेस (यूआई) में रुकावट आना.
इस ट्रेस कॉन्फ़िगरेशन का इस्तेमाल करते समय, प्रोफ़ाइलर टाइमलाइन में ज़रूरी कोड रूटीन को विज़ुअली मार्क किया जा सकता है. इसके लिए, अपने C/C++ कोड को नेटिव ट्रेसिंग एपीआई या अपने Java कोड को Trace क्लास के साथ इंस्ट्रुमेंट करें.
Memory Profiler में JNI रेफ़रंस की जांच करना
अगर आपने अपने ऐप्लिकेशन को Android 8.0 (एपीआई लेवल 26) या उसके बाद के वर्शन पर चलने वाले डिवाइस पर डिप्लॉय किया है, तो अब Memory Profiler का इस्तेमाल करके, अपने ऐप्लिकेशन के JNI कोड के लिए मेमोरी के बंटवारे की जांच की जा सकती है.
जब आपका ऐप्लिकेशन चल रहा हो, तब टाइमलाइन का वह हिस्सा चुनें जिसकी आपको जांच करनी है. इसके बाद, क्लास की सूची के ऊपर मौजूद ड्रॉप-डाउन मेन्यू से JNI हीप चुनें. यह नीचे दिखाया गया है. इसके बाद, हीप में मौजूद ऑब्जेक्ट की जांच सामान्य तरीके से की जा सकती है. साथ ही, Allocation Call Stack टैब में मौजूद ऑब्जेक्ट पर दो बार क्लिक करके यह देखा जा सकता है कि आपके कोड में JNI रेफ़रंस कहां-कहां असाइन और रिलीज़ किए गए हैं.
मेमोरी हीप डंप फ़ाइलों को इंपोर्ट, एक्सपोर्ट, और उनकी जांच करना
अब Memory Profiler की मदद से बनाई गई .hprof मेमोरी हीप डंप फ़ाइलों को इंपोर्ट, एक्सपोर्ट, और उनकी जांच की जा सकती है.
प्रोफ़ाइलर के सेशन पैनल में नया प्रोफ़ाइलर सेशन शुरू करें
पर क्लिक करके, अपनी .hprof फ़ाइल इंपोर्ट करें. इसके बाद, फ़ाइल से लोड करें चुनें. इसके बाद, मेमोरी प्रोफ़ाइलर में इसके डेटा की जांच की जा सकती है. यह जांच, किसी अन्य हीप डंप की तरह ही की जाती है.
अगर आपको हीप डंप डेटा को बाद में देखने के लिए सेव करना है, तो सेशन पैन में मौजूद हीप डंप एंट्री के दाईं ओर मौजूद, हीप डंप एक्सपोर्ट करें बटन का इस्तेमाल करें. इसके बाद, आपको इस नाम से एक्सपोर्ट करें डायलॉग दिखेगा. इसमें फ़ाइल को .hprof फ़ाइल नाम एक्सटेंशन के साथ सेव करें.
ऐप्लिकेशन शुरू होने के दौरान सीपीयू की गतिविधि रिकॉर्ड करें
अब अपने ऐप्लिकेशन के स्टार्टअप के दौरान सीपीयू की गतिविधि को इस तरह रिकॉर्ड किया जा सकता है:
- मुख्य मेन्यू में जाकर, चलाएं > कॉन्फ़िगरेशन में बदलाव करें को चुनें.
- अपनी पसंद के रन कॉन्फ़िगरेशन के प्रोफ़ाइलिंग टैब में जाकर, स्टार्टअप पर किसी तरीके की ट्रेसिंग रिकॉर्ड करना शुरू करें के बगल में मौजूद बॉक्स को चुनें.
- ड्रॉपडाउन मेन्यू से, इस्तेमाल करने के लिए कोई सीपीयू रिकॉर्डिंग कॉन्फ़िगरेशन चुनें.
- अपने ऐप्लिकेशन को Android 8.0 (एपीआई लेवल 26) या उसके बाद के वर्शन पर चलने वाले डिवाइस पर डिप्लॉय करें. इसके लिए, चलाएं > प्रोफ़ाइल बनाएं को चुनें.
सीपीयू ट्रेस एक्सपोर्ट करना
सीपीयू प्रोफ़ाइलर की मदद से सीपीयू की गतिविधि रिकॉर्ड करने के बाद, डेटा को .trace फ़ाइल के तौर पर एक्सपोर्ट किया जा सकता है. इससे डेटा को दूसरों के साथ शेयर किया जा सकता है या बाद में इसकी जांच की जा सकती है.
सीपीयू की गतिविधि रिकॉर्ड करने के बाद, ट्रेस एक्सपोर्ट करने के लिए यह तरीका अपनाएं:
- सीपीयू टाइमलाइन से जिस रिकॉर्डिंग को एक्सपोर्ट करना है उस पर राइट क्लिक करें.
- ड्रॉपडाउन मेन्यू से, ट्रेस एक्सपोर्ट करें चुनें.
- उस जगह पर जाएं जहां आपको फ़ाइल सेव करनी है. इसके बाद, सेव करें पर क्लिक करें.
सीपीयू की ट्रेस फ़ाइलें इंपोर्ट करना और उनकी जांच करना
अब Debug API या CPU Profiler की मदद से बनाई गई .trace फ़ाइलों को इंपोर्ट और उनकी जांच की जा सकती है. (फ़िलहाल, सिस्टम ट्रेस रिकॉर्डिंग इंपोर्ट नहीं की जा सकतीं.)
ट्रेस फ़ाइल इंपोर्ट करने के लिए, प्रोफ़ाइलर के सेशन पैन में मौजूद नया प्रोफ़ाइलर सेशन शुरू करें
पर क्लिक करें. इसके बाद, फ़ाइल से लोड करें चुनें. इसके बाद, सामान्य तरीके से सीपीयू प्रोफ़ाइलर में जाकर, इसके डेटा की जांच की जा सकती है. हालांकि, इसमें ये अपवाद शामिल नहीं होंगे:
- सीपीयू की गतिविधि को सीपीयू टाइमलाइन के साथ नहीं दिखाया गया है.
- थ्रेड की गतिविधि की टाइमलाइन से सिर्फ़ यह पता चलता है कि हर थ्रेड के लिए ट्रेस डेटा कहां उपलब्ध है. इससे थ्रेड की मौजूदा स्थिति (जैसे कि चल रहा है, इंतज़ार कर रहा है या स्लीपिंग) के बारे में पता नहीं चलता.
डीबग एपीआई का इस्तेमाल करके, सीपीयू की गतिविधि रिकॉर्ड करना
अब Debug API की मदद से अपने ऐप्लिकेशन को इंस्ट्रुमेंट करके, सीपीयू प्रोफ़ाइलर में सीपीयू गतिविधि को रिकॉर्ड किया जा सकता है. साथ ही, इसे रोका भी जा सकता है. किसी डिवाइस पर अपना ऐप्लिकेशन डिप्लॉय करने के बाद, जब आपका ऐप्लिकेशन startMethodTracing(String tracePath) को कॉल करता है, तब प्रोफ़ाइलर अपने-आप सीपीयू की गतिविधि रिकॉर्ड करना शुरू कर देता है. इसके अलावा, जब आपका ऐप्लिकेशन stopMethodTracing() को कॉल करता है, तब प्रोफ़ाइलर रिकॉर्डिंग बंद कर देता है. इस एपीआई का इस्तेमाल करके ट्रिगर की गई सीपीयू गतिविधि को रिकॉर्ड करते समय, सीपीयू प्रोफ़ाइलर, Debug API को सीपीयू रिकॉर्डिंग के चुने गए कॉन्फ़िगरेशन के तौर पर दिखाता है.
एनर्जी प्रोफ़ाइलर
एनर्जी प्रोफ़ाइलर, आपके ऐप्लिकेशन के अनुमानित ऊर्जा इस्तेमाल का विज़ुअलाइज़ेशन दिखाता है. साथ ही, यह सिस्टम इवेंट भी दिखाता है जिनसे ऊर्जा इस्तेमाल पर असर पड़ता है. जैसे, वेकलॉक, अलार्म, और जॉब.
जब कनेक्ट किए गए डिवाइस या Android 8.0 (एपीआई 26) या इसके बाद के वर्शन पर चलने वाले Android Emulator पर ऐप्लिकेशन चलाया जाता है, तब Energy Profiler, Profiler विंडो में सबसे नीचे नई लाइन के तौर पर दिखता है.
एनर्जी प्रोफ़ाइलर व्यू को बड़ा करने के लिए, ऊर्जा लाइन पर क्लिक करें. सीपीयू, नेटवर्क, और जगह (जीपीएस) के हिसाब से ऊर्जा के इस्तेमाल की जानकारी देखने के लिए, टाइमलाइन में मौजूद किसी बार पर अपना माउस पॉइंटर रखें. साथ ही, सिस्टम से जुड़े काम के इवेंट भी देखें.
सिस्टम इवेंट, बैटरी के इस्तेमाल पर असर डालते हैं. इन्हें सिस्टम टाइमलाइन में दिखाया जाता है. यह टाइमलाइन, बैटरी टाइमलाइन के नीचे होती है. ऊर्जा टाइमलाइन में तारीख की सीमा चुनने पर, इवेंट पैन में तय की गई तारीख की सीमा के अंदर होने वाले सिस्टम इवेंट की जानकारी दिखती है.
सिस्टम इवेंट, जैसे कि वेकलॉक के लिए कॉल स्टैक और अन्य जानकारी देखने के लिए, इवेंट पैन में जाकर उसे चुनें. सिस्टम इवेंट के लिए ज़िम्मेदार कोड पर जाने के लिए, कॉल स्टैक में मौजूद एंट्री पर दो बार क्लिक करें.
लिंट की जांच की जा रही है
Android Studio 3.2 में, लिंट चेकिंग के लिए कई नई और बेहतर सुविधाएं शामिल हैं.
लिंट की नई जांचों की मदद से, कोड से जुड़ी सामान्य समस्याओं का पता लगाया जा सकता है. इनमें इस्तेमाल से जुड़ी संभावित समस्याओं के बारे में चेतावनियों से लेकर, सुरक्षा से जुड़ी संभावित कमज़ोरियों के बारे में ज़्यादा प्राथमिकता वाली गड़बड़ियां शामिल हैं.
Java/Kotlin इंटरऑपरेबिलिटी के लिए लिंट की जांच
यह पक्का करने के लिए कि आपका Java कोड, Kotlin कोड के साथ अच्छी तरह से काम करे, नए लिंट चेक, Kotlin Interop Guide में बताए गए सबसे सही तरीकों को लागू करते हैं. इन जांचों के उदाहरणों में, Nullability एनोटेशन की मौजूदगी, Kotlin के हार्ड कीवर्ड का इस्तेमाल, और लैम्डा पैरामीटर को आखिर में रखना शामिल है.
इन जांचों को चालू करने के लिए, फ़ाइल > सेटिंग (Mac पर Android Studio > प्राथमिकताएं) पर क्लिक करके सेटिंग डायलॉग खोलें. इसके बाद, एडिटर > जांच > Android > Lint > इंटरऑपरेबिलिटी > Kotlin इंटरऑपरेबिलिटी सेक्शन पर जाएं और वे नियम चुनें जिन्हें आपको चालू करना है.
कमांड-लाइन बिल्ड के लिए इन जांचों को चालू करने के लिए, अपनी build.gradle फ़ाइल में यह जोड़ें:
android {
lintOptions {
check 'Interoperability'
}
}
स्लाइस के लिए लिंट चेक
स्लाइस के लिए नई लिंट जांचों से यह पक्का करने में मदद मिलती है कि स्लाइस सही तरीके से बनाए जा रहे हैं. उदाहरण के लिए, अगर आपने किसी स्लाइस को मुख्य कार्रवाई असाइन नहीं की है, तो लिंट चेक आपको इसकी चेतावनी देते हैं.
नया Gradle टारगेट
नई lintFix Gradle टास्क का इस्तेमाल करके, लिंट चेक से सुझाए गए सभी सुरक्षित फ़िक्स को सीधे तौर पर सोर्स कोड पर लागू करें. लिंट चेक का एक उदाहरण, जिसमें लागू करने के लिए सुरक्षित फ़िक्स का सुझाव दिया गया है, SyntheticAccessor है.
मेटाडेटा के अपडेट
Android 9 (एपीआई लेवल 28) के साथ काम करने के लिए, lint की जांच से जुड़े कई मेटाडेटा अपडेट किए गए हैं. जैसे, सेवा कास्ट करने की सुविधा की जांच.
नए वैरिएंट पर लिंट चलाने पर चेतावनी
लिंट अब यह रिकॉर्ड करता है कि किस वैरिएंट और वर्शन के साथ बेसलाइन रिकॉर्ड की गई है. अगर आपने लिंट को किसी ऐसे वैरिएंट पर चलाया है जिसके साथ बेसलाइन नहीं बनाई गई थी, तो लिंट आपको इसकी सूचना देगा.
मौजूदा लिंट चेक में सुधार
Android Studio 3.2 में, मौजूदा लिंट चेक की सुविधा को बेहतर बनाया गया है. उदाहरण के लिए, संसाधन साइकल की जांचें अब अन्य संसाधन टाइप पर भी लागू होती हैं. साथ ही, अनुवाद का पता लगाने वाला टूल, Editor में तुरंत ही छूटे हुए अनुवादों का पता लगा सकता है.
समस्याओं के आईडी को ज़्यादा खोजे जाने लायक बनाना
समस्या के आईडी अब ज़्यादा जगहों पर दिखते हैं. इनमें जांच के नतीजे वाली विंडो भी शामिल है. इससे आपको build.gradle में lintOptions के ज़रिए, खास जांचों को चालू या बंद करने के लिए ज़रूरी जानकारी आसानी से मिल जाती है.
ज़्यादा जानकारी के लिए, Gradle की मदद से लिंट के विकल्प कॉन्फ़िगर करना लेख पढ़ें.
डेटा बाइंडिंग V2
डेटा बाइंडिंग V2 अब डिफ़ॉल्ट रूप से चालू है और यह V1 के साथ काम करता है. इसका मतलब है कि अगर आपके पास ऐसी लाइब्रेरी डिपेंडेंसी हैं जिन्हें V1 के साथ कंपाइल किया गया है, तो उन्हें डेटा बाइंडिंग V2 का इस्तेमाल करने वाले प्रोजेक्ट के साथ इस्तेमाल किया जा सकता है. हालांकि, ध्यान दें कि V1 का इस्तेमाल करने वाले प्रोजेक्ट, V2 के साथ कंपाइल की गई डिपेंडेंसी का इस्तेमाल नहीं कर सकते.
D8 desugaring
Android Studio 3.1 में, हमने D8 टूल में डिसुगरिंग के चरण को एक्सपेरिमेंट के तौर पर उपलब्ध कराया है. इससे बिल्ड करने में लगने वाला कुल समय कम हो जाता है. Android Studio 3.2 में, D8 की मदद से डिसुगरिंग की सुविधा डिफ़ॉल्ट रूप से चालू होती है.
कोड छोटा करने की नई सुविधा
R8, कोड का साइज़ कम करने और उसे अस्पष्ट बनाने वाला नया टूल है. यह ProGuard की जगह लेता है. R8 के झलक वर्शन का इस्तेमाल शुरू करने के लिए, अपने प्रोजेक्ट की gradle.properties फ़ाइल में यह शामिल करें:
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 बिल्ड फ़ाइलों के लिए, एडिटर की बेहतर सुविधाएं
अगर CMake का इस्तेमाल अपने प्रोजेक्ट में C और C++ कोड जोड़ने के लिए किया जाता है, तो Android Studio में अब एडिटर की बेहतर सुविधाएं शामिल हैं. इनसे आपको CMake बिल्ड स्क्रिप्ट में बदलाव करने में मदद मिलती है. जैसे:
- सिंटैक्स हाइलाइट करना और कोड पूरा करना: IDE अब सामान्य CMake कमांड के लिए, सिंटैक्स हाइलाइट करता है और कोड पूरा करने का सुझाव देता है. इसके अलावा, Control बटन (Mac पर Command बटन) दबाकर रखते हुए किसी फ़ाइल पर क्लिक करके भी उस पर जाया जा सकता है.
- कोड को फिर से फ़ॉर्मैट करना: अब IntelliJ के कोड को फिर से फ़ॉर्मैट करने के विकल्प का इस्तेमाल करके, अपनी CMake बिल्ड स्क्रिप्ट पर कोड स्टाइल लागू की जा सकती हैं.
- सुरक्षित रिफ़ैक्टरिंग: 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 की मेवन रिपॉज़िटरी में ट्रांसफ़र कर दिया गया है
Android Studio 3.2 से, AAPT2 (Android ऐसेट पैकेजिंग टूल 2) का सोर्स, 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() } }
AAPT2 के नए वर्शन में कई समस्याएं ठीक की गई हैं. इनमें Windows पर गैर-ASCII वर्णों को बेहतर तरीके से हैंडल करने की सुविधा भी शामिल है.
मांग पर कॉन्फ़िगरेशन हटाने की सुविधा
Android Studio से, मांग पर कॉन्फ़िगर करें सेटिंग हटा दी गई है.
Android Studio अब Gradle को --configure-on-demand
आर्ग्युमेंट नहीं देता.
ADB कनेक्शन असिस्टेंट
नई ADB कनेक्शन असिस्टेंट सुविधा में, डिवाइस को Android डीबग ब्रिज (ADB) कनेक्शन के ज़रिए सेट अप करने और इस्तेमाल करने के लिए, चरण-दर-चरण निर्देश दिए गए हैं.
सहायक को शुरू करने के लिए, Tools > Connection Assistant चुनें.
ADB कनेक्शन असिस्टेंट, Assistant पैनल के कई पेजों में निर्देश, कॉन्टेक्स्ट के हिसाब से कंट्रोल, और कनेक्ट किए गए डिवाइसों की सूची दिखाती है.
एम्युलेटर से जुड़े सुधार
अब Android Emulator में, किसी भी समय AVD (Android वर्चुअल डिवाइस) के स्नैपशॉट सेव और लोड किए जा सकते हैं. इससे, टेस्ट करने के लिए एमुलेट किए गए डिवाइस को आसानी से और जल्दी से किसी जानी-पहचानी स्थिति में वापस लाया जा सकता है. AVD Manager का इस्तेमाल करके किसी 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 की मुख्य क्लास को चलाने की कोशिश करते समय यह गड़बड़ी हुई:
"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 टैबलेट पर क्रैश हो गए.
-
Android 5.0 या 5.1 (एपीआई लेवल 21 या 22) पर चलने वाले डिवाइसों पर, D8 का इस्तेमाल करके बनाए गए ऐप्लिकेशन इंस्टॉल नहीं हो सके. ऐसा
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." - इंस्टेंट रन की सुविधा चालू होने पर, Run कमांड ट्रिगर होने पर, नए Kotlin प्रोजेक्ट के बिल्ड नहीं बन पाते थे.
-
build.gradleफ़ाइल में बदलाव करते समय, कभी-कभी कोई वर्ण टाइप करने और उसके स्क्रीन पर दिखने के बीच काफ़ी समय लग जाता था. -
ज़्यादा मॉड्यूल या बाहरी डिपेंडेंसी वाले कुछ प्रोजेक्ट में, डेक्सिंग के दौरान बिल्ड फ़ेल हो गए. साथ ही, यह गड़बड़ी का मैसेज मिला:
"RejectedExecutionException: Thread limit exceeded replacing blocked worker" - D8 की मुख्य DEX सूची के हिसाब में, कुछ रिफ़्लेक्टिव इनवोकेशन को ध्यान में नहीं रखा गया था.
इस अपडेट में ऐसे बदलाव भी शामिल हैं जिनकी वजह से, कुछ मामलों में Gradle से लिंट चेक बहुत तेज़ी से किए जा सकते हैं.
3.1.1 (अप्रैल 2018)
Android Studio 3.1 के इस अपडेट में, इन गड़बड़ियों को ठीक किया गया है:
-
कुछ मामलों में, Android Studio 3.0 में बनाए गए किसी प्रोजेक्ट को पहली बार Android Studio 3.1 में खोलने पर, Gradle-aware Make task को रन/डीबग कॉन्फ़िगरेशन में लॉन्च से पहले वाले सेक्शन से हटा दिया गया था. इस वजह से, Run या Debug बटन पर क्लिक करने पर प्रोजेक्ट नहीं बन पाए. इससे कई तरह की समस्याएं हुईं. जैसे, गलत APK डिप्लॉय होना और इंस्टेंट रन का इस्तेमाल करते समय क्रैश होना.
इस समस्या को हल करने के लिए, Android Studio 3.1.1, उन प्रोजेक्ट के लिए रन कॉन्फ़िगरेशन में Gradle-aware Make टास्क जोड़ता है जिनमें यह एंट्री मौजूद नहीं है. यह बदलाव, प्रोजेक्ट लोड होने पर पहली बार Gradle सिंक होने के बाद होता है.
- अगर ऐडवांस प्रोफ़ाइलिंग चालू थी, तो टेक्स्ट बॉक्स वाले लेआउट को डीबग करते समय डीबगर क्रैश हो गया.
- Build Variants पर क्लिक करने के बाद, Android Studio काम नहीं कर रहा है.
- AAR (Android archive) फ़ाइलों को दो बार निकाला गया था. एक बार Gradle सिंक प्रोसेस के दौरान और दूसरी बार Gradle बिल्ड प्रोसेस के दौरान.
- एसवीजी फ़ाइलों से इंपोर्ट किए गए कुछ वेक्टर ड्रॉएबल में एलिमेंट मौजूद नहीं थे.
-
compileडिपेंडेंसी कॉन्फ़िगरेशन के बंद होने के बारे में दी गई चेतावनी को अपडेट कर दिया गया है. इसमेंimplementationऔरapiकॉन्फ़िगरेशन के बारे में बेहतर दिशा-निर्देश दिए गए हैं.compileकॉन्फ़िगरेशन का इस्तेमाल बंद करके माइग्रेट करने के बारे में ज़्यादा जानने के लिए, डिपेंडेंसी के नए कॉन्फ़िगरेशन से जुड़े दस्तावेज़ देखें.
कोडिंग/आईडीई
IntelliJ 2017.3.3
Android Studio के मुख्य आईडीई को IntelliJ IDEA के 2017.3.3 वर्शन के अपडेट के साथ अपडेट किया गया है. इन सुधारों में, कलेक्शन और स्ट्रिंग के लिए बेहतर कंट्रोल फ़्लो विश्लेषण, बेहतर नल वैल्यू का अनुमान, नए क्विक फ़िक्स वगैरह शामिल हैं.
ज़्यादा जानकारी के लिए, IntelliJ IDEA के 2017.2 और 2017.3 वर्शन के लिए JetBrains के रिलीज़ नोट देखें. साथ ही, बग ठीक करने से जुड़े अपडेट के लिए JetBrains के रिलीज़ नोट देखें.
Room की मदद से SQL में बदलाव करने की सुविधा को बेहतर बनाया गया है
Room डेटाबेस लाइब्रेरी का इस्तेमाल करने पर, SQL में बदलाव करने से जुड़ी कई सुविधाओं का फ़ायदा लिया जा सकता है:
Queryमें कोड पूरा करने की सुविधा उपलब्ध है. यह एसक्यूएल टेबल (इकाइयों), कॉलम, क्वेरी पैरामीटर, एलियास, जॉइन, सबक्वेरी, और WITH क्लॉज़ को समझता है.- अब एसक्यूएल सिंटैक्स को हाइलाइट करने की सुविधा काम करती है.
- SQL में किसी टेबल के नाम पर राइट क्लिक करके, उसका नाम बदला जा सकता है. इससे, उससे जुड़ा Java या Kotlin कोड भी फिर से लिखा जाता है. जैसे, क्वेरी का रिटर्न टाइप. नाम बदलने की प्रोसेस, दूसरी दिशा में भी काम करती है. इसलिए, किसी Java क्लास या फ़ील्ड का नाम बदलने पर, उससे जुड़ा एसक्यूएल कोड फिर से लिखा जाता है.
- इस्तेमाल के उदाहरण ढूंढें सुविधा का इस्तेमाल करने पर, SQL के इस्तेमाल के उदाहरण दिखते हैं. इसके लिए, राइट क्लिक करें और कॉन्टेक्स्ट मेन्यू से इस्तेमाल के उदाहरण ढूंढें चुनें.
- Java या Kotlin कोड में किसी एसक्यूएल इकाई के एलान पर जाने के लिए, इकाई पर क्लिक करते समय Control (Mac पर Command) बटन को दबाकर रखें.
Room के साथ एसक्यूएल का इस्तेमाल करने के बारे में जानकारी पाने के लिए, Room का इस्तेमाल करके, डेटा को किसी स्थानीय डेटाबेस में सेव करना लेख पढ़ें.
डेटा बाइंडिंग से जुड़े अपडेट
इस अपडेट में, डेटा बाइंडिंग से जुड़े कई सुधार किए गए हैं:
-
अब डेटा बाइंडिंग एक्सप्रेशन में,
LiveDataऑब्जेक्ट का इस्तेमाल, ऑब्ज़र्वेबल फ़ील्ड के तौर पर किया जा सकता है.ViewDataBindingक्लास में अब एक नयाsetLifecycle()तरीका शामिल है. इसका इस्तेमालLiveDataऑब्जेक्ट को मॉनिटर करने के लिए किया जाता है. -
अब
ObservableFieldक्लास, अपने कंस्ट्रक्टर में अन्यObservableऑब्जेक्ट स्वीकार कर सकती है. -
डेटा बाइंडिंग क्लास के लिए, इंक्रीमेंटल कंपाइलर का नया वर्शन आज़माया जा सकता है. इस नए कंपाइलर के बारे में ज़्यादा जानने और इसे चालू करने के निर्देशों के लिए, डेटा बाइंडिंग कंपाइलर V2 देखें.
नए कंपाइलर के ये फ़ायदे हैं:
-
ViewBindingक्लास, Java कंपाइलर से पहले Gradle के लिए Android प्लगिन से जनरेट की जाती हैं. - ऐप्लिकेशन को कंपाइल करने पर, लाइब्रेरी अपनी जनरेट की गई बाइंडिंग क्लास को सेव रखती हैं. ऐसा हर बार फिर से जनरेट करने के बजाय किया जाता है. इससे मल्टी-मॉड्यूल प्रोजेक्ट की परफ़ॉर्मेंस को काफ़ी हद तक बेहतर बनाया जा सकता है.
-
कंपाइलर और Gradle
D8, डिफ़ॉल्ट DEX कंपाइलर है
अब DEX बाइटकोड जनरेट करने के लिए, D8 कंपाइलर का इस्तेमाल डिफ़ॉल्ट रूप से किया जाता है.
इस नए DEX कंपाइलर के कई फ़ायदे हैं. इनमें ये शामिल हैं:
- Dexing की प्रोसेस को तेज़ी से पूरा करना
- मेमोरी का इस्तेमाल कम करना
- कोड जनरेट करने की सुविधा को बेहतर बनाया गया है. जैसे, रजिस्टर को बेहतर तरीके से असाइन करना, स्मार्ट स्ट्रिंग टेबल
- कोड की जांच करते समय, डिबग करने का बेहतर अनुभव
इन फ़ायदों को पाने के लिए, आपको अपने कोड या डेवलपमेंट वर्कफ़्लो में कोई बदलाव करने की ज़रूरत नहीं है. हालांकि, अगर आपने पहले D8 कंपाइलर को मैन्युअल तरीके से बंद किया था, तो आपको इसे फिर से चालू करना होगा.
अगर आपने gradle.properties में android.enableD8 को false पर सेट किया है, तो उस फ़्लैग को मिटाएं या उसे true पर सेट करें:
android.enableD8=true
ज़्यादा जानकारी के लिए, नया DEX कंपाइलर देखें.
इंक्रीमेंटल डीसुगरिंग
Java 8 की भाषा से जुड़ी सुविधाओं का इस्तेमाल करने वाले प्रोजेक्ट के लिए, इंक्रीमेंटल डिसुगरिंग की सुविधा डिफ़ॉल्ट रूप से चालू होती है. इससे बिल्ड के समय को कम किया जा सकता है.
डीसुगरिंग, सिंटैक्टिक शुगर को ऐसे फ़ॉर्म में बदलता है जिसे कंपाइलर ज़्यादा आसानी से प्रोसेस कर सकता है.
अपने प्रोजेक्ट की gradle.properties फ़ाइल में यह कोड डालकर, इंक्रीमेंटल डिसुगरिंग की सुविधा बंद की जा सकती है:
android.enableIncrementalDesugaring=false
आसान आउटपुट विंडो
Gradle Console को Build विंडो से बदल दिया गया है. इसमें Sync और Build टैब होते हैं.
बनाएं विंडो के नए और आसान वर्शन को इस्तेमाल करने के तरीके के बारे में जानने के लिए, बनाने की प्रोसेस को मॉनिटर करें लेख पढ़ें.
बैच अपडेट और इंडेक्सिंग की कॉन्करेंसी
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 रिपॉज़िटरी शामिल होनी चाहिए. Android Studio 3.0 और इसके बाद के वर्शन में बनाए गए प्रोजेक्ट के लिए, Maven रिपॉज़िटरी पहले से ही शामिल होती है.
परफ़ॉर्मेंस टूल
सीपीयू प्रोफ़ाइलर की मदद से, नेटिव C++ प्रोसेस के सैंपल लेना
सीपीयू प्रोफ़ाइलर में अब डिफ़ॉल्ट कॉन्फ़िगरेशन शामिल है. इससे आपके ऐप्लिकेशन के नेटिव थ्रेड के सैंपल किए गए ट्रेस रिकॉर्ड किए जा सकते हैं. इस कॉन्फ़िगरेशन का इस्तेमाल करने के लिए, अपने ऐप्लिकेशन को Android 8.0 (एपीआई लेवल 26) या इसके बाद के वर्शन पर चलने वाले डिवाइस पर डिप्लॉय करें. इसके बाद, सीपीयू प्रोफ़ाइलर के रिकॉर्डिंग कॉन्फ़िगरेशन के ड्रॉपडाउन मेन्यू से सैंपल किया गया (नेटिव) चुनें. इसके बाद, सामान्य तरीके से ट्रेस रिकॉर्ड करें और उसकी जांच करें.
रिकॉर्डिंग कॉन्फ़िगरेशन बनाकर, सैंपलिंग इंटरवल जैसी डिफ़ॉल्ट सेटिंग बदली जा सकती हैं.
Java थ्रेड को फिर से ट्रेस करने के लिए, सैंपल किया गया (Java) या इंस्ट्रुमेंट किया गया (Java) कॉन्फ़िगरेशन में से कोई एक चुनें.
सीपीयू ट्रेस, मेमोरी एलॉकेशन के नतीजे, और हीप डंप फ़िल्टर करें
सीपीयू प्रोफ़ाइलर और मेमोरी प्रोफ़ाइलर में, खोज की सुविधा शामिल होती है. इसकी मदद से, किसी तरीके के ट्रेस, मेमोरी ऐलोकेशन या हीप डंप को रिकॉर्ड करने के नतीजों को फ़िल्टर किया जा सकता है.
खोजने के लिए, पैन के सबसे ऊपर दाएं कोने में मौजूद, फ़िल्टर करें
पर क्लिक करें. इसके बाद, अपनी क्वेरी टाइप करें और Enter दबाएं.
अहम जानकारी: खोज फ़ील्ड को खोलने के लिए, Control + F (Mac पर Command + F) भी दबाया जा सकता है.
सीपीयू प्रोफ़ाइलर के फ़्लेम चार्ट टैब में, आपकी खोज क्वेरी से जुड़े तरीकों वाले कॉल स्टैक हाइलाइट किए जाते हैं. साथ ही, उन्हें चार्ट की बाईं ओर ले जाया जाता है.
तरीके, क्लास या पैकेज के नाम के हिसाब से फ़िल्टर करने के बारे में ज़्यादा जानने के लिए, तरीके के ट्रेस रिकॉर्ड करना और उनकी जांच करना लेख पढ़ें.
नेटवर्क प्रोफ़ाइलर में अनुरोध टैब
नेटवर्क प्रोफ़ाइलर में अब अनुरोध टैब शामिल है. इससे चुनी गई टाइमलाइन के दौरान नेटवर्क के अनुरोधों के बारे में जानकारी मिलती है. पिछले वर्शन में, Network Profiler सिर्फ़ नेटवर्क रिस्पॉन्स के बारे में जानकारी देता था.
नेटवर्क प्रोफ़ाइलर में थ्रेड व्यू
नेटवर्क प्रोफ़ाइलर में टाइमलाइन का कोई हिस्सा चुनने के बाद, इनमें से कोई टैब चुना जा सकता है. इससे आपको उस समयावधि के दौरान नेटवर्क गतिविधि के बारे में ज़्यादा जानकारी मिलेगी:
- कनेक्शन व्यू: इसमें Android Studio के पिछले वर्शन की तरह ही जानकारी मिलती है. इसमें उन फ़ाइलों की सूची होती है जिन्हें टाइमलाइन के चुने गए हिस्से के दौरान, आपके ऐप्लिकेशन के सभी सीपीयू थ्रेड में भेजा या पाया गया था. हर अनुरोध के लिए, साइज़, टाइप, स्टेटस, और ट्रांसमिशन की अवधि देखी जा सकती है.
- थ्रेड व्यू: इससे आपके ऐप्लिकेशन के हर सीपीयू थ्रेड की नेटवर्क गतिविधि दिखती है. इस व्यू से यह पता लगाया जा सकता है कि आपके ऐप्लिकेशन के कौनसे थ्रेड, हर नेटवर्क अनुरोध के लिए ज़िम्मेदार हैं.
लेआउट इंस्पेक्टर
लेआउट इंस्पेक्टर में नई सुविधाएं जोड़ी गई हैं. इनमें कुछ ऐसी सुविधाएं भी शामिल हैं जो पहले बंद किए जा चुके Hierarchy Viewer और Pixel Perfect टूल में उपलब्ध थीं:
- लेआउट में नेविगेट करने और उनकी जांच करने के लिए, ज़ूम बटन और कीबोर्ड शॉर्टकट
- रेफ़रंस ग्रिड ओवरले
- रेफ़रंस इमेज लोड करने और उसे ओवरले के तौर पर इस्तेमाल करने की सुविधा. यह सुविधा, अपने लेआउट की तुलना यूज़र इंटरफ़ेस (यूआई) मॉकअप से करने के लिए काम की है
- मुश्किल लेआउट में किसी व्यू को अलग करने के लिए, सबट्री की झलक रेंडर करें
लेआउट एडिटर
लेआउट एडिटर में मौजूद पैलेट में कई सुधार किए गए हैं:
- व्यू और लेआउट के लिए कैटगरी को फिर से व्यवस्थित किया गया है.
- व्यू और लेआउट के लिए नई सामान्य कैटगरी. इसे पसंदीदा कमांड का इस्तेमाल करके जोड़ा जा सकता है.
- व्यू और लेआउट खोजने की बेहतर सुविधा.
- किसी खास व्यू या लेआउट एलिमेंट के लिए, दस्तावेज़ खोलने के नए निर्देश.
कंपोनेंट ट्री या डिज़ाइन एडिटर में, नई व्यू बदलें कमांड का इस्तेमाल करके, किसी व्यू या लेआउट को दूसरे टाइप के व्यू या लेआउट में बदला जा सकता है.
अब चुने गए व्यू के आस-पास मौजूद आइटम के लिए, आसानी से कंस्ट्रेंट बनाए जा सकते हैं. इसके लिए, एट्रिब्यूट विंडो में सबसे ऊपर मौजूद, व्यू इंस्पेक्टर में जाकर, नया कनेक्शन बनाएं
बटन का इस्तेमाल करें.
रन और इंस्टैंट रन
डिप्लॉयमेंट का टारगेट चुनें डायलॉग में, आने वाले समय में लॉन्च होने वाले ऐप्लिकेशन के लिए, इसी सेटिंग का इस्तेमाल करें विकल्प के काम करने के तरीके को बेहतर बनाया गया है. अगर एक ही विकल्प का इस्तेमाल करें विकल्प चालू है, तो डिप्लॉयमेंट टारगेट चुनें डायलॉग बॉक्स सिर्फ़ पहली बार खुलता है. ऐसा तब तक होता है, जब तक चुना गया डिवाइस कनेक्ट रहता है. इसके बाद, चलाएं कमांड का इस्तेमाल किया जाता है.
Android 8.0 (एपीआई लेवल 26) या उसके बाद के वर्शन पर चलने वाले डिवाइस को टारगेट करते समय, Instant Run, ऐप्लिकेशन को रीस्टार्ट किए बिना संसाधनों में बदलाव लागू कर सकता है. ऐसा इसलिए हो पाता है, क्योंकि संसाधन स्प्लिट किए गए APK में शामिल होते हैं.
एम्युलेटर
Android Studio 3.0 के बाद से, एम्युलेटर में हुए नए बदलावों के बारे में जानने के लिए, Android Emulator के रिलीज़ नोट देखें. ये रिलीज़ नोट, वर्शन 27.0.2 से लेकर वर्शन 27.1.12 तक के हैं.
मुख्य सुधारों में ये शामिल हैं:
- इमुलेटर की स्थिति को सेव करने और तेज़ी से शुरू करने के लिए, क्विक बूट स्नैपशॉट. इसमें अभी सेव करें कमांड का इस्तेमाल करके, कस्टम स्टार्ट स्टेट सेव करने की सुविधा होती है.
- विंडोलेस एम्युलेटर स्क्रीन.
- Android 8.0 (एपीआई लेवल 26), Android 8.1 (एपीआई लेवल 27), और Android P Developer Preview के लिए सिस्टम इमेज.
यूज़र इंटरफ़ेस और उपयोगकर्ता अनुभव में सुधार
ज़्यादा टूलटिप, कीबोर्ड शॉर्टकट, और मददगार मैसेज
हमने Android Studio में कई जगहों पर टूलटिप और मददगार मैसेज ओवरले जोड़े हैं.
कई कमांड के लिए कीबोर्ड शॉर्टकट देखने के लिए, माउस पॉइंटर को किसी बटन पर तब तक घुमाएं, जब तक टूलटिप न दिख जाए.
टूल > Android मेन्यू हटाया गया
टूल > Android मेन्यू हटा दिया गया है. इस मेन्यू में मौजूद कमांड को दूसरी जगह ले जाया गया है.
- कई कमांड को सीधे टूल मेन्यू में ले जाया गया है.
- Sync project with gradle files कमांड को File मेन्यू में ले जाया गया है.
- डिवाइस मॉनिटर करें कमांड को हटा दिया गया है. इसके बारे में यहां बताया गया है.
डिवाइस मॉनिटर, कमांड लाइन से उपलब्ध है
Android Studio 3.1 में, डिवाइस मॉनिटर की भूमिका पहले की तुलना में कम हो गई है. कई मामलों में, डिवाइस मॉनिटर की मदद से उपलब्ध कराई जाने वाली सुविधा अब नए और बेहतर टूल के ज़रिए उपलब्ध कराई जाती है.
कमांड लाइन से डिवाइस मॉनिटर को चालू करने के निर्देशों और डिवाइस मॉनिटर के ज़रिए उपलब्ध टूल की जानकारी के लिए, डिवाइस मॉनिटर का दस्तावेज़ देखें.
3.0 (अक्टूबर 2017)
Android Studio 3.0.0 एक मुख्य रिलीज़ है. इसमें कई नई सुविधाएं और सुधार शामिल हैं.
macOS का इस्तेमाल करने वाले लोग: अगर Android Studio के पुराने वर्शन को अपडेट किया जा रहा है, तो आपको अपडेट से जुड़ी गड़बड़ी का एक डायलॉग दिख सकता है. इसमें लिखा होगा कि "इंस्टॉलेशन एरिया में कुछ समस्याएं मिली हैं". इस गड़बड़ी को अनदेखा करें और इंस्टॉलेशन जारी रखने के लिए, रद्द करें पर क्लिक करें.
3.0.1 (नवंबर 2017)
यह Android Studio 3.0 का एक छोटा अपडेट है. इसमें सामान्य गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस में सुधार किए गए हैं.
Gradle के लिए Android प्लगिन 3.0.0
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 से माइग्रेट करना लेख पढ़ें.
क्या-क्या बदलाव हुए हैं, इस बारे में ज़्यादा जानने के लिए, Android Plugin for Gradle के रिलीज़ नोट देखें.
अगर आपको नए प्लगिन पर अपग्रेड करना है, तो Android Plugin for Gradle 3.0.0 पर माइग्रेट करना लेख पढ़ें.
Kotlin के साथ काम करने की सुविधा
Google I/O 2017 में की गई घोषणा के मुताबिक, Kotlin प्रोग्रामिंग लैंग्वेज अब आधिकारिक तौर पर Android पर काम करती है. इसलिए, इस रिलीज़ के साथ Android Studio में, Android डेवलपमेंट के लिए Kotlin लैंग्वेज का सपोर्ट शामिल है.
Java फ़ाइल को Kotlin में बदलकर, अपने प्रोजेक्ट में Kotlin को शामिल किया जा सकता है. इसके लिए, कोड > Java फ़ाइल को Kotlin फ़ाइल में बदलें पर क्लिक करें. इसके अलावा, 'नया प्रोजेक्ट' विज़र्ड का इस्तेमाल करके, Kotlin की सुविधा वाला नया प्रोजेक्ट बनाया जा सकता है.
शुरू करने के लिए, अपने प्रोजेक्ट में Kotlin जोड़ने का तरीका जानें.
Java 8 की भाषा से जुड़ी सुविधाओं के साथ काम करता है
अब Java 8 की कुछ भाषा सुविधाओं का इस्तेमाल किया जा सकता है. साथ ही, Java 8 की मदद से बनाई गई लाइब्रेरी का इस्तेमाल किया जा सकता है. जैक की अब ज़रूरत नहीं है. इसलिए, डिफ़ॉल्ट टूलचेन में शामिल बेहतर Java 8 सपोर्ट का इस्तेमाल करने के लिए, आपको पहले जैक को बंद करना होगा.
अपने प्रोजेक्ट को Java 8 के नए लैंग्वेज टूलचेन के साथ काम करने के लिए अपडेट करने के लिए, प्रोजेक्ट स्ट्रक्चर डायलॉग में सोर्स कंपैटिबिलिटी और टारगेट कंपैटिबिलिटी को 1.8 पर अपडेट करें. इसके लिए, फ़ाइल > प्रोजेक्ट स्ट्रक्चर पर क्लिक करें. ज़्यादा जानने के लिए, Java 8 की भाषा से जुड़ी सुविधाओं का इस्तेमाल करने का तरीका जानें.
Android Profiler
नया Android Profiler, Android Monitor टूल की जगह लेता है. साथ ही, यह टूल का एक नया सुइट उपलब्ध कराता है. इसकी मदद से, रीयलटाइम में अपने ऐप्लिकेशन के सीपीयू, मेमोरी, और नेटवर्क के इस्तेमाल का आकलन किया जा सकता है. आपके पास सैंपल पर आधारित तरीके से कोड के एक्ज़ीक्यूशन में लगने वाले समय का पता लगाने, हीप डंप कैप्चर करने, मेमोरी के बंटवारे को देखने, और नेटवर्क से ट्रांसमिट की गई फ़ाइलों की जानकारी की जांच करने का विकल्प होता है.
इसे खोलने के लिए, व्यू > टूल विंडो > Android Profiler पर क्लिक करें या टूलबार में मौजूद Android Profiler पर क्लिक करें.
विंडो में सबसे ऊपर मौजूद इवेंट टाइमलाइन में, टच इवेंट, कीबोर्ड बटन दबाने की कार्रवाइयां, और गतिविधि में हुए बदलाव दिखते हैं. इससे आपको टाइमलाइन में मौजूद अन्य परफ़ॉर्मेंस इवेंट को समझने में मदद मिलती है.
ध्यान दें: Logcat व्यू को भी एक अलग विंडो में ले जाया गया है. यह पहले Android Monitor में था, जिसे हटा दिया गया है.
Android Profiler की खास जानकारी वाली टाइमलाइन में, CPU, MEMORY या NETWORK टाइमलाइन पर क्लिक करके, इससे जुड़े Profiler टूल ऐक्सेस करें.
सीपीयू प्रोफ़ाइलर
सीपीयू प्रोफ़ाइलर की मदद से, अपने ऐप्लिकेशन के सीपीयू थ्रेड के इस्तेमाल का विश्लेषण किया जा सकता है. इसके लिए, आपको सीपीयू के सैंपल या इंस्ट्रुमेंट किए गए सीपीयू ट्रेस को ट्रिगर करना होगा. इसके बाद, अलग-अलग डेटा व्यू और फ़िल्टर का इस्तेमाल करके, सीपीयू की परफ़ॉर्मेंस से जुड़ी समस्याओं को हल किया जा सकता है.
ज़्यादा जानकारी के लिए, सीपीयू प्रोफ़ाइलर गाइड देखें.
मेमोरी प्रोफ़ाइलर
मेमोरी प्रोफ़ाइलर की मदद से, मेमोरी लीक और मेमोरी चर्न का पता लगाया जा सकता है. इनकी वजह से, ऐप्लिकेशन में रुकावटें आ सकती हैं, वह फ़्रीज़ हो सकता है, और क्रैश भी हो सकता है. यह आपके ऐप्लिकेशन की मेमोरी के इस्तेमाल का रीयलटाइम ग्राफ़ दिखाता है. इससे आपको हीप डंप कैप्चर करने, गार्बेज कलेक्शन को लागू करने, और मेमोरी के बंटवारे को ट्रैक करने में मदद मिलती है.
ज़्यादा जानकारी के लिए, मेमोरी प्रोफ़ाइलर गाइड देखें.
Network Profiler
नेटवर्क प्रोफ़ाइलर की मदद से, अपने ऐप्लिकेशन की नेटवर्क गतिविधि पर नज़र रखी जा सकती है. साथ ही, नेटवर्क के हर अनुरोध के पेलोड की जांच की जा सकती है. इसके अलावा, नेटवर्क का अनुरोध जनरेट करने वाले कोड से वापस लिंक किया जा सकता है.
ज़्यादा जानकारी के लिए, Network Profiler गाइड देखें.
APK की प्रोफ़ाइलिंग और डीबग करना
Android Studio अब आपको किसी भी APK को प्रोफ़ाइल करने और डीबग करने की सुविधा देता है. इसके लिए, आपको उसे Android Studio प्रोजेक्ट से बनाने की ज़रूरत नहीं है. हालांकि, इसके लिए ज़रूरी है कि APK को डीबग करने की सुविधा चालू करने के लिए बनाया गया हो और आपके पास डीबग सिंबल और सोर्स फ़ाइलों का ऐक्सेस हो.
शुरू करने के लिए, Android Studio की वेलकम स्क्रीन पर मौजूद, प्रोफ़ाइल या डीबग APK पर क्लिक करें. इसके अलावा, अगर आपने पहले से ही कोई प्रोजेक्ट खोला हुआ है, तो मेन्यू बार में जाकर, फ़ाइल > प्रोफ़ाइल या डीबग APK पर क्लिक करें. इससे अनपैक की गई APK फ़ाइलें दिखती हैं. हालांकि, इससे कोड को डीकंपाइल नहीं किया जाता. इसलिए, ब्रेकपॉइंट जोड़ने और स्टैक ट्रेस देखने के लिए, आपको Java सोर्स फ़ाइलें और नेटिव डीबग सिंबल अटैच करने होंगे.
ज़्यादा जानकारी के लिए, पहले से बने APK की प्रोफ़ाइल बनाना और उन्हें डीबग करना लेख पढ़ें.
डिवाइस फ़ाइल एक्सप्लोरर
डिवाइस फ़ाइल एक्सप्लोरर की नई सुविधा की मदद से, कनेक्ट किए गए डिवाइस के फ़ाइल सिस्टम की जांच की जा सकती है. साथ ही, डिवाइस और कंप्यूटर के बीच फ़ाइलें ट्रांसफ़र की जा सकती हैं. यह DDMS में उपलब्ध फ़ाइल सिस्टम टूल की जगह ले लेता है.
इसे खोलने के लिए, व्यू > टूल विंडो > डिवाइस फ़ाइल एक्सप्लोरर पर क्लिक करें.
ज़्यादा जानकारी के लिए, डिवाइस फ़ाइल एक्सप्लोरर गाइड देखें.
Instant Apps की सुविधा
Android Instant Apps के लिए नई सुविधा उपलब्ध है. इसकी मदद से, अपने प्रोजेक्ट में इंस्टेंट ऐप्लिकेशन बनाए जा सकते हैं. इसके लिए, दो नए मॉड्यूल टाइप का इस्तेमाल करें: इंस्टेंट ऐप्लिकेशन मॉड्यूल और फ़ीचर मॉड्यूल. इनका इस्तेमाल करने के लिए, आपको Instant Apps Development SDK इंस्टॉल करना होगा.
Android Studio में, मॉड्यूलर बनाने के लिए रिफ़ैक्टरिंग की नई सुविधा भी शामिल है. इससे आपको किसी मौजूदा प्रोजेक्ट में इंस्टेंट ऐप्लिकेशन की सुविधा जोड़ने में मदद मिलती है. उदाहरण के लिए, अगर आपको अपने प्रोजेक्ट को फिर से व्यवस्थित करना है, ताकि कुछ क्लास को इंस्टेंट ऐप्लिकेशन के फ़ीचर मॉड्यूल में रखा जा सके, तो प्रोजेक्ट विंडो में क्लास चुनें. इसके बाद, फिर से व्यवस्थित करें > मॉड्यूल बनाएं पर क्लिक करें. इसके बाद, आपको एक डायलॉग बॉक्स दिखेगा. इसमें वह मॉड्यूल चुनें जिसमें क्लास जोड़नी हैं. इसके बाद, ठीक है पर क्लिक करें.
जब आपका इंस्टेंट ऐप्लिकेशन टेस्ट करने के लिए तैयार हो जाए, तब उसे कनेक्ट किए गए डिवाइस पर बनाया और चलाया जा सकता है. इसके लिए, रन कॉन्फ़िगरेशन लॉन्च करने के विकल्पों में जाकर, इंस्टेंट ऐप्लिकेशन का यूआरएल डालें: चलाएं > कॉन्फ़िगरेशन में बदलाव करें को चुनें. इसके बाद, अपना इंस्टेंट ऐप्लिकेशन मॉड्यूल चुनें. फिर, लॉन्च करने के विकल्प में जाकर यूआरएल सेट करें.
ज़्यादा जानकारी के लिए, Android Instant Apps देखें.
Android Things मॉड्यूल
'नया प्रोजेक्ट' और 'नया मॉड्यूल' विज़र्ड में Android Things के नए टेंप्लेट. इससे आपको Android पर चलने वाले आईओटी डिवाइसों के लिए डेवलपमेंट शुरू करने में मदद मिलेगी.
ज़्यादा जानकारी के लिए, Android Things प्रोजेक्ट बनाने का तरीका देखें.
Adaptive Icons विज़र्ड
इमेज ऐसेट स्टूडियो अब वेक्टर ड्रॉएबल के साथ काम करता है. साथ ही, यह आपको Android 8.0 के लिए अडैप्टिव लॉन्चर आइकॉन बनाने की सुविधा देता है. इसके अलावा, यह पुराने डिवाइसों के लिए पारंपरिक आइकॉन ("लेगसी" आइकॉन) भी बनाता है.
शुरू करने के लिए, अपने प्रोजेक्ट में मौजूद res फ़ोल्डर पर राइट-क्लिक करें. इसके बाद, New > Image Asset पर क्लिक करें. ऐसेट स्टूडियो विंडो में, आइकॉन टाइप के तौर पर लॉन्चर आइकॉन (ऐडैप्टिव और लेगसी) चुनें.
ध्यान दें: अडैप्टिव लॉन्चर आइकॉन का इस्तेमाल करने के लिए, आपको compileSdkVersion को 26 या उससे ज़्यादा पर सेट करना होगा.
ज़्यादा जानकारी के लिए, अडैप्टिव आइकॉन के बारे में पढ़ें.
फ़ॉन्ट रिसॉर्स के लिए सहायता
Android 8.0 में नए फ़ॉन्ट रिसॉर्स का इस्तेमाल करने के लिए, Android Studio में फ़ॉन्ट रिसॉर्स सिलेक्टर शामिल है. इससे, फ़ॉन्ट को अपने ऐप्लिकेशन में बंडल करने या डिवाइस पर फ़ॉन्ट डाउनलोड करने के लिए अपने प्रोजेक्ट को कॉन्फ़िगर करने में मदद मिलती है. लेआउट एडिटर, आपके लेआउट में फ़ॉन्ट की झलक भी देख सकता है.
डाउनलोड किए जा सकने वाले फ़ॉन्ट आज़माने के लिए, पक्का करें कि आपके डिवाइस या एम्युलेटर में Google Play services v11.2.63 या इसके बाद का वर्शन चल रहा हो. ज़्यादा जानकारी के लिए, डाउनलोड किए जा सकने वाले फ़ॉन्ट के बारे में पढ़ें.
Firebase App Indexing Assistant
Firebase Assistant को अपडेट कर दिया गया है. इसमें ऐप्लिकेशन इंडेक्सिंग की जांच करने के लिए नया ट्यूटोरियल जोड़ा गया है. Assistant खोलने के लिए, Tools > 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" को भी शामिल करना न भूलें.
अगर टेस्ट किए गए यूआरएल में से कोई भी यूआरएल, इंटेंट फ़िल्टर की परिभाषा के मुताबिक नहीं है, तो लिंट की गड़बड़ी दिखेगी. इस तरह की गड़बड़ी के बावजूद, डीबग वैरिएंट बनाए जा सकते हैं. हालांकि, इससे रिलीज़ बिल्ड में गड़बड़ी होगी.
लेआउट एडिटर
लेआउट एडिटर को अपडेट किया गया है. इसमें कई सुधार किए गए हैं. इनमें ये शामिल हैं:
- नया टूलबार लेआउट और आइकॉन.
- कॉम्पोनेंट ट्री में लेआउट अपडेट किया गया.
- खींचें और छोड़ें सुविधा का इस्तेमाल करके व्यू डालने की सुविधा को बेहतर बनाया गया है.
- एडिटर के नीचे नया गड़बड़ी पैनल. इसमें सभी समस्याएं दिखती हैं. साथ ही, उन्हें ठीक करने के सुझाव भी मिलते हैं (अगर उपलब्ध हों).
ConstraintLayoutकी मदद से बनाने के लिए, यूज़र इंटरफ़ेस (यूआई) को बेहतर बनाया गया है. इसमें ये शामिल हैं:- बाधाएं बनाने के लिए नई सुविधा.
- ग्रुप बनाने की नई सुविधा: टूलबार में, दिशा-निर्देश > ग्रुप जोड़ें चुनें. इसके लिए, ConstraintLayout 1.1.0 beta 2 या इससे ऊपर का वर्शन ज़रूरी है
- चेन बनाने के लिए नया यूज़र इंटरफ़ेस (यूआई): एक से ज़्यादा व्यू चुनें. इसके बाद, राइट क्लिक करें और चेन चुनें.
लेआउट इंस्पेक्टर
लेआउट इंस्पेक्टर में ये सुधार किए गए हैं: इनकी मदद से, ऐप्लिकेशन के लेआउट से जुड़ी समस्याओं को डीबग करना आसान हो जाता है. इनमें ये शामिल हैं: प्रॉपर्टी को सामान्य कैटगरी में ग्रुप करना और व्यू ट्री और प्रॉपर्टी पैन, दोनों में नई खोज सुविधा जोड़ना.
APK ऐनालाइज़र
अब apkanalyzer टूल की मदद से, कमांड लाइन से APK Analyzer का इस्तेमाल किया जा सकता है.
APK ऐनालाइज़र को भी अपडेट किया गया है. इसमें ये सुधार किए गए हैं:
- ProGuard की मदद से बनाए गए APK के लिए, ProGuard मैपिंग फ़ाइलें लोड की जा सकती हैं. इनसे DEX व्यूअर में ये सुविधाएं जोड़ी जा सकती हैं:
- बोल्ड किए गए नोड से पता चलता है कि कोड को छोटा करते समय, नोड नहीं हटाए जाने चाहिए.
- यह बटन, उन नोड को दिखाता है जिन्हें छोटा करने की प्रोसेस के दौरान हटाया गया था.
- यह एक बटन है. इसकी मदद से, ट्री व्यू में नोड के उन ओरिजनल नामों को वापस लाया जा सकता है जिन्हें ProGuard ने छिपा दिया था.
- DEX Viewer अब हर पैकेज, क्लास, और तरीके के अनुमानित साइज़ पर पड़ने वाले असर को दिखाता है.
- फ़ील्ड और तरीकों को दिखाने और छिपाने के लिए, सबसे ऊपर फ़िल्टर करने के नए विकल्प.
- ट्री व्यू में, DEX फ़ाइल में तय नहीं किए गए रेफ़रंस वाले नोड, इटैलिक में दिखते हैं.
ज़्यादा जानकारी के लिए, APK Analyzer की मदद से अपने बिल्ड का विश्लेषण करना लेख पढ़ें.
D8 DEX कंपाइलर के लिए झलक
Android Studio 3.0 में, D8 नाम का एक नया DEX कंपाइलर शामिल है. हालांकि, यह वैकल्पिक है. यह आखिर में DX कंपाइलर की जगह ले लेगा. हालांकि, अभी नए D8 कंपाइलर का इस्तेमाल करने के लिए ऑप्ट-इन किया जा सकता है.
DEX कंपाइलेशन से, आपके ऐप्लिकेशन के बिल्ड टाइम, .dex फ़ाइल
साइज़, और रनटाइम परफ़ॉर्मेंस पर सीधा असर पड़ता है. नए D8 कंपाइलर की तुलना मौजूदा DX कंपाइलर से करने पर पता चलता है कि D8, DX के मुकाबले ज़्यादा तेज़ी से कंपाइल करता है और छोटी .dex फ़ाइलें बनाता है. साथ ही, ऐप्लिकेशन के रनटाइम की परफ़ॉर्मेंस भी DX के बराबर या उससे बेहतर होती है.
इसे आज़माने के लिए, अपने प्रोजेक्ट की gradle.properties फ़ाइल में यह सेट करें:
android.enableD8=true
ज़्यादा जानकारी के लिए, D8 कंपाइलर के बारे में ब्लॉग पोस्ट पढ़ें.
Google की Maven रिपॉज़िटरी
Android Studio अब डिफ़ॉल्ट रूप से, Google की Maven रिपॉज़िटरी का इस्तेमाल करता है. इसके बजाय, Android Support Library, Google Play services, Firebase, और अन्य डिपेंडेंसी के अपडेट पाने के लिए, Android SDK Manager पर निर्भर रहता है. इससे, अपनी लाइब्रेरी को अप-टू-डेट रखना आसान हो जाता है. खास तौर पर, जब कंटीन्यूअस इंटिग्रेशन (सीआई) सिस्टम का इस्तेमाल किया जा रहा हो.
अब सभी नए प्रोजेक्ट में, Google Maven रिपॉज़िटरी डिफ़ॉल्ट रूप से शामिल होती है. अपने मौजूदा प्रोजेक्ट को अपडेट करने के लिए, टॉप-लेवल की build.gradle फ़ाइल के repositories ब्लॉक में google() जोड़ें:
allprojects {
repositories {
google()
}
}
Google की Maven रिपॉज़िटरी के बारे में यहां ज़्यादा जानें.
अन्य बदलाव
- Android Studio में नेटिव डिबगिंग की सुविधा, अब Windows के 32-बिट वर्शन के साथ काम नहीं करती. हमारा फ़ोकस अब दूसरे प्लैटफ़ॉर्म पर है, क्योंकि बहुत कम डेवलपर इस प्लैटफ़ॉर्म का इस्तेमाल कर रहे हैं. अगर 32-बिट Windows का इस्तेमाल किया जा रहा है और आपको नेटिव कोड को डीबग करना है, तो आपको Android Studio 2.3 का इस्तेमाल जारी रखना चाहिए.
- बेस IDE को IntelliJ 2017.1.2 पर अपग्रेड किया गया है. इससे 2016.3 और 2017.1 की कई नई सुविधाएं जोड़ी गई हैं. जैसे, Java 8 की भाषा को फिर से व्यवस्थित करना, पैरामीटर के बारे में जानकारी, सिमैंटिक हाइलाइटिंग, ड्रैग किए जा सकने वाले ब्रेकपॉइंट, खोज में तुरंत नतीजे मिलना वगैरह.
- कई नए लिंट चेक जोड़े गए.
- Android Emulator के नए अपडेट भी देखें.
2.3 (मार्च 2017)
Android Studio 2.3.0 मुख्य रूप से गड़बड़ियों को ठीक करने और इसे ज़्यादा भरोसेमंद बनाने के लिए रिलीज़ किया गया है. हालांकि, इसमें कई नई सुविधाएं भी शामिल हैं.
2.3.3 (जून 2017)
यह एक छोटा-सा अपडेट है. इससे Android O (एपीआई लेवल 26) के लिए सहायता जोड़ी गई है.
2.3.2 (अप्रैल 2017)
यह Android Studio 2.3 का एक छोटा अपडेट है. इसमें ये बदलाव किए गए हैं:
- सिस्टम इमेज में Google Play को सपोर्ट करने के लिए, AVD Manager अपडेट किया गया है.
- NDK के R14 या इसके बाद के वर्शन का इस्तेमाल करते समय, NDK बिल्ड से जुड़ी गड़बड़ियों को ठीक किया गया है.
Android Emulator 26.0.3 के लिए, इससे जुड़े अपडेट भी देखें.
2.3.1 (अप्रैल 2017)
यह Android Studio 2.3 का एक छोटा-सा अपडेट है. इसमें एक ऐसी समस्या को ठीक किया गया है जिसमें कुछ Android डिवाइसों पर Instant Run की सुविधा ठीक से काम नहीं करती थी. इसके बारे में ज़्यादा जानने के लिए, समस्या #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 को सपोर्ट करने के लिए, कस्टम तौर पर बनाए गए टूल के साथ नया Layout Editor.
<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 पर अपडेट किया गया
- अब इंस्टेंट रन के लिए, टारगेट डिवाइस के एपीआई लेवल के हिसाब से प्लैटफ़ॉर्म एसडीके इंस्टॉल करना ज़रूरी है.
- अगर उपयोगकर्ता, ऐप्लिकेशन को वर्क प्रोफ़ाइल या सेकंडरी उपयोगकर्ता के तौर पर चला रहा है, तो इंस्टेंट रन की सुविधा अपने-आप बंद हो जाएगी.
- इंस्टेंट रन की कई समस्याओं को ठीक किया गया है. इन समस्याओं में, बदलाव लागू न होना या ऐप्लिकेशन क्रैश होना शामिल है:
- कुछ ऐप्लिकेशन ऐसेट, आपके चालू ऐप्लिकेशन में डिप्लॉय नहीं की गई हैं. ( बग: #213454)
- जब उपयोगकर्ता, इंस्टैंट रन और नॉन इंस्टैंट रन सेशन के बीच ट्रांज़िशन करता है, तब ऐप्लिकेशन क्रैश हो जाता है. ऐसा तब होता है, जब किसी Serializable क्लास में serialVersionUID तय नहीं किया गया हो. (बग: #209006)
- स्टाइल में किए गए बदलाव, Instant Run के साथ नहीं दिखते. (बग: #210851)
- इंस्टेंट रन सेशन भरोसेमंद नहीं है और इसकी वजह से FileNotFoundException होता है. (बग: #213083)
- KitKat के लिए, पूरी तरह से फिर से बनाए जाने तक ड्रॉएबल में किए गए बदलाव नहीं दिखते. (बग: #21530)
- जब कस्टम sourceSets में नेस्ट किए गए पाथ शामिल होते हैं, तब Instant Run के साथ संसाधन में किए गए बदलाव नहीं दिखते. (गड़बड़ी: #219145)
- अगर बदली गई क्लास में एनोटेशन मौजूद है, तो हॉट और वार्म स्वैप काम नहीं करते. (बग: #209047)
- एनोटेशन डेटा में किए गए बदलाव, Instant Run के साथ नहीं दिखते. (बग: #210089)
- अगर आईडीई के बाहर कोड में बदलाव किए जाते हैं, तो Instant Run उन बदलावों को नहीं पहचानता. (बग: #213205)
- सुरक्षा टोकन के मेल न खाने की वजह से, इंस्टेंट रन सेशन भरोसेमंद नहीं है. (बग: #211989
- जिन डिवाइसों पर रन-ऐज़ की सुविधा ठीक से काम नहीं करती है उन पर कोल्ड स्वैप की सुविधा काम नहीं करती. (बग: #210875)
- इंस्टेंट रन की सुविधा को रीस्टार्ट करने के बाद, ऐप्लिकेशन क्रैश हो जाता है. (बग: #219744)
- Instant Run से Instant Debug पर स्विच करते समय, 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 के लिए Android प्लगिन 2.1.3 पर अपग्रेड करने के लिए कहता है. 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 कंपाइलर चालू करने पर, Instant Run बंद हो जाता है. ऐसा इसलिए, क्योंकि फ़िलहाल ये दोनों एक-दूसरे के साथ काम नहीं करते.
Android Studio 2.1 अब स्टेबल हो गया है. हालांकि, Jack कंपाइलर अब भी एक्सपेरिमेंट के तौर पर उपलब्ध है. इसे चालू करने के लिए, आपको अपनी build.gradle फ़ाइल में jackOptions प्रॉपर्टी का इस्तेमाल करना होगा.
Android Studio 2.1 में, N Preview के साथ काम करने के लिए किए गए बदलावों के अलावा, कुछ गड़बड़ियां ठीक की गई हैं. साथ ही, इसमें ये सुधार किए गए हैं:
- अगर N डिवाइस या एम्युलेटर का इस्तेमाल किया जा रहा है और आपने नेटिव डीबगर मोड चुना है, तो Java-aware C++ डीबगर अब डिफ़ॉल्ट रूप से चालू हो जाता है. यह मोड, रन/डीबग कॉन्फ़िगरेशन के लिए डीबगर टैब में मौजूद होता है.
बिल्ड को बेहतर बनाने वाली अन्य सुविधाओं के लिए, 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 या उसके बाद के वर्शन पर चल रहे डिवाइस की ज़रूरत होती है.
- इंस्टेंट रन के बारे में ज़्यादा जानने के लिए, दस्तावेज़ पढ़ें.
ध्यान दें: इंस्टेंट रन की सुविधा सिर्फ़ तब काम करती है, जब आपने डिबग बिल्ड वैरिएंट को डिप्लॉय किया हो, Android प्लगिन फ़ॉर Gradle 2.0.0 वर्शन या उसके बाद के वर्शन का इस्तेमाल किया हो, और अपने ऐप्लिकेशन के मॉड्यूल-लेवल
build.gradleफ़ाइल कोminSdkVersion 15या उसके बाद के वर्शन के लिए कॉन्फ़िगर किया हो. बेहतर परफ़ॉर्मेंस के लिए, अपने ऐप्लिकेशन कोminSdkVersion 21या इससे ज़्यादा के लिए कॉन्फ़िगर करें.
Lint में नई सुविधाएं जोड़ी गई हैं:
switchएनोटेट किए गए पूर्णांकों का इस्तेमाल करके,switchस्टेटमेंट की जांच करना, ताकि यह पक्का किया जा सके कि सभी कॉन्स्टेंट हैंडल किए गए हैं.@IntDefअगर कोई स्टेटमेंट मौजूद नहीं है, तो उसे तुरंत जोड़ने के लिए, इंटेंशन ऐक्शन ड्रॉप-डाउन मेन्यू का इस्तेमाल करें. इसके बाद, Add Missing @IntDef Constants चुनें.build.gradleफ़ाइल में वर्शन नंबर डालने के लिए, स्ट्रिंग इंटरपोलेशन का गलत तरीके से इस्तेमाल करने पर फ़्लैग.- गुमनाम क्लास के लिए फ़्लैग, जो
Fragmentक्लास को बढ़ाते हैं. - असुरक्षित जगहों पर मौजूद नेटिव कोड के लिए फ़्लैग. जैसे,
res/औरasset/फ़ोल्डर. इस फ़्लैग से, नेटिव कोड कोlibs/फ़ोल्डर में सेव करने के लिए कहा जाता है. इसके बाद, इंस्टॉल करने के समय इसे ऐप्लिकेशन केdata/app-lib/फ़ोल्डर में सुरक्षित तरीके से पैकेज किया जाता है. AOSP: #169950 Runtime.load()औरSystem.load()से किए गए असुरक्षित कॉल के लिए फ़्लैग. AOSP: #179980- मेन्यू बार में जाकर, Refactor > Remove
Unused Resources को चुनें. इससे, इस्तेमाल न किए गए सभी संसाधनों को ढूंढा जा सकता है और उन्हें हटाया जा सकता है. अब इस्तेमाल न किए गए संसाधन का पता लगाने की सुविधा, सिर्फ़ उन संसाधनों के साथ काम करती है जिन्हें इस्तेमाल न किए गए संसाधनों से रेफ़र किया गया है. साथ ही, यह सुविधा रॉ फ़ाइलों में मौजूद रेफ़रंस के साथ भी काम करती है. जैसे,
.htmlइमेज रेफ़रंस,tools:keepऔरtools:discardएट्रिब्यूट, जिनका इस्तेमाल Gradle resource shrinker करता है. यह सुविधा, इनऐक्टिव सोर्स सेट (जैसे, अन्य बिल्ड फ़्लेवर में इस्तेमाल किए गए संसाधन) को ध्यान में रखती है और स्टैटिक फ़ील्ड इंपोर्ट को सही तरीके से हैंडल करती है. - इसकी मदद से यह जांच की जाती है कि
minSdkVersionसे टारगेट किए गए सभी प्लैटफ़ॉर्म पर, एपीआई के इंप्लिसिट रेफ़रंस काम करते हैं या नहीं. - यह
RecyclerViewऔरParcelableके गलत इस्तेमाल के बारे में सूचना देता है. @IntDef,@IntRange, और@Sizeकी जांच अबintऐरे और varargs के लिए भी की जाती है.
अन्य सुधार:
- Android Emulator 2.0 के लिए ऑप्टिमाइज़ किया गया है. यह पहले से ज़्यादा तेज़ है. साथ ही, यह ज़्यादा वर्चुअल डिवाइसों के साथ काम करता है और इसमें यूज़र इंटरफ़ेस (यूआई) को बेहतर बनाया गया है. नए एम्युलेटर के बारे में ज़्यादा जानने के लिए, SDK टूल के रिलीज़ नोट पढ़ें.
- Android वर्चुअल डिवाइस मैनेजर में ये सुधार किए गए हैं:
- सिस्टम इमेज को अब इन टैब में बांटा गया है: सुझाई गई, x86, और अन्य.
- ऐडवांस सेटिंग में जाकर, मल्टी-कोर सपोर्ट की सुविधा चालू की जा सकती है. साथ ही, यह तय किया जा सकता है कि एम्युलेटर कितने कोर का इस्तेमाल कर सकता है.
- बेहतर सेटिंग में जाकर, यह तय किया जा सकता है कि एम्युलेटर पर ग्राफ़िक कैसे रेंडर किए जाएं. इसके लिए, इनमें से कोई एक विकल्प चुनें:
- हार्डवेयर: रेंडरिंग को तेज़ करने के लिए, कंप्यूटर के ग्राफ़िक्स कार्ड का इस्तेमाल करें.
- सॉफ़्टवेयर: सॉफ़्टवेयर पर आधारित रेंडरिंग का इस्तेमाल करें.
- अपने-आप: एम्युलेटर को सबसे सही विकल्प चुनने दें. यह डिफ़ॉल्ट सेटिंग है.
- ऐप्लिकेशन बनाने से पहले डिप्लॉय टारगेट तय करके, AAPT पैकेजिंग के समय को कम किया गया. इससे Android Studio को सिर्फ़ उस डिवाइस के लिए ज़रूरी रिसॉर्स को पैकेज करने में मदद मिलती है जिसके लिए यह विकल्प चुना गया है.
- Cloud Test Lab इंटिग्रेशन जोड़ा गया है, ताकि क्लाउड सेवा की सुविधा और बड़े पैमाने पर ऐप्लिकेशन की टेस्टिंग की जा सके. इस बारे में ज़्यादा जानें कि Android Studio के साथ Cloud Test Lab का इस्तेमाल कैसे किया जा सकता है.
- नए GPU Debugger की झलक जोड़ी गई. ग्राफ़िक इंटेंसिव ऐप्लिकेशन के लिए, अब अपने ऐप्लिकेशन या गेम को ऑप्टिमाइज़ करने के लिए, अपने OpenGL ES कोड को विज़ुअली स्टेप थ्रू किया जा सकता है.
- Google ऐप्लिकेशन इंडेक्सिंग टेस्ट जोड़ा गया. अपने ऐप्लिकेशन में यूआरएल, ऐप्लिकेशन इंडेक्सिंग, और खोज की सुविधा जोड़ें. इससे आपको अपने ऐप्लिकेशन पर ज़्यादा ट्रैफ़िक लाने, यह पता लगाने कि ऐप्लिकेशन के किस कॉन्टेंट का सबसे ज़्यादा इस्तेमाल किया जाता है, और नए उपयोगकर्ताओं का ध्यान खींचने में मदद मिलेगी. Android Studio में ही, अपने ऐप्लिकेशन में यूआरएल की जांच करें और उनकी पुष्टि करें. Android Studio में यूआरएल और ऐप्लिकेशन इंडेक्सिंग की सुविधा देखें.
- IntelliJ 15 के नए वर्शन से अपग्रेड किया गया है. इसमें कोड के विश्लेषण और परफ़ॉर्मेंस को बेहतर बनाया गया है. नई सुविधाओं और बेहतर बनाने से जुड़ी पूरी जानकारी के लिए, IntelliJ में नया क्या है लेख पढ़ें.
- एक्सएमएल एडिटर में, एट्रिब्यूट पूरा करते समय अब कोटेशन मार्क अपने-आप जुड़ जाते हैं. यह विकल्प चालू है या नहीं, यह देखने के लिए सेटिंग या प्राथमिकताएं डायलॉग खोलें. इसके बाद, एडिटर > सामान्य > स्मार्ट कुंजियां पर जाएं. इसके बाद, एट्रिब्यूट पूरा होने पर, एट्रिब्यूट वैल्यू के लिए कोटेशन जोड़ें के बगल में मौजूद बॉक्स पर सही का निशान लगाएं. समस्या: 195113
- एक्सएमएल एडिटर में अब डेटा बाइंडिंग एक्सप्रेशन के लिए, कोड पूरा करने की सुविधा काम करती है.
Android Studio v1.5.1 (दिसंबर 2015)
गड़बड़ियां ठीक की गई हैं और सुधार किए गए हैं:
- लेआउट एडिटर में रेंडरिंग से जुड़ी समस्या को ठीक किया गया. समस्या: 194612
- कॉन्फ़िगरेशन के हिसाब से,
descriptionमेनिफ़ेस्ट एट्रिब्यूट में बदलाव करने की सुविधा जोड़ी गई है. समस्या: 194705 - वेक्टर ऐसेट स्टूडियो में, Android Studio की Darcula थीम के कंट्रास्ट को बेहतर बनाया गया है. समस्या: 191819
- वेक्टर ऐसेट स्टूडियो में सहायता बटन की सुविधा जोड़ी गई.
- डेटा बाइंडिंग के लिए,
%ऑपरेटर के साथ काम करने की सुविधा जोड़ी गई. समस्या: 194045 - डीबग करने के लिए किसी ऐप्लिकेशन को लॉन्च करने पर, डीबगर के गलत डिवाइस से कनेक्ट होने की समस्या को ठीक किया गया है. समस्या: 195167
- कुछ मामलों में ऐप्लिकेशन चलाने की कोशिश करते समय, नल पॉइंटर अपवाद की समस्या को ठीक किया गया है.
Android Studio v1.5.0 (नवंबर 2015)
गड़बड़ियां ठीक की गई हैं और सुधार किए गए हैं:
- Android Monitor में, मेमोरी मॉनिटर की नई विश्लेषण क्षमताएं जोड़ी गई हैं. इस मॉनिटर से कैप्चर की गई HPROF फ़ाइल देखने पर, अब आपको ज़्यादा काम की जानकारी दिखेगी. इससे आपको मेमोरी लीक जैसी समस्याओं का पता लगाने में मदद मिलेगी. इस मॉनिटर का इस्तेमाल करने के लिए, मुख्य विंडो में सबसे नीचे मौजूद Android मॉनिटर पर क्लिक करें. Android Monitor में, Memory टैब पर क्लिक करें. मॉनिटर चालू होने के दौरान, Dump Java Heap आइकॉन पर क्लिक करें. इसके बाद, मुख्य विंडो में Captures पर क्लिक करें और फ़ाइल देखने के लिए उस पर डबल-क्लिक करें. दाईं ओर मौजूद, विश्लेषण कैप्चर करें पर क्लिक करें. (Android डिवाइस मॉनिटर और Android मॉनिटर, दोनों को एक साथ नहीं चलाया जा सकता.)
- नया डीप लिंक और ऐप्लिकेशन लिंक जोड़ने की सुविधा जोड़ी गई. कोड एडिटर,
AndroidManifest.xmlफ़ाइल में डीप लिंकिंग के लिए, अपने-आप इंटेंट फ़िल्टर बना सकता है. यह Java फ़ाइल में मौजूद किसी गतिविधि में, ऐप्लिकेशन इंडेक्सिंग एपीआई के साथ इंटिग्रेट करने में आपकी मदद करने के लिए कोड भी जनरेट कर सकता है. डीप लिंक की जांच करने की सुविधा से, यह पुष्टि की जा सकती है कि कोई डीप लिंक, ऐप्लिकेशन को लॉन्च कर सकता है या नहीं. Run/Debug Configurations डायलॉग के General टैब में, डीप लिंक लॉन्च करने के विकल्प दिए जा सकते हैं. Android Monitor logcat डिसप्ले का इस्तेमाल करके, किसी गतिविधि में ऐप्लिकेशन इंडेक्सिंग एपीआई कॉल की जांच भी की जा सकती है. Androidlintटूल में अब डीप लिंक और ऐप्लिकेशन इंडेक्सिंग एपीआई से जुड़ी कुछ समस्याओं के लिए चेतावनियां दिखती हैं. - कोड एडिटर में कस्टम व्यू के लिए कोड पूरा करते समय, छोटे नामों का इस्तेमाल करने की सुविधा जोड़ी गई.
- पुराने सिस्टम के साथ काम करने की सुविधा के लिए, वेक्टर ऐसेट स्टूडियो में ज़्यादा
VectorDrawableएलिमेंट के लिए सहायता जोड़ी गई. Vector Asset Studio इन एलिमेंट का इस्तेमाल करके, वेक्टर ड्रॉएबल को पीएनजी रास्टर इमेज में बदल सकता है. ऐसा Android 4.4 (एपीआई लेवल 20) और इससे पहले के वर्शन के साथ इस्तेमाल करने के लिए किया जाता है. - Android TV और Android Auto के लिए नई
lintजांचें जोड़ी गई हैं, ताकि आपको Android Studio में तुरंत और कार्रवाई करने लायक सुझाव मिल सकें. साथ ही, कई समस्याओं को तुरंत ठीक किया जा सके. उदाहरण के लिए, Android TV के लिए, यह अनुमतियों, काम न करने वाले हार्डवेयर,uses-featureएलिमेंट, और बैनर मौजूद न होने की समस्याओं की शिकायत कर सकता है और उन्हें तुरंत ठीक कर सकता है. Android Auto के लिए, यह इन कामों को कर सकता है: आपकीAndroidManifest.xmlफ़ाइल में मौजूद डेस्क्रिप्टर फ़ाइल में, सही तरीके से इस्तेमाल की गई जानकारी की पुष्टि करना,MediaBrowserServiceक्लास के लिए इंटेंट फ़िल्टर न होने पर रिपोर्ट करना, और आवाज़ से किए जाने वाले कुछ ऐक्शन से जुड़ी समस्याओं का पता लगाना. lintअसुरक्षित ब्रॉडकास्ट रिसीवर,SSLCertificateSocketFactoryऔरHostnameVerifierक्लास के इस्तेमाल, औरFile.setReadable()औरFile.setWritable()कॉल के लिए नई जांच जोड़ी गई हैं. यह अमान्य मेनिफ़ेस्ट रिसॉर्स लुकअप का भी पता लगाता है. खास तौर पर, उन संसाधनों के लिए जो कॉन्फ़िगरेशन के हिसाब से अलग-अलग होते हैं.- ऐप्लिकेशन के हैंग या क्रैश होने से जुड़ी कई समस्याएं ठीक की गई हैं.
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 फ़ाइलों जैसे वेक्टर ग्राफ़िक इंपोर्ट करने के लिए, Vector Asset Studio टूल जोड़ा गया है. इस टूल का इस्तेमाल करने के लिए, प्रोजेक्ट विंडो के Android व्यू में, res फ़ोल्डर पर राइट क्लिक करें. इसके बाद, New > Vector Asset को चुनें.
- Android Monitor में नए फ़ंक्शन जोड़े गए हैं: जीपीयू और नेटवर्क. इन मॉनिटर का इस्तेमाल करने के लिए, मुख्य विंडो में सबसे नीचे मौजूद Android मॉनिटर पर क्लिक करें. Android डिवाइस मॉनिटर और Android मॉनिटर, दोनों को एक साथ नहीं चलाया जा सकता.
- नए थीम एडिटर की शुरुआती झलक जोड़ी गई. इस सुविधा का इस्तेमाल करने के लिए, टूल > Android > Theme Editor चुनें.
- Design Support Library के लिए, Android टेंप्लेट अपडेट किए गए. टेंप्लेट में अब Material Design स्पेसिफ़िकेशन के साथ-साथ, पुराने सिस्टम के साथ काम करने की सुविधा के लिए
appcompatSupport Library का इस्तेमाल किया जा सकता है.
Android Studio v1.3.2 (अगस्त 2015)
गड़बड़ियां ठीक की गई हैं और सुधार किए गए हैं:
- Android 6.0 (एपीआई लेवल 23) के लिए सहायता जोड़ी गई है. इसमें नए आइकॉन और नई स्क्रीन डेंसिटी वाले डिवाइस बनाने के लिए, एवीडी मैनेजर की सहायता भी शामिल है.
- अपडेट की जांच के दौरान होने वाली गड़बड़ी को ठीक किया गया. समस्या: 183068
- उस समस्या को ठीक किया गया है जिसमें व्यू कोऑर्डिनेट हल न होने की वजह से, लेआउट एडिटर क्रैश हो जाता था. समस्या: 178690
- अमान्य संसाधन टाइप की चेतावनियों से जुड़ी समस्या ठीक की गई. समस्या: 182433
- लिंट चेक की उस समस्या को ठीक किया गया है जिसकी वजह से संसाधनों को गलती से निजी के तौर पर फ़्लैग किया जा रहा था. समस्या: 183120
Android Studio v1.3.1 (अगस्त 2015)
गड़बड़ियां ठीक की गई हैं और सुधार किए गए हैं:
- Windows पर Android Wear Android Virtual Device (AVD) बनाने की सुविधा से जुड़ी समस्या ठीक की गई है.
- प्रोजेक्ट का नाम डालने के बाद, प्रोजेक्ट विज़र्ड को अपडेट किया गया.
- Android SDK को सिर्फ़ पढ़ने के लिए डायरेक्ट्री में सेव करने की सुविधा जोड़ी गई.
- Gradle के लिए Android प्लगिन के वर्शन को 1.3.0 पर अपडेट किया गया.
- Android डीबग ब्रिज (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 में एसडीके मैनेजर को इंटिग्रेट किया गया है, ताकि पैकेज और टूल को आसानी से ऐक्सेस किया जा सके. साथ ही, अपडेट की सूचनाएं मिल सकें.
ध्यान दें: स्टैंडअलोन एसडीके मैनेजर अब भी कमांड लाइन से उपलब्ध है. हालांकि, इसका इस्तेमाल सिर्फ़ स्टैंडअलोन एसडीके इंस्टॉलेशन के साथ करने का सुझाव दिया जाता है.
- एम्युलेटर कंसोल में
fingerकमांड जोड़ी गई है, ताकि फ़िंगरप्रिंट की पुष्टि करने की सुविधा को सिम्युलेट किया जा सके. - लाइब्रेरी के संसाधनों को सार्वजनिक और निजी संसाधनों के तौर पर तय करने के लिए,
<public>संसाधन के बारे में जानकारी देने वाला फ़ील्ड जोड़ा गया.ध्यान दें: इसके लिए, Gradle के लिए Android प्लगिन का 1.3 या इसके बाद का वर्शन होना ज़रूरी है.
- डिक्लेरेटिव लेआउट बनाने के लिए, डेटा बाइंडिंग की सुविधा जोड़ी गई है. इससे आपके ऐप्लिकेशन लॉजिक को लेआउट एलिमेंट से बाइंड किया जा सकता है.
- Android Studio में टेस्ट APK बनाने के लिए, अलग टेस्ट APK मॉड्यूल की सुविधा जोड़ी गई है.
- HAXM ऑप्टिमाइज़ेशन और बेहतर सूचनाओं के साथ, AVD Manager को अपडेट किया गया.
- 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 को बेहतर बनाया गया है. इसमें Best Current Practice (BCP) 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लॉन्चर आइकॉन जोड़ा गया है. - क्षेत्र और भाषा के कॉम्बिनेशन, लॉन्चर आइकॉन, संसाधन के नाम, और कोड से जुड़ी अन्य सामान्य समस्याओं के लिए, Lint की जांचों को जोड़ा और बेहतर बनाया गया है.
- बेस्ट करंट प्रैक्टिस (बीसीपी) भाषा टैग 47 के लिए सहायता जोड़ी गई है.
Android Studio v1.0.1 (दिसंबर 2014)
कई सुधार किए गए हैं और गड़बड़ियां ठीक की गई हैं:
- AVD Manager और device.xml फ़ाइल लॉक करने से जुड़ी समस्या ठीक की गई.
- Windows सिस्टम पर एम्युलेटर के लॉग से जुड़ी समस्या ठीक की गई.
- Windows सिस्टम पर अलग-अलग ड्राइव में Android Studio और Android SDK इंस्टॉल होने पर, AVD बनाने से जुड़ी समस्या को ठीक किया गया है.
- यह कुकी, नए डाउनलोड के लिए डिफ़ॉल्ट अपडेट चैनल को Stable पर सेट करती है. अगर आपने 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 का वर्शन 0.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 के अलग-अलग फ़्लेवर और बिल्ड टाइप के साथ-साथ लाइब्रेरी से जुड़े सभी संसाधन ओवरले भी दिखाएगी. इन्हें रिसॉर्स ओवरले के उल्टे क्रम में दिखाया जाता है. साथ ही, स्ट्रिंग के जिन वर्शन को मास्क किया गया है उन्हें स्ट्राइकथ्रू किया जाता है.
- मॉड्यूल डिपेंडेंसी का सेट बदलने पर, मर्ज किए गए संसाधनों को अपडेट करने की समस्या ठीक की गई.
- एक्सएमएल रेंडरिंग से जुड़ी गड़बड़ियों को ठीक किया गया है, ताकि वर्ण एंटिटी के एलान, एक्सएमएल, और यूनिकोड एस्केप को सही तरीके से हैंडल किया जा सके.
- लेआउट की झलक और लेआउट एडिटर विंडो के लिए, स्क्रीनशॉट सेव करने की सुविधा.
- टेंप्लेट से जुड़ी गड़बड़ियां ठीक की गईं.
- लिंट की गड़बड़ियां ठीक की गईं.
- क्रैश रिपोर्ट से जुड़ी कई गड़बड़ियां ठीक की गईं. धन्यवाद. क्रैश रिपोर्ट भेजते रहें!
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 प्लगिन, आपके ऐप्लिकेशन या लाइब्रेरी मॉड्यूल में मौजूद हर बिल्ड वैरिएंट आर्टफ़ैक्ट के लिए एक component बनाता है. इसका इस्तेमाल, Maven रिपॉज़िटरी में publication को पसंद के मुताबिक बनाने के लिए किया जा सकता है.
ज़्यादा जानने के लिए, Maven Publish प्लगिन का इस्तेमाल करने के तरीके के बारे में जानकारी देने वाले पेज पर जाएं.
पैकेजिंग के लिए नया डिफ़ॉल्ट टूल
अपने ऐप्लिकेशन का डीबग वर्शन बनाते समय, प्लगिन एक नए पैकेजिंग टूल का इस्तेमाल करता है. इसे zipflinger कहा जाता है. इसका इस्तेमाल, आपके APK को बनाने के लिए किया जाता है. इस नए टूल से, बिल्ड की स्पीड में सुधार होगा. अगर नई पैकेजिंग टूल आपकी उम्मीद के मुताबिक काम नहीं करता है, तो कृपया बग की शिकायत करें. पैकेजिंग के पुराने टूल का इस्तेमाल फिर से शुरू किया जा सकता है. इसके लिए, अपनी 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 से सीधे तौर पर नेटिव लाइब्रेरी ऐक्सेस कर सकता है. इसके लिए, लाइब्रेरी की कॉपी बनाने की ज़रूरत नहीं होती.
- डाउनलोड करने के लिए कम साइज़, क्योंकि Play Store पर कंप्रेस करने की सुविधा आम तौर पर तब बेहतर होती है, जब आपने अपने APK या Android ऐप्लिकेशन बंडल में बिना कंप्रेस की गई नेटिव लाइब्रेरी शामिल की हों.
अगर आपको Android Gradle प्लगिन से, कंप्रेस की गई नेटिव लाइब्रेरी को पैकेज करने के लिए कहना है, तो अपने ऐप्लिकेशन के मेनिफ़ेस्ट में यह शामिल करें:
<application
android:extractNativeLibs="true"
... >
</application>
ध्यान दें: extractNativeLibs मेनिफ़ेस्ट एट्रिब्यूट की जगह useLegacyPackaging डीएसएल विकल्प का इस्तेमाल किया गया है. ज़्यादा जानकारी के लिए, रिलीज़ नोट कंप्रेस की गई नेटिव लाइब्रेरी को पैकेज करने के लिए डीएसएल का इस्तेमाल करना देखें.
डिफ़ॉल्ट NDK वर्शन
अगर आपने NDK के कई वर्शन डाउनलोड किए हैं, तो Android Gradle प्लगिन अब आपके सोर्स कोड फ़ाइलों को कंपाइल करने के लिए, डिफ़ॉल्ट वर्शन चुनता है.
इससे पहले, प्लगिन NDK के डाउनलोड किए गए सबसे नए वर्शन को चुनता था.
प्लगिन के चुने गए डिफ़ॉल्ट को बदलने के लिए, मॉड्यूल की build.gradle फ़ाइल में android.ndkVersion प्रॉपर्टी का इस्तेमाल करें.
आसानी से आर क्लास जनरेट करना
Android Gradle प्लगिन, कंपाइल क्लासपाथ को आसान बनाता है. इसके लिए, यह आपके प्रोजेक्ट में मौजूद हर लाइब्रेरी मॉड्यूल के लिए सिर्फ़ एक R क्लास जनरेट करता है. साथ ही, उन R क्लास को अन्य मॉड्यूल डिपेंडेंसी के साथ शेयर करता है. इस ऑप्टिमाइज़ेशन से, बिल्ड तेज़ी से तैयार होने चाहिए. हालांकि, इसके लिए आपको इन बातों का ध्यान रखना होगा:
- कंपाइलर, R क्लास को अपस्ट्रीम मॉड्यूल डिपेंडेंसी के साथ शेयर करता है. इसलिए, यह ज़रूरी है कि आपके प्रोजेक्ट में मौजूद हर मॉड्यूल, पैकेज के एक यूनीक नाम का इस्तेमाल करे.
- किसी लाइब्रेरी के R क्लास को प्रोजेक्ट की अन्य डिपेंडेंसी के लिए दिखाने की सुविधा, इस बात पर निर्भर करती है कि लाइब्रेरी को डिपेंडेंसी के तौर पर शामिल करने के लिए किस कॉन्फ़िगरेशन का इस्तेमाल किया गया है. उदाहरण के लिए, अगर लाइब्रेरी A में लाइब्रेरी B को 'api' डिपेंडेंसी के तौर पर शामिल किया गया है, तो लाइब्रेरी A और उस पर निर्भर अन्य लाइब्रेरी के पास लाइब्रेरी B के R क्लास का ऐक्सेस होगा. हालांकि, अन्य लाइब्रेरी के पास लाइब्रेरी B के R क्लास का ऐक्सेस नहीं हो सकता. अगर लाइब्रेरी A,
implementationडिपेंडेंसी कॉन्फ़िगरेशन का इस्तेमाल करती है. ज़्यादा जानने के लिए, डिपेंडेंसी कॉन्फ़िगरेशन के बारे में पढ़ें.
डिफ़ॉल्ट कॉन्फ़िगरेशन में मौजूद नहीं हैं, उन्हें हटाएं
लाइब्रेरी मॉड्यूल के लिए, अगर आपने किसी ऐसी भाषा के लिए संसाधन शामिल किया है जिसे आपने संसाधनों के डिफ़ॉल्ट सेट में शामिल नहीं किया है, तो Android Gradle प्लगिन उस संसाधन को आपके प्रोजेक्ट को कंपाइल करते समय शामिल नहीं करेगा. उदाहरण के लिए, अगर आपने /values-es/strings.xml में स्ट्रिंग संसाधन के तौर पर hello_world को शामिल किया है, लेकिन आपने उस संसाधन को /values/strings.xml में तय नहीं किया है. इस बदलाव से, Resource Not Found रनटाइम अपवादों की संख्या कम हो जाएगी और बिल्ड की स्पीड बेहतर हो जाएगी.
D8 अब एनोटेशन के लिए, CLASS के रखरखाव की नीति का पालन करता है
ऐप्लिकेशन को कंपाइल करते समय, D8 अब इस बात का ध्यान रखता है कि एनोटेशन, CLASS retention policy कब लागू करते हैं. साथ ही, ये एनोटेशन अब रनटाइम में उपलब्ध नहीं होते. ऐप्लिकेशन के टारगेट एसडीके को एपीआई लेवल 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 में ठीक कर दिया जाएगा.
Manifest क्लास {:#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 Gradle प्लग इन 3.5.0 और Android Studio 3.5, एक मुख्य रिलीज़ है. यह Project Marble का नतीजा है. Project Marble का मकसद, Android डेवलपर टूल के तीन मुख्य पहलुओं को बेहतर बनाना है: सिस्टम की परफ़ॉर्मेंस, सुविधाओं को बेहतर बनाना, और गड़बड़ियों को ठीक करना. खास तौर पर, इस अपडेट में प्रोजेक्ट बनाने की स्पीड को बेहतर बनाने पर फ़ोकस किया गया है.
इन और Project Marble से जुड़े अन्य अपडेट के बारे में जानने के लिए, Android Developers ब्लॉग पोस्ट पढ़ें या नीचे दिए गए सेक्शन देखें.
Android प्लगिन के इस वर्शन के लिए, ये ज़रूरी हैं:
-
Gradle 5.4.1. ज़्यादा जानने के लिए, Gradle को अपडेट करने के बारे में सेक्शन पढ़ें.
-
एसडीके बिल्ड टूल 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 शामिल करें.
कैश की जा सकने वाली यूनिट टेस्ट
Android के संसाधनों, ऐसेट, और मेनिफ़ेस्ट का इस्तेमाल करने के लिए यूनिट टेस्ट चालू करने पर, Android Gradle प्लगइन एक टेस्ट कॉन्फ़िगरेशन फ़ाइल जनरेट करता है. इसके लिए, includeAndroidResources को true पर सेट करें. इस फ़ाइल में पूरे पाथ होते हैं, जिससे कैश मेमोरी को दूसरी जगह ले जाने की सुविधा काम नहीं करती. प्लगिन को रेलेटिव पाथ का इस्तेमाल करके, टेस्ट कॉन्फ़िगरेशन जनरेट करने का निर्देश दिया जा सकता है. इससे AndroidUnitTest टास्क को पूरी तरह से कैश मेमोरी में सेव किया जा सकता है. इसके लिए, अपनी 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 डेमॉन के हीप साइज़ के बारे में बताएं. -
एसडीके बिल्ड टूल 28.0.3 या इसके बाद का वर्शन.
इस छोटे से अपडेट में, Android 11 में पैकेज की जानकारी देखने की सुविधा के लिए, नई डिफ़ॉल्ट सेटिंग और सुविधाओं के साथ काम करने की सुविधा जोड़ी गई है.
ज़्यादा जानकारी के लिए, 4.0.1 के रिलीज़ नोट देखें.
3.4.2 (जुलाई 2019)
इस छोटे अपडेट में Android Studio 3.4.2 के लिए सहायता उपलब्ध है. साथ ही, इसमें कई गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस में सुधार किया गया है. गड़बड़ियों को ठीक करने से जुड़ी अहम जानकारी देखने के लिए, रिलीज़ अपडेट ब्लॉग पर इससे जुड़ी पोस्ट पढ़ें.
3.4.1 (मई 2019)
इस छोटे अपडेट में Android Studio 3.4.1 के साथ काम करने की सुविधा है. साथ ही, इसमें कई गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस में सुधार किया गया है. गड़बड़ियों को ठीक करने से जुड़ी अहम जानकारी देखने के लिए, रिलीज़ अपडेट ब्लॉग पर इससे जुड़ी पोस्ट पढ़ें.
नई सुविधाएं
-
लिंट चेक की डिपेंडेंसी के नए कॉन्फ़िगरेशन:
lintChecksका व्यवहार बदल गया है. साथ ही, एक नया डिपेंडेंसी कॉन्फ़िगरेशन,lintPublish, पेश किया गया है. इससे आपको यह तय करने का ज़्यादा कंट्रोल मिलता है कि आपकी Android लाइब्रेरी में कौनसे लिंट चेक पैकेज किए गए हैं.-
lintChecks: यह एक मौजूदा कॉन्फ़िगरेशन है. इसका इस्तेमाल उन लिंट चेक के लिए किया जाना चाहिए जिन्हें आपको सिर्फ़ तब चलाना है, जब प्रोजेक्ट को स्थानीय तौर पर बनाया जा रहा हो. अगर आपने पब्लिश किए गए एएआर में लिंट चेक शामिल करने के लिए, पहलेlintChecksडिपेंडेंसी कॉन्फ़िगरेशन का इस्तेमाल किया था, तो आपको उन डिपेंडेंसी को माइग्रेट करना होगा. इसके बजाय, नीचे बताए गए नएlintPublishकॉन्फ़िगरेशन का इस्तेमाल करें. -
lintPublish: लाइब्रेरी प्रोजेक्ट में इस नए कॉन्फ़िगरेशन का इस्तेमाल करें. इससे, पब्लिश किए गए एएआर में शामिल किए जाने वाले लिंट चेक किए जा सकेंगे. इसके बारे में यहां बताया गया है. इसका मतलब है कि आपकी लाइब्रेरी का इस्तेमाल करने वाले प्रोजेक्ट भी, लिंट की उन जांचों को लागू करते हैं.
यहां दिए गए कोड के सैंपल में, लोकल 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 Feature plugin के बंद होने की चेतावनी: अगर अब भी अपने इंस्टेंट ऐप्लिकेशन को बनाने के लिए
com.android.featureप्लग इन का इस्तेमाल किया जा रहा है, तो Android Gradle प्लग इन 3.4.0 आपको इस प्लग इन के बंद होने की चेतावनी देगा. यह पक्का करने के लिए कि प्लगिन के आने वाले वर्शन पर भी झटपट ऐप्लिकेशन बनाया जा सके, अपने झटपट ऐप्लिकेशन को डाइनैमिक फ़ीचर प्लगिन का इस्तेमाल करने के लिए माइग्रेट करें. इससे आपको इंस्टॉल किए गए ऐप्लिकेशन और झटपट ऐप्लिकेशन, दोनों को एक ही Android ऐप्लिकेशन बंडल से पब्लिश करने की सुविधा भी मिलती है. -
R8 डिफ़ॉल्ट रूप से चालू होता है: R8, एक ही चरण में डेसुगरिंग, श्रिंकिंग, अस्पष्ट करना, ऑप्टिमाइज़ करना, और डेक्सिंग को इंटिग्रेट करता है. इससे बिल्ड की परफ़ॉर्मेंस में काफ़ी सुधार होता है. R8 को Android Gradle प्लग इन 3.3.0 में पेश किया गया था. अब यह प्लग इन 3.4.0 और इसके बाद के वर्शन का इस्तेमाल करने वाले ऐप्लिकेशन और Android लाइब्रेरी प्रोजेक्ट, दोनों के लिए डिफ़ॉल्ट रूप से चालू होता है.
नीचे दी गई इमेज में, R8 को लॉन्च करने से पहले कंपाइल करने की प्रोसेस के बारे में खास जानकारी दी गई है.
अब R8 की मदद से, डिसुगरिंग, श्रिंकिंग, अस्पष्ट करना, ऑप्टिमाइज़ करना, और डेक्सिंग (D8) जैसे सभी काम एक ही चरण में पूरे किए जा सकते हैं. इसके बारे में यहां बताया गया है.
ध्यान रखें कि R8 को आपकी मौजूदा ProGuard सेटिंग के साथ काम करने के लिए डिज़ाइन किया गया है. इसलिए, R8 का फ़ायदा पाने के लिए, आपको शायद कोई कार्रवाई करने की ज़रूरत न पड़े. हालांकि, यह ProGuard से अलग टेक्नोलॉजी है. इसे खास तौर पर Android प्रोजेक्ट के लिए डिज़ाइन किया गया है. इसलिए, कोड को छोटा करने और ऑप्टिमाइज़ करने के दौरान, ऐसा कोड हटाया जा सकता है जिसे ProGuard ने नहीं हटाया था. इसलिए, इस तरह की असामान्य स्थिति में, आपको अपने बिल्ड आउटपुट में उस कोड को बनाए रखने के लिए, अतिरिक्त नियम जोड़ने पड़ सकते हैं.
अगर आपको R8 का इस्तेमाल करने में समस्याएं आ रही हैं, तो R8 के साथ काम करने से जुड़े अक्सर पूछे जाने वाले सवाल पढ़ें. इससे आपको अपनी समस्या का समाधान मिल सकता है. अगर समस्या हल करने का तरीका नहीं बताया गया है, तो कृपया गड़बड़ी की शिकायत करें.
R8 को बंद करने के लिए, अपने प्रोजेक्ट की gradle.properties फ़ाइल में इनमें से कोई एक लाइन जोड़ें:
# Disables R8 for Android Library modules only.
android.enableR8.libraries = false
# Disables R8 for all modules.
android.enableR8 = false
ध्यान दें: अगर किसी बिल्ड टाइप के लिए, आपने अपने ऐप्लिकेशन मॉड्यूल की build.gradle फ़ाइल में useProguard को false पर सेट किया है, तो Android Gradle प्लग इन उस बिल्ड टाइप के लिए, आपके ऐप्लिकेशन के कोड को छोटा करने के लिए R8 का इस्तेमाल करेगा. भले ही, आपने अपने प्रोजेक्ट की gradle.properties फ़ाइल में R8 को बंद कर दिया हो.
-
ndkCompileअब काम नहीं करता: अगर अब भीndkBuildका इस्तेमाल करके, अपनी नेटिव लाइब्रेरी को कंपाइल करने की कोशिश की जाती है, तो आपको बिल्ड से जुड़ी गड़बड़ी का मैसेज दिखेगा. इसके बजाय, आपको CMake या ndk-build का इस्तेमाल करके, अपने प्रोजेक्ट में C और C++ कोड जोड़ना चाहिए.
पहले से मालूम समस्याएं
-
फ़िलहाल, यूनीक पैकेज के नामों का सही तरीके से इस्तेमाल करने के लिए, कोई नियम लागू नहीं किया गया है. हालांकि, प्लगिन के बाद के वर्शन में यह नियम ज़्यादा सख्ती से लागू किया जाएगा. Android Gradle प्लगइन 3.4.0 वर्शन पर, यह देखने के लिए ऑप्ट-इन किया जा सकता है कि आपका प्रोजेक्ट, स्वीकार किए जाने वाले पैकेज के नाम तय करता है या नहीं. इसके लिए, अपनी
gradle.propertiesफ़ाइल में यहां दी गई लाइन जोड़ें.android.uniquePackageNames = trueAndroid 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 के वर्शन 2.0 की डिपेंडेंसी को लाइब्रेरी A के वर्शन 1.0 पर डाउनग्रेड नहीं करता है. इसलिए, आपको गड़बड़ी का मैसेज दिखेगा. ज़्यादा जानने के लिए, क्लाथपाथ के बीच होने वाले टकराव ठीक करना लेख पढ़ें.
-
एनोटेशन प्रोसेसर का इस्तेमाल करते समय, Java कंपाइलेशन को बेहतर तरीके से बढ़ाया गया: इस अपडेट से, एनोटेशन प्रोसेसर का इस्तेमाल करते समय, Java कंपाइलेशन को बेहतर तरीके से बढ़ाया गया है. इससे बिल्ड के समय में कमी आई है.
ध्यान दें: यह सुविधा Gradle 4.10.1 और इसके बाद के वर्शन के साथ काम करती है. हालांकि, Gradle issue 8194 की वजह से, यह Gradle 5.1 के साथ काम नहीं करती.
-
Kapt का इस्तेमाल करने वाले प्रोजेक्ट के लिए (सिर्फ़ Kotlin वाले ज़्यादातर प्रोजेक्ट और Kotlin-Java हाइब्रिड प्रोजेक्ट): इंक्रीमेंटल Java कंपाइलेशन चालू होता है. भले ही, आपने डेटा बाइंडिंग या retro-lambda प्लगिन का इस्तेमाल किया हो. 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 के नए टास्क क्रिएशन एपीआई का इस्तेमाल करता है. इससे उन टास्क को शुरू और कॉन्फ़िगर करने से बचा जा सकता है जिनकी ज़रूरत मौजूदा बिल्ड को पूरा करने के लिए नहीं होती. इसके अलावा, उन टास्क को भी शुरू और कॉन्फ़िगर करने से बचा जा सकता है जो एक्ज़ीक्यूशन टास्क ग्राफ़ पर नहीं होते. उदाहरण के लिए, अगर आपके पास कई बिल्ड वैरिएंट हैं, जैसे कि “release” और “debug” बिल्ड वैरिएंट, और आपको अपने ऐप्लिकेशन का “debug” वर्शन बनाना है, तो प्लगिन आपके ऐप्लिकेशन के “release” वर्शन के लिए टास्क को शुरू और कॉन्फ़िगर करने से बचता है.
Variants API में कुछ पुराने तरीकों को कॉल करने पर, टास्क कॉन्फ़िगरेशन अब भी लागू हो सकता है. जैसे,
variant.getJavaCompile(). यह पक्का करें कि आपका बिल्ड, लेज़ी टास्क कॉन्फ़िगरेशन के लिए ऑप्टिमाइज़ किया गया हो. इसके लिए, ऐसे नए तरीकों का इस्तेमाल करें जो TaskProvider ऑब्जेक्ट दिखाते हैं. जैसे,variant.getJavaCompileProvider().अगर कस्टम बिल्ड टास्क पूरे किए जाते हैं, तो Gradle के नए टास्क-क्रिएशन एपीआई के हिसाब से बदलाव करने का तरीका जानें.
-
किसी दिए गए बिल्ड टाइप के लिए,
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 > Preferences > Experimental > Gradle) पर क्लिक करें. इसके बाद, सिर्फ़ ऐक्टिव वैरिएंट सिंक करें चेकबॉक्स को चुनें.
ध्यान दें: यह ऑप्टिमाइज़ेशन, Java और C++ भाषाओं वाले प्रोजेक्ट के साथ पूरी तरह से काम करता है. साथ ही, Kotlin के साथ भी काम करता है. Kotlin कॉन्टेंट वाले प्रोजेक्ट के लिए ऑप्टिमाइज़ेशन की सुविधा चालू करने पर, Gradle सिंक, इंटरनल तौर पर पूरे वैरिएंट का इस्तेमाल करता है.
-
SDK टूल के छूटे हुए पैकेज अपने-आप डाउनलोड होने की सुविधा: इस सुविधा को NDK के साथ काम करने के लिए बढ़ाया गया है. ज़्यादा जानने के लिए, Gradle की मदद से, मौजूद नहीं हैं ऐसे पैकेज अपने-आप डाउनलोड होने की सुविधा लेख पढ़ें.
गड़बड़ियां ठीक की गईं
-
Android Gradle प्लग इन 3.3.0 में, यहां दी गई समस्याएं ठीक की गई हैं:
- बिल्ड प्रोसेस, AndroidX वर्शन के बजाय
android.support.v8.renderscript.RenderScriptको कॉल कर रही है. ऐसा तब हो रहा है, जब Jetifier चालू है androidx-rs.jarकी वजह से होने वाले टकराव, जिनमें स्टैटिक तौर पर बंडल किए गएannotation.AnyResभी शामिल हैं- RenderScript का इस्तेमाल करते समय, अब आपको अपनी
build.gradleफ़ाइलों में Build Tools का वर्शन मैन्युअल तरीके से सेट नहीं करना होगा
- बिल्ड प्रोसेस, AndroidX वर्शन के बजाय
3.2.0 (सितंबर 2018)
Android प्लगिन के इस वर्शन के लिए, ये ज़रूरी हैं:
- Gradle 4.6 या इसके बाद का वर्शन. ज़्यादा जानने के लिए, Gradle को अपडेट करना सेक्शन पढ़ें.
- एसडीके बिल्ड टूल 28.0.3 या इसके बाद का वर्शन.
3.2.1 (अक्टूबर 2018)
इस अपडेट के बाद, आपको एसडीके बिल्ड टूल के लिए वर्शन तय करने की ज़रूरत नहीं होगी. Android Gradle प्लग इन अब डिफ़ॉल्ट रूप से 28.0.3 वर्शन का इस्तेमाल करता है.
नई सुविधाएं
-
Android ऐप्लिकेशन बंडल बनाने की सुविधा: ऐप्लिकेशन बंडल, अपलोड करने का एक नया फ़ॉर्मैट है. इसमें आपके ऐप्लिकेशन का कंपाइल किया गया पूरा कोड और संसाधन शामिल होते हैं. साथ ही, APK जनरेट करने और साइन करने की प्रोसेस को Google Play Store पर ट्रांसफ़र कर दिया जाता है. अब आपको एक से ज़्यादा APK बनाने, साइन करने, और मैनेज करने की ज़रूरत नहीं है. साथ ही, लोगों को उनके डिवाइस के लिए ऑप्टिमाइज़ किए गए छोटे डाउनलोड मिलते हैं. ज़्यादा जानने के लिए, Android ऐप्लिकेशन बंडल के बारे में जानकारी लेख पढ़ें.
-
एनोटेशन प्रोसेसर का इस्तेमाल करते समय, इंक्रीमेंटल बिल्ड की स्पीड को बेहतर बनाने के लिए सहायता:
AnnotationProcessorOptionsDSL अबCommandLineArgumentProviderतक पहुंच गया है. इससे आपको या एनोटेशन प्रोसेसर के लेखक को, इंक्रीमेंटल बिल्ड प्रॉपर्टी टाइप एनोटेशन का इस्तेमाल करके, प्रोसेसर के लिए आर्ग्युमेंट को एनोटेट करने की सुविधा मिलती है. इन एनोटेशन का इस्तेमाल करने से, इंक्रीमेंटल और कैश मेमोरी में सेव किए गए क्लीन बिल्ड की परफ़ॉर्मेंस और सटीकता बेहतर होती है. ज़्यादा जानने के लिए, एनोटेशन प्रोसेसर को पास किए जाने वाले आर्ग्युमेंट लेख पढ़ें. -
AndroidX के लिए माइग्रेशन टूल: Android 3.2 और उसके बाद के वर्शन के साथ Android Gradle plugin 3.2.0 का इस्तेमाल करते समय, अपने प्रोजेक्ट की लोकल और Maven डिपेंडेंसी को नई AndroidX लाइब्रेरी का इस्तेमाल करने के लिए माइग्रेट किया जा सकता है. इसके लिए, मेन्यू बार में जाकर रीफ़ैक्टर > 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 API लेवल 21 या उसके बाद के वर्शन पर चलने वाले डिवाइस पर ऐप्लिकेशन का डीबग वर्शन डिप्लॉय करते समय, नेटिव मल्टीडेक्स की सुविधा चालू करते थे. अब, चाहे आपको किसी डिवाइस पर ऐप्लिकेशन डिप्लॉय करना हो या रिलीज़ के लिए कोई एपीके बनाना हो, Android Gradle प्लगिन उन सभी मॉड्यूल के लिए नेटिव मल्टीडेक्स की सुविधा चालू करता है जो
minSdkVersion=21या इससे ज़्यादा पर सेट हैं. -
यह प्लगिन अब protobuf प्लगिन (0.8.6), Kotlin प्लगिन (1.2.50), और Crashlytics प्लगिन (1.25.4) के कम से कम वर्शन को लागू करता है.
-
फ़ीचर मॉड्यूल प्लगिन,
com.android.feature, अब मॉड्यूल का नाम तय करते समय सिर्फ़ अक्षरों, अंकों, और अंडरस्कोर का इस्तेमाल करने की अनुमति देता है. उदाहरण के लिए, अगर आपके फ़ीचर मॉड्यूल के नाम में डैश शामिल हैं, तो आपको बिल्ड से जुड़ी गड़बड़ी दिखेगी. यह व्यवहार, डाइनैमिक फ़ीचर प्लगिन के व्यवहार से मेल खाता है.
गड़बड़ियां ठीक की गईं
- डेटा बाइंडिंग की सुविधा वाले प्रोजेक्ट में, अब JavaCompile को कैश मेमोरी में सेव किया जा सकता है. (समस्या #69243050)
- डेटा बाइंडिंग की सुविधा वाले लाइब्रेरी मॉड्यूल के लिए, कंपाइल करने से बचने की बेहतर सुविधा. (समस्या #77539932)
- अगर आपने बिल्ड से जुड़ी कुछ गड़बड़ियों की वजह से, पिछले वर्शन में configure-on-demand सुविधा बंद कर दी थी, तो अब इसे फिर से चालू किया जा सकता है. (समस्या #77910727)
3.1.0 (मार्च 2018)
Android प्लगिन के इस वर्शन के लिए, ये ज़रूरी हैं:
-
Gradle 4.4 या इसके बाद का वर्शन.
ज़्यादा जानने के लिए, Gradle को अपडेट करने के बारे में सेक्शन पढ़ें.
-
Build Tools 27.0.3 या इसके बाद का वर्शन.
ध्यान रखें कि अब आपको
android.buildToolsVersionप्रॉपर्टी का इस्तेमाल करके, बिल्ड टूल के लिए वर्शन तय करने की ज़रूरत नहीं है. प्लगिन, डिफ़ॉल्ट रूप से ज़रूरी कम से कम वर्शन का इस्तेमाल करता है.
नया DEX कंपाइलर, D8
डिफ़ॉल्ट रूप से, Android Studio अब D8 नाम के नए DEX कंपाइलर का इस्तेमाल करता है. DEX कंपाइलेशन, .class बाइटकोड को Android रनटाइम (या Android के पुराने वर्शन के लिए Dalvik) के लिए .dex बाइटकोड में बदलने की प्रोसेस है. DX नाम के पिछले कंपाइलर की तुलना में, D8 तेज़ी से कंपाइल करता है और छोटी DEX फ़ाइलें आउटपुट करता है. साथ ही, ऐप्लिकेशन के रनटाइम की परफ़ॉर्मेंस पहले जैसी या उससे बेहतर होती है.
D8 से, ऐप्लिकेशन डेवलपमेंट के आपके रोज़ के वर्कफ़्लो में कोई बदलाव नहीं होना चाहिए. हालांकि, अगर आपको नए कंपाइलर से जुड़ी कोई समस्या आती है, तो कृपया गड़बड़ी की शिकायत करें. D8 को कुछ समय के लिए बंद किया जा सकता है और DX का इस्तेमाल किया जा सकता है. इसके लिए, अपने प्रोजेक्ट की gradle.properties फ़ाइल में यह कोड शामिल करें:
android.enableD8=false
Java 8 की भाषा से जुड़ी सुविधाओं का इस्तेमाल करने वाले प्रोजेक्ट के लिए, इंक्रीमेंटल डिसुगरिंग की सुविधा डिफ़ॉल्ट रूप से चालू होती है. इसे बंद करने के लिए, अपने प्रोजेक्ट की gradle.properties फ़ाइल में यह जानकारी दें:
android.enableIncrementalDesugaring=false.
प्रीव्यू वर्शन का इस्तेमाल करने वाले लोग: अगर D8 के प्रीव्यू वर्शन का इस्तेमाल किया जा रहा है, तो ध्यान दें कि अब यह एसडीके बिल्ड टूल में शामिल लाइब्रेरी के साथ कंपाइल होता है, न कि JDK के साथ. इसलिए, अगर JDK में मौजूद एपीआई को ऐक्सेस किया जा रहा है, लेकिन SDK बिल्ड टूल लाइब्रेरी में मौजूद एपीआई को ऐक्सेस नहीं किया जा रहा है, तो आपको कंपाइल करने से जुड़ी गड़बड़ी मिलेगी.
व्यवहार में बदलाव
-
अलग-अलग एबीआई को टारगेट करने वाले कई APK बनाते समय, अब डिफ़ॉल्ट रूप से इन एबीआई के लिए APK जनरेट नहीं करता:
mips,mips64, औरarmeabi.अगर आपको इन एबीआइ को टारगेट करने वाले APK बनाने हैं, तो आपको NDK r16b या इससे पहले का वर्शन इस्तेमाल करना होगा. साथ ही, यहां दिखाए गए तरीके से अपनी
build.gradleफ़ाइल में एबीआइ तय करने होंगे:splits { abi { include 'armeabi', 'mips', 'mips64' ... } }
splits { abi { include("armeabi", "mips", "mips64") ... } }
-
Android प्लगिन का बिल्ड कैश अब 30 दिन से ज़्यादा पुरानी कैश मेमोरी की एंट्री हटा देता है.
-
"auto"कोresConfigमें पास करने पर, अब स्ट्रिंग रिसॉर्स अपने-आप नहीं चुने जाते. इसलिए, उन्हें आपके APK में पैकेज नहीं किया जाता."auto"का इस्तेमाल जारी रखने पर, प्लगिन आपके ऐप्लिकेशन और उसकी डिपेंडेंसी से मिलने वाले सभी स्ट्रिंग रिसॉर्स को पैकेज करता है. इसलिए, आपको हर उस स्थान-भाषा के बारे में बताना चाहिए जिसे आपको प्लग इन के ज़रिए अपने APK में पैकेज करना है. -
लोकल मॉड्यूल, आपके ऐप्लिकेशन के टेस्ट APK पर निर्भर नहीं हो सकते. इसलिए,
androidTestImplementationके बजायandroidTestApiकॉन्फ़िगरेशन का इस्तेमाल करके, इंस्ट्रुमेंट किए गए टेस्ट में डिपेंडेंसी जोड़ने पर, Gradle यह चेतावनी जारी करता है:WARNING: Configuration 'androidTestApi' is obsolete and has been replaced with 'androidTestImplementation'
WARNING: Configuration 'androidTestApi' is obsolete and has been replaced with 'androidTestImplementation'
समाधान
- इस अपडेट से उस समस्या को ठीक किया गया है जिसमें Android Studio, कंपोज़िट बिल्ड में डिपेंडेंसी को ठीक से पहचान नहीं पाता था.
- इस अपडेट में, प्रोजेक्ट सिंक करने से जुड़ी गड़बड़ी को ठीक किया गया है. यह गड़बड़ी तब होती है, जब किसी एक बिल्ड में Android प्लगिन को कई बार लोड किया जाता है. उदाहरण के लिए, जब कई सबप्रोजेक्ट में से हर एक में, Android प्लगिन को अपने buildscript क्लासपाथ में शामिल किया जाता है.
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 Profiler का इस्तेमाल करके, अपने बिल्ड का ट्रेस शामिल करें.
Android प्लगिन के इस वर्शन के लिए, ये ज़रूरी हैं:
- Gradle 4.1 या इसके बाद का वर्शन. ज़्यादा जानने के लिए, Gradle को अपडेट करना सेक्शन पढ़ें.
-
Build Tools 26.0.2 या इसके बाद का वर्शन. इस अपडेट के बाद, आपको बिल्ड टूल के लिए कोई वर्शन तय करने की ज़रूरत नहीं है. प्लगिन, डिफ़ॉल्ट रूप से ज़रूरी कम से कम वर्शन का इस्तेमाल करता है.
इसलिए, अब
android.buildToolsVersionप्रॉपर्टी को हटाया जा सकता है.
3.0.1 (नवंबर 2017)
यह Android Studio 3.0.1 के साथ काम करने वाला एक छोटा अपडेट है. इसमें सामान्य गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस में सुधार किए गए हैं.
ऑप्टिमाइज़ेशन
- फ़ाइन ग्रेन्ड टास्क ग्राफ़ की मदद से, एक से ज़्यादा मॉड्यूल वाले प्रोजेक्ट के लिए बेहतर पैरललिज़्म.
- डिपेंडेंसी में बदलाव करते समय, Gradle तेज़ी से बिल्ड करता है. ऐसा इसलिए, क्योंकि यह उन मॉड्यूल को फिर से कंपाइल नहीं करता जिनके पास उस डिपेंडेंसी के एपीआई का ऐक्सेस नहीं होता.
आपको यह तय करना चाहिए कि कौनसी डिपेंडेंसी, अपने एपीआई को अन्य मॉड्यूल में लीक करती हैं. इसके लिए, Gradle के नए डिपेंडेंसी कॉन्फ़िगरेशन का इस्तेमाल करें:
implementation,api,compileOnly, औरruntimeOnly. - हर क्लास के लिए डेक्सिंग की सुविधा होने की वजह से, इंक्रीमेंटल बिल्ड की स्पीड तेज़ होती है. अब हर क्लास को अलग-अलग DEX फ़ाइलों में कंपाइल किया जाता है. साथ ही, सिर्फ़ उन क्लास को फिर से डेक्स किया जाता है जिनमें बदलाव किया गया है. जिन ऐप्लिकेशन के लिए
minSdkVersionकी वैल्यू 20 या इससे कम पर सेट है और जो लेगसी मल्टी-डेक्स का इस्तेमाल करते हैं उनके लिए, आपको बिल्ड की स्पीड में भी सुधार देखने को मिलेगा. - कुछ टास्क को ऑप्टिमाइज़ करके, बिल्ड की स्पीड को बेहतर बनाया गया है, ताकि कैश किए गए आउटपुट का इस्तेमाल किया जा सके. इस ऑप्टिमाइज़ेशन का फ़ायदा पाने के लिए, आपको पहले Gradle बिल्ड कैश मेमोरी चालू करनी होगी.
- AAPT2 का इस्तेमाल करके, संसाधन को बेहतर तरीके से प्रोसेस करने की सुविधा. यह सुविधा अब डिफ़ॉल्ट रूप से चालू होती है. अगर आपको AAPT2 का इस्तेमाल करते समय समस्याएं आ रही हैं, तो कृपया बग की शिकायत करें. आपके पास
android.enableAapt2=falseफ़ाइल मेंandroid.enableAapt2=falseसेट करके, AAPT2 को बंद करने का विकल्प भी है. इसके लिए, आपको कमांड लाइन से./gradlew --stopचलाकर, Gradle डेमॉन को फिर से शुरू करना होगा.gradle.properties
नई सुविधाएं
- वैरिएंट के हिसाब से डिपेंडेंसी मैनेज करना. किसी मॉड्यूल का कोई वैरिएंट बनाते समय, प्लगिन अब स्थानीय लाइब्रेरी मॉड्यूल की डिपेंडेंसी के वैरिएंट को, बनाए जा रहे मॉड्यूल के वैरिएंट से अपने-आप मैच कर देता है.
- इसमें Android Instant Apps और Android Instant Apps SDK के साथ काम करने के लिए, एक नया फ़ीचर मॉड्यूल प्लगिन शामिल है. Android Instant Apps SDK को एसडीके मैनेजर का इस्तेमाल करके डाउनलोड किया जा सकता है. नए प्लगिन की मदद से, सुविधा वाले मॉड्यूल बनाने के बारे में ज़्यादा जानने के लिए, कई सुविधाओं वाले इंस्टैंट ऐप्लिकेशन का स्ट्रक्चर लेख पढ़ें.
- Java 8 की कुछ सुविधाओं और Java 8 की लाइब्रेरी का इस्तेमाल करने के लिए, पहले से मौजूद सपोर्ट. Jack अब काम नहीं करता और इसकी ज़रूरत नहीं है. इसलिए, आपको डिफ़ॉल्ट टूलचेन में शामिल, बेहतर Java 8 सपोर्ट का इस्तेमाल करने के लिए, पहले Jack को बंद करना होगा. ज़्यादा जानकारी के लिए, Java 8 की भाषा से जुड़ी सुविधाओं का इस्तेमाल करना लेख पढ़ें.
-
Android Test Orchestrator के साथ टेस्ट चलाने की सुविधा जोड़ी गई है. इससे, अपने ऐप्लिकेशन के हर टेस्ट को इंस्ट्रुमेंटेशन के अपने इनवोकेशन में चलाया जा सकता है. हर टेस्ट अपने इंस्ट्रूमेंटेशन इंस्टेंस में चलता है. इसलिए, टेस्ट के बीच शेयर की गई कोई भी स्थिति, आपके डिवाइस के सीपीयू या मेमोरी पर इकट्ठा नहीं होती. अगर कोई टेस्ट क्रैश हो जाता है, तो सिर्फ़ इंस्ट्रुमेंटेशन का उसका इंस्टेंस बंद हो जाता है. इसलिए, आपके अन्य टेस्ट अब भी चलते रहते हैं.
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 क्रंचिंग की सुविधा बंद करनी चाहिए या अपनी इमेज को 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का इस्तेमाल करने पर ज़्यादा पाबंदियां लगाई गई हैं. इसके बजाय, आपको अपने APK में पैकेज किए जाने वाले नेटिव कोड को कंपाइल करने के लिए, CMake या ndk-build का इस्तेमाल करना चाहिए. ज़्यादा जानने के लिए, 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 Profiler का इस्तेमाल करके, अपने बिल्ड का ट्रेस शामिल करें.
Android प्लगिन के इस वर्शन के लिए, ये ज़रूरी हैं:
- Gradle 4.1 या इसके बाद का वर्शन. ज़्यादा जानने के लिए, Gradle को अपडेट करना सेक्शन पढ़ें.
-
Build Tools 26.0.2 या इसके बाद का वर्शन. इस अपडेट के बाद, आपको बिल्ड टूल के लिए कोई वर्शन तय करने की ज़रूरत नहीं है. प्लगिन, डिफ़ॉल्ट रूप से ज़रूरी कम से कम वर्शन का इस्तेमाल करता है.
इसलिए, अब
android.buildToolsVersionप्रॉपर्टी को हटाया जा सकता है.
3.0.1 (नवंबर 2017)
यह Android Studio 3.0.1 के साथ काम करने वाला एक छोटा अपडेट है. इसमें सामान्य गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस में सुधार किए गए हैं.
ऑप्टिमाइज़ेशन
- फ़ाइन ग्रेन्ड टास्क ग्राफ़ की मदद से, एक से ज़्यादा मॉड्यूल वाले प्रोजेक्ट के लिए बेहतर पैरललिज़्म.
- डिपेंडेंसी में बदलाव करते समय, Gradle तेज़ी से बिल्ड करता है. ऐसा इसलिए, क्योंकि यह उन मॉड्यूल को फिर से कंपाइल नहीं करता जिनके पास उस डिपेंडेंसी के एपीआई का ऐक्सेस नहीं होता.
आपको यह तय करना चाहिए कि कौनसी डिपेंडेंसी, अपने एपीआई को अन्य मॉड्यूल में लीक करती हैं. इसके लिए, Gradle के नए डिपेंडेंसी कॉन्फ़िगरेशन का इस्तेमाल करें:
implementation,api,compileOnly, औरruntimeOnly. - हर क्लास के लिए डेक्सिंग की सुविधा होने की वजह से, इंक्रीमेंटल बिल्ड की स्पीड तेज़ होती है. अब हर क्लास को अलग-अलग DEX फ़ाइलों में कंपाइल किया जाता है. साथ ही, सिर्फ़ उन क्लास को फिर से डेक्स किया जाता है जिनमें बदलाव किया गया है. जिन ऐप्लिकेशन के लिए
minSdkVersionकी वैल्यू 20 या इससे कम पर सेट है और जो लेगसी मल्टी-डेक्स का इस्तेमाल करते हैं उनके लिए, आपको बिल्ड की स्पीड में भी सुधार देखने को मिलेगा. - कुछ टास्क को ऑप्टिमाइज़ करके, बिल्ड की स्पीड को बेहतर बनाया गया है, ताकि कैश किए गए आउटपुट का इस्तेमाल किया जा सके. इस ऑप्टिमाइज़ेशन का फ़ायदा पाने के लिए, आपको पहले Gradle बिल्ड कैश मेमोरी चालू करनी होगी.
- AAPT2 का इस्तेमाल करके, संसाधन को बेहतर तरीके से प्रोसेस करने की सुविधा. यह सुविधा अब डिफ़ॉल्ट रूप से चालू होती है. अगर आपको AAPT2 का इस्तेमाल करते समय समस्याएं आ रही हैं, तो कृपया बग की शिकायत करें. आपके पास
android.enableAapt2=falseफ़ाइल मेंandroid.enableAapt2=falseसेट करके, AAPT2 को बंद करने का विकल्प भी है. इसके लिए, आपको कमांड लाइन से./gradlew --stopचलाकर, Gradle डेमॉन को फिर से शुरू करना होगा.gradle.properties
नई सुविधाएं
- वैरिएंट के हिसाब से डिपेंडेंसी मैनेज करना. किसी मॉड्यूल का कोई वैरिएंट बनाते समय, प्लगिन अब स्थानीय लाइब्रेरी मॉड्यूल की डिपेंडेंसी के वैरिएंट को, बनाए जा रहे मॉड्यूल के वैरिएंट से अपने-आप मैच कर देता है.
- इसमें Android Instant Apps और Android Instant Apps SDK के साथ काम करने के लिए, एक नया फ़ीचर मॉड्यूल प्लगिन शामिल है. Android Instant Apps SDK को एसडीके मैनेजर का इस्तेमाल करके डाउनलोड किया जा सकता है. नए प्लगिन की मदद से, सुविधा वाले मॉड्यूल बनाने के बारे में ज़्यादा जानने के लिए, कई सुविधाओं वाले इंस्टैंट ऐप्लिकेशन का स्ट्रक्चर लेख पढ़ें.
- Java 8 की कुछ सुविधाओं और Java 8 की लाइब्रेरी का इस्तेमाल करने के लिए, पहले से मौजूद सपोर्ट. Jack अब काम नहीं करता और इसकी ज़रूरत नहीं है. इसलिए, आपको डिफ़ॉल्ट टूलचेन में शामिल, बेहतर Java 8 सपोर्ट का इस्तेमाल करने के लिए, पहले Jack को बंद करना होगा. ज़्यादा जानकारी के लिए, Java 8 की भाषा से जुड़ी सुविधाओं का इस्तेमाल करना लेख पढ़ें.
-
Android Test Orchestrator के साथ टेस्ट चलाने की सुविधा जोड़ी गई है. इससे, अपने ऐप्लिकेशन के हर टेस्ट को इंस्ट्रुमेंटेशन के अपने इनवोकेशन में चलाया जा सकता है. हर टेस्ट अपने इंस्ट्रूमेंटेशन इंस्टेंस में चलता है. इसलिए, टेस्ट के बीच शेयर की गई कोई भी स्थिति, आपके डिवाइस के सीपीयू या मेमोरी पर इकट्ठा नहीं होती. अगर कोई टेस्ट क्रैश हो जाता है, तो सिर्फ़ इंस्ट्रुमेंटेशन का उसका इंस्टेंस बंद हो जाता है. इसलिए, आपके अन्य टेस्ट अब भी चलते रहते हैं.
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 क्रंचिंग की सुविधा बंद करनी चाहिए या अपनी इमेज को 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का इस्तेमाल करने पर ज़्यादा पाबंदियां लगाई गई हैं. इसके बजाय, आपको अपने APK में पैकेज किए जाने वाले नेटिव कोड को कंपाइल करने के लिए, CMake या ndk-build का इस्तेमाल करना चाहिए. ज़्यादा जानने के लिए, 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 डिवाइसों पर Instant Run की सुविधा ठीक से काम नहीं कर रही थी. इस बारे में ज़्यादा जानने के लिए, समस्या #235879 देखें.
- डिपेंडेंसी:
-
- Gradle 3.3 या इसके बाद का वर्शन.
- Build Tools 25.0.0 या इसके बाद का वर्शन.
- नया:
-
- Gradle 3.3 का इस्तेमाल करता है. इसमें परफ़ॉर्मेंस में सुधार किया गया है और नई सुविधाएं जोड़ी गई हैं. ज़्यादा जानकारी के लिए, Gradle के रिलीज़ नोट देखें.
- बिल्ड कैश: यह कुछ ऐसे आउटपुट सेव करता है जिन्हें Android प्लगिन, प्रोजेक्ट बनाते समय जनरेट करता है. जैसे, अनपैकेज किए गए एएआर और पहले से डेक्स की गई रिमोट डिपेंडेंसी. कैश मेमोरी का इस्तेमाल करने पर, क्लीन बिल्ड बहुत तेज़ी से तैयार होते हैं. ऐसा इसलिए होता है, क्योंकि बिल्ड सिस्टम उन फ़ाइलों को फिर से बनाने के बजाय, बाद के बिल्ड के दौरान कैश मेमोरी में सेव की गई फ़ाइलों का इस्तेमाल कर सकता है. Android प्लगिन 2.3.0 और इसके बाद के वर्शन का इस्तेमाल करने वाले प्रोजेक्ट में, डिफ़ॉल्ट रूप से बिल्ड कैश का इस्तेमाल किया जाता है. ज़्यादा जानने के लिए, Build Cache की मदद से, बिल्ड करने की स्पीड बढ़ाना लेख पढ़ें.
- इसमें
cleanBuildCacheटास्क शामिल है, जो बिल्ड कैश मेमोरी को मिटाता है. - अगर बिल्ड कैश का एक्सपेरिमेंटल वर्शन इस्तेमाल किया जा रहा है (यह प्लगिन के पुराने वर्शन में शामिल है), तो आपको अपने प्लगिन को अपडेट करके नए वर्शन पर ले जाना चाहिए.
- इसमें
- बदलाव:
-
- Android Studio 2.3 में शामिल इंस्टैंट रन की सुविधा में किए गए बदलावों के साथ काम करता है.
- बहुत बड़े प्रोजेक्ट के लिए कॉन्फ़िगरेशन में लगने वाला समय काफ़ी कम होना चाहिए.
- ConstraintLayout लाइब्रेरी के लिए, अपने-आप डाउनलोड होने से जुड़ी समस्याएं ठीक की गईं.
- अब प्लगिन, ProGuard वर्शन 5.3.2 का इस्तेमाल करता है.
- इसमें रिपोर्ट की गई गड़बड़ियों को ठीक करने के लिए कई सुधार शामिल हैं. अगर आपको कोई समस्या आती है, तो कृपया बग की रिपोर्ट सबमिट करना जारी रखें.
2.2.0 (सितंबर 2016)
- डिपेंडेंसी:
-
- Gradle 2.14.1 या इसके बाद का वर्शन.
- Build Tools 23.0.2 या इसके बाद का वर्शन.
- नया:
-
- Gradle 2.14.1 का इस्तेमाल करता है. इसमें परफ़ॉर्मेंस को बेहतर बनाने से जुड़ी सुविधाएं और नई सुविधाएं शामिल हैं. साथ ही, इसमें सुरक्षा से जुड़ी एक ऐसी समस्या को ठीक किया गया है जिसकी वजह से Gradle डेमॉन का इस्तेमाल करते समय, स्थानीय विशेषाधिकारों को बढ़ाया जा सकता है. ज़्यादा जानकारी के लिए, Gradle के रिलीज़ नोट देखें.
-
externalNativeBuild {}डीएसएल का इस्तेमाल करके, Gradle अब आपको अपने नेटिव सोर्स से लिंक करने और CMake या ndk-build का इस्तेमाल करके नेटिव लाइब्रेरी कंपाइल करने की सुविधा देता है. नेटिव लाइब्रेरी बनाने के बाद, Gradle उन्हें आपके APK में पैकेज करता है. Gradle के साथ CMake और ndk-build का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, अपने प्रोजेक्ट में C और C++ कोड जोड़ना लेख पढ़ें. - कमांड लाइन से बिल्ड चलाने पर, Gradle अब उन सभी एसडीके कॉम्पोनेंट या अपडेट को अपने-आप डाउनलोड करने की कोशिश करता है जिन पर आपका प्रोजेक्ट निर्भर करता है. ज़्यादा जानने के लिए, Gradle की मदद से, मौजूद नहीं हैं ऐसे पैकेज अपने-आप डाउनलोड होने की सुविधा लेख पढ़ें.
- कैशिंग की नई एक्सपेरिमेंटल सुविधा की मदद से, Gradle को बिल्ड करने में लगने वाले समय को कम किया जा सकता है. इसके लिए, यह सुविधा आपकी लाइब्रेरी के प्री-डेक्स्ड वर्शन को पहले से ही डेक्स कर लेती है, उन्हें सेव करती है, और उनका फिर से इस्तेमाल करती है. एक्सपेरिमेंट के तौर पर उपलब्ध इस सुविधा के इस्तेमाल के बारे में ज़्यादा जानने के लिए, बिल्ड कैश गाइड पढ़ें.
- यह नई डिफ़ॉल्ट पैकेजिंग पाइपलाइन का इस्तेमाल करके, बिल्ड की परफ़ॉर्मेंस को बेहतर बनाता है. यह पाइपलाइन, एक ही टास्क में ज़िप करने, हस्ताक्षर करने, और ज़िपलाइनिंग को मैनेज करती है.
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 को आपके ऐप्लिकेशन की main 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 अब Jacoco टेस्ट कवरेज के साथ काम करता है. इसके लिए,
testCoverageEnabledकोtrueपर सेट करना होगा. - एनोटेशन प्रोसेसर के लिए बेहतर सहायता. आपके क्लासपाथ पर मौजूद एनोटेशन प्रोसेसर, जैसे कि कोई भी
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 }
- डिफ़ॉल्ट रूप से, अगर Gradle डेमॉन का हीप साइज़ कम से कम 1.5 जीबी है, तो Jack अब Gradle की तरह ही प्रोसेस में चलता है. डेमॉन हीप का साइज़ बदलने के लिए, अपनी
gradle.propertiesफ़ाइल में यह जोड़ें:# This sets the daemon heap size to 1.5GB. org.gradle.jvmargs=-Xmx1536M
सेट किए जा सकने वाले पैरामीटर की सूची देखने के लिए, कमांड लाइन में यह कमांड चलाएं:
java -jar /build-tools/jack.jar --help-properties
- Jack अब Jacoco टेस्ट कवरेज के साथ काम करता है. इसके लिए,
-
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 के साथ काम नहीं करती. नई टूलचेन का इस्तेमाल करते समय, यह सुविधा बंद हो जाएगी. अगर आपको N Preview के लिए डेवलपमेंट करना है और Java 8 की भाषा से जुड़ी सुविधाओं का इस्तेमाल करना है, तो आपको सिर्फ़ Jack का इस्तेमाल करना होगा.
- डेवलपमेंट के दौरान कंपाइलेशन का समय कम करने के लिए, इंक्रीमेंटल Java कंपाइलेशन की सुविधा डिफ़ॉल्ट रूप से जोड़ी गई है. यह सिर्फ़ सोर्स के उन हिस्सों को फिर से कंपाइल करता है जिनमें बदलाव हुआ है या जिन्हें फिर से कंपाइल करने की ज़रूरत है. इस सुविधा को बंद करने के लिए, अपने मॉड्यूल-लेवल की
build.gradleफ़ाइल में यह कोड जोड़ें:Groovy
android { ... compileOptions { incremental false } }
Kotlin
android { ... compileOptions { incremental = false } }
-
प्रोसेस में डेक्सिंग की सुविधा जोड़ी गई है. इससे, डेक्सिंग की प्रोसेस अलग, बाहरी वीएम प्रोसेस में न होकर, बिल्ड प्रोसेस में ही होती है. इससे न सिर्फ़ इंक्रीमेंटल बिल्ड तेज़ी से बनते हैं, बल्कि पूरे बिल्ड भी तेज़ी से बनते हैं. यह सुविधा, उन प्रोजेक्ट के लिए डिफ़ॉल्ट रूप से चालू होती है जिन्होंने Gradle डेमॉन के ज़्यादा से ज़्यादा हीप साइज़ को कम से कम 2048 एमबी पर सेट किया है. इसके लिए, अपने प्रोजेक्ट की
```none org.gradle.jvmargs = -Xmx2048m ```gradle.propertiesफ़ाइल में यह शामिल करें:अगर आपने मॉड्यूल-लेवल की
```none org.gradle.jvmargs = -Xmx3072m ```build.gradleफ़ाइल मेंjavaMaxHeapSizeके लिए कोई वैल्यू तय की है, तो आपकोorg.gradle.jvmargsकोjavaMaxHeapSize+ 1024 एमबी की वैल्यू पर सेट करना होगा. उदाहरण के लिए, अगर आपनेjavaMaxHeapSizeको "2048m" पर सेट किया है, तो आपको अपने प्रोजेक्ट की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फ़ाइल में मौजूद यह कोड, एक साथ चलने वाली प्रोसेस की ज़्यादा से ज़्यादा संख्या को 4 पर सेट करता है: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> - जब
- ठीक की गई समस्याएं:
-
- उस समस्या को ठीक किया गया है जिसकी वजह से टेस्ट और मुख्य बिल्ड कॉन्फ़िगरेशन, दोनों में डुप्लीकेट एएआर डिपेंडेंसी दिखती थीं.
Gradle के लिए Android प्लगिन, वर्शन 1.5.0 (नवंबर 2015)
- डिपेंडेंसी:
-
- Gradle 2.2.1 या इसके बाद का वर्शन.
- Build Tools 21.1.1 या इसके बाद का वर्शन.
- सामान्य नोट:
-
- डेटा बाइंडिंग प्लगिन को Gradle के लिए Android प्लगिन में इंटिग्रेट किया गया है. इसे चालू करने के लिए, हर उस प्रोजेक्ट के लिए
build.gradleफ़ाइल में यह कोड जोड़ें जो इस प्लगिन का इस्तेमाल करती है: - एक नया Transform API जोड़ा गया है, ताकि तीसरे पक्ष के प्लगिन, कंपाइल की गई
.classफ़ाइलों में बदलाव कर सकें. ऐसा तब किया जा सकता है, जब इन फ़ाइलों को.dexफ़ाइलों में बदला जा रहा हो. 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क्लास सेdexgetter को बंद कर दिया गया है. अब वैरिएंट एपीआई के ज़रिए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 के साथ काम करने से जुड़ी समस्या ठीक की गई है, ताकि यह उन फ़ाइलों को अनदेखा कर सके जो क्लास नहीं हैं.
- पुराने सिस्टम के साथ काम करने की सुविधा के लिए, बिल्ड टाइम पर पीएनजी जनरेट करने के लिए, वेक्टर ड्रॉएबल की सुविधा जोड़ी गई.
Gradle के लिए Android प्लगिन, संसाधन डायरेक्ट्री में मौजूद हर वेक्टर ड्रॉएबल के लिए पीएनजी जनरेट करता है. इस डायरेक्ट्री में, एपीआई वर्शन के बारे में जानकारी नहीं दी गई होती है या ऐप्लिकेशन मेनिफ़ेस्ट में मौजूद
<uses-sdk>एलिमेंट मेंandroid:minSdkVersionएट्रिब्यूट की वैल्यू 20 या इससे कम होती है.build.gradleफ़ाइल केdefaultConfigयाproductFlavorसेक्शन में मौजूदgeneratedDensitiesप्रॉपर्टी का इस्तेमाल करके, PNG डेंसिटी सेट की जा सकती हैं. - मॉक किए जा सकने वाले
android.jarको शेयर करने की सुविधा जोड़ी गई है. इसे प्लगिन सिर्फ़ एक बार जनरेट करता है और यूनिट टेस्टिंग के लिए इस्तेमाल करता है. अब कई मॉड्यूल, जैसे किappऔरlib, इसे शेयर करते हैं. इसे फिर से जनरेट करने के लिए,$rootDir/buildमिटाएं. - Java संसाधनों को प्रोसेस करने के तरीके में बदलाव किया गया है. अब ये संसाधन, APK पैकेजिंग के दौरान प्रोसेस होने के बजाय, ओब्फ़स्केशन टास्क से पहले प्रोसेस होंगे. इस बदलाव की वजह से, पैकेज को अस्पष्ट करने के बाद, अस्पष्ट करने से जुड़े टास्क को Java संसाधनों के हिसाब से ढालने का मौका मिलता है.
- एक्सपेरिमेंटल लाइब्रेरी प्लगिन में Java Native Interface (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 ResourceTypelint की चेतावनी ठीक की गई है.
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 - डिफ़ॉल्ट बिल्ड के तरीके को इस तरह सेट करें कि APK से
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 मॉड्यूल के लिए सहायता जोड़ी गई है. इसका इस्तेमाल अलग टेस्ट मॉड्यूल के तौर पर किया जा सकता है. साथ ही,
targetProjectPathऔरtargetVariantप्रॉपर्टी का इस्तेमाल करके, APK पाथ और टारगेट वैरिएंट सेट किया जा सकता है.ध्यान दें: टेस्ट 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-स्टाइल के संसाधन शामिल करने की सुविधा जोड़ी गई.
- 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फ़ाइल की पैकेजिंग में, enum और सार्वजनिक इंस्टेंस फ़ील्ड को हैंडल करने से जुड़ी समस्या ठीक की गई.- लाइब्रेरी प्रोजेक्ट के टास्क डिपेंडेंसी से जुड़ी समस्या ठीक की गई है, ताकि बदलावों के बाद टेस्ट क्लास फिर से कंपाइल हो सकें.
- जांच वाले APK को छोटा करते समय, ProGuard फ़ाइलें लागू करने के लिए,
testProguardFileप्रॉपर्टी जोड़ी गई. - Android Debug Bridge की स्क्रीन रिकॉर्डिंग के लिए, ज़्यादा से ज़्यादा रिकॉर्डिंग का समय सेट करने के लिए,
timeOutकोड ब्लॉक मेंtimeOutप्रॉपर्टी जोड़ी गई है.adbOptions - 280 डीपीआई वाले संसाधनों के लिए सहायता जोड़ी गई.
- प्रोजेक्ट के आकलन के दौरान बेहतर परफ़ॉर्मेंस.
- Gradle की मदद से यूनिट टेस्ट चलाने की सुविधा को बेहतर बनाया गया है.
Gradle के लिए Android प्लग इन, वर्शन 1.1.3 (मार्च 2015)
- डिपेंडेंसी:
-
- Gradle 2.2.1 या इसके बाद का वर्शन.
- Build Tools 21.1.1 या इसके बाद का वर्शन.
- सामान्य नोट:
-
- टेस्ट ऐप्लिकेशन पर डुप्लीकेट डिपेंडेंसी की समस्या को ठीक किया गया है. इसकी वजह से ProGuard काम नहीं कर रहा था.
- तुलना करने वाले फ़ंक्शन को लागू करने से जुड़ी समस्या को ठीक किया गया है. यह फ़ंक्शन, JDK Comparator के नियमों का पालन नहीं करता था. साथ ही, इससे JDK 7 से जुड़ी गड़बड़ी होती थी.
Gradle के लिए Android प्लगिन, वर्शन 1.1.2 (फ़रवरी 2015)
- डिपेंडेंसी:
-
- Gradle 2.2.1 या इसके बाद का वर्शन.
- Build Tools 21.1.1 या इसके बाद का वर्शन.
- सामान्य नोट:
-
- यूनिट टेस्टिंग के लिए, मॉक किया जा सकने वाला JAR बनाते समय पाथ को सामान्य किया गया.
archivesBaseNameफ़ाइल मेंarchivesBaseNameसेटिंग को ठीक किया गया.build.gradle- लाइब्रेरी टेस्ट ऐप्लिकेशन बनाते समय, मेनिफ़ेस्ट मर्जर में प्लेसहोल्डर से जुड़ी समस्या को ठीक किया गया है.
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) के साथ काम नहीं करती हैं.
- ऐंड्रॉइड के mockable android.jar के व्यवहार को कंट्रोल करने के लिए,
android.testOptions.unitTests.returnDefaultValuesविकल्प जोड़ा गया. - टेस्ट टास्क के नामों में मौजूद
TestकोAndroidTestसे बदल दिया गया है. उदाहरण के लिए,assembleDebugTestटास्क अबassembleDebugAndroidTestटास्क है. यूनिट टेस्ट टास्क के नाम में अब भीUnitTestमौजूद है. उदाहरण के लिए,assembleDebugUnitTest. - ProGuard कॉन्फ़िगरेशन फ़ाइलों में बदलाव किया गया है, ताकि वे अब टेस्ट APK पर लागू न हों. अगर कोड छोटा करने की सुविधा चालू है, तो ProGuard, टेस्ट APK को प्रोसेस करता है. साथ ही, सिर्फ़ उस मैपिंग फ़ाइल को लागू करता है जो मुख्य APK के कोड को छोटा करते समय जनरेट होती है.
- डिपेंडेंसी मैनेज करने की सुविधा अपडेट की गई
providedऔरpackageस्कोप का इस्तेमाल करने से जुड़ी समस्याएं ठीक की गईं.ध्यान दें: ये स्कोप, एएआर (Android ARchive) पैकेज के साथ काम नहीं करते. इसलिए, एएआर पैकेज के साथ बिल्ड करने पर गड़बड़ी होगी.
- टेस्ट किए जा रहे ऐप्लिकेशन और टेस्ट ऐप्लिकेशन की डिपेंडेंसी की तुलना करने के लिए, डिपेंडेंसी रिज़ॉल्यूशन में बदलाव किया गया है. अगर दोनों ऐप्लिकेशन के लिए एक ही वर्शन वाला आर्टफ़ैक्ट मिलता है, तो उसे टेस्ट ऐप्लिकेशन में शामिल नहीं किया जाता है. उसे सिर्फ़ टेस्ट किए जा रहे ऐप्लिकेशन के साथ पैकेज किया जाता है. अगर दोनों ऐप्लिकेशन के लिए, अलग-अलग वर्शन वाला कोई आर्टफ़ैक्ट मिलता है, तो बिल्ड नहीं हो पाएगा.
- संसाधन मर्ज करने की सुविधा में,
anyDpiसंसाधन क्वालीफ़ायर के लिए सहायता जोड़ी गई. - Android के ज़्यादा मॉड्यूल वाले प्रोजेक्ट के लिए, आकलन और IDE सिंक करने की बेहतर स्पीड.
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सेटिंग को Dalvik Executable (dex) बाइटकोड में पास करने से जुड़ी समस्या ठीक की गई है.--no-optimize(समस्या 82662).targetSdkVersion16 से कम होने पर, लाइब्रेरी इंपोर्ट करते समय मेनिफ़ेस्ट मर्ज करने से जुड़ी समस्याएं ठीक की गईं.- JDK 8 के साथ Android Studio का इस्तेमाल करते समय, डेंसिटी के क्रम से जुड़ी समस्या ठीक की गई.
Gradle के लिए Android प्लगिन, वर्शन 1.0.0 (दिसंबर 2014)
- डिपेंडेंसी:
-
-
Gradle 2.2.1 से लेकर 2.3.x तक.
ध्यान दें: Android प्लगिन का यह वर्शन, Gradle 2.4 और इसके बाद के वर्शन के साथ काम नहीं करता.
- Build Tools 21.1.1 या इसके बाद का वर्शन.
-
- सामान्य नोट:
-
- प्लगिन की शुरुआती रिलीज़.