पुरानी रिलीज़

यहां 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
  }
  

बदलाव लागू करें

अब कोई क्लास जोड़ी जा सकती है. इसके बाद, कोड में किए गए बदलाव लागू करें या बदलाव लागू करें और गतिविधि फिर से शुरू करें पर क्लिक करके, कोड में किए गए बदलाव को अपने ऐप्लिकेशन पर लागू किया जा सकता है.

इन दोनों कार्रवाइयों के बीच के अंतर के बारे में ज़्यादा जानने के लिए, बदलाव लागू करें लेख पढ़ें.

इंस्टैंट ऐप्लिकेशन की सुविधा चालू करने के लिए, मेन्यू के विकल्प को फिर से फ़ैक्टर किया गया

ऐप्लिकेशन प्रोजेक्ट बनाने के बाद, अब किसी भी समय अपने बेस मॉड्यूल को तुरंत चालू किया जा सकता है. इसके लिए, यह तरीका अपनाएं:

  1. मेन्यू बार में जाकर, व्यू > टूल विंडो > प्रोजेक्ट चुनकर, प्रोजेक्ट पैनल खोलें.
  2. अपने बेस मॉड्यूल पर राइट क्लिक करें. इसका नाम आम तौर पर 'app' होता है. इसके बाद, Refactor > Enable Instant Apps Support को चुनें.
  3. दिखने वाले डायलॉग बॉक्स में, ड्रॉपडाउन मेन्यू से अपना बेस मॉड्यूल चुनें.
  4. ठीक है पर क्लिक करें.

ध्यान दें:नया प्रोजेक्ट बनाएं विज़र्ड से, अपने बुनियादी ऐप्लिकेशन मॉड्यूल को तुरंत चालू करने का विकल्प हटा दिया गया है.

ज़्यादा जानने के लिए, Google Play Instant की खास जानकारी पढ़ें.

APK ऐनालाइज़र में क्लास और तरीके के बाइटकोड को डीऑब्फ़स्केट करना

DEX फ़ाइलों की जांच करने के लिए, APK Analyzer का इस्तेमाल करते समय, क्लास और तरीके के बाइटकोड को इस तरह डिकोड किया जा सकता है:

  1. मेन्यू बार में जाकर, बिल्ड > APK का विश्लेषण करें को चुनें.
  2. इसके बाद, आपको एक डायलॉग बॉक्स दिखेगा. इसमें उस APK पर जाएं जिसकी आपको जांच करनी है और उसे चुनें.
  3. खोलें पर क्लिक करें.
  4. APK Analyzer में, वह DEX फ़ाइल चुनें जिसकी आपको जांच करनी है.
  5. DEX फ़ाइल व्यूअर में, उस APK के लिए ProGuard मैपिंग फ़ाइल लोड करें जिसका विश्लेषण किया जा रहा है.
  6. उस क्लास या तरीके पर राइट क्लिक करें जिसकी आपको जांच करनी है. इसके बाद, बाइटकोड दिखाएं को चुनें.

नेटिव टूलिंग

यहां दिए गए अपडेट, Android Studio में नेटिव (C/C++) डेवलपमेंट के साथ काम करते हैं.

Kotlin के साथ काम करने की सुविधा

Android Studio में NDK की ये सुविधाएं, पहले Java के साथ काम करती थीं. अब ये Kotlin के साथ भी काम करती हैं:

  • जेएनआई डिक्लेरेशन से, C/C++ में मौजूद उससे जुड़े फ़ंक्शन को लागू करने वाले फ़ंक्शन पर जाएं. इस मैपिंग को देखने के लिए, मैनेज किए गए सोर्स कोड फ़ाइल में लाइन नंबर के पास मौजूद C या C++ आइटम मार्कर पर कर्सर घुमाएं.

  • JNI डिक्लेरेशन के लिए, स्टब लागू करने वाला फ़ंक्शन अपने-आप बनाता है. सबसे पहले, JNI डिक्लेरेशन तय करें. इसके बाद, C/C++ फ़ाइल में “jni” या तरीके का नाम टाइप करके इसे चालू करें.

  • सोर्स कोड में, इस्तेमाल नहीं किए गए नेटिव फ़ंक्शन को चेतावनी के तौर पर हाइलाइट किया जाता है. जिन JNI एलान में लागू करने की जानकारी मौजूद नहीं होती उन्हें भी गड़बड़ी के तौर पर हाइलाइट किया जाता है.

  • नेटिव कोड में लागू किए गए किसी फ़ंक्शन का नाम बदलने (रीफ़ैक्टर करने) पर, उससे जुड़े सभी JNI एलान अपडेट हो जाते हैं. नेटिव कोड लागू करने वाले फ़ंक्शन को अपडेट करने के लिए, किसी JNI डिक्लेरेशन का नाम बदलें.

  • यह कुकी, JNI के ऐसे इंप्लिमेंटेशन के लिए सिग्नेचर की जांच करती है जो अपने-आप बाइंड हो जाते हैं.

JNI में किए गए अन्य सुधार

Android Studio में मौजूद कोड एडिटर अब JNI डेवलपमेंट के लिए बेहतर वर्कफ़्लो के साथ काम करता है. इसमें टाइप हिंट, अपने-आप पूरा होने की सुविधा, कोड की जांच, और कोड रीफ़ैक्टरिंग की सुविधा शामिल है.

नेटिव लाइब्रेरी के लिए APK फिर से लोड करना {:#3.6-reload-apk}

अगर आपके प्रोजेक्ट में मौजूद APK को IDE के बाहर अपडेट किया जाता है, तो अब आपको नया प्रोजेक्ट बनाने की ज़रूरत नहीं है. Android Studio, APK में हुए बदलावों का पता लगाता है. साथ ही, आपको इसे फिर से इंपोर्ट करने का विकल्प देता है.

सिर्फ़ Kotlin वाले APK सोर्स अटैच करना

अब प्री-बिल्ट 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 और इसके बाद के वर्शन में, जीपीएस कोऑर्डिनेट और रास्ते की जानकारी को एम्युलेट करने की सुविधा मिलती है. Emulators Extended controls खोलने पर, अब लोकेशन टैब में मौजूद विकल्पों को दो टैब में व्यवस्थित किया गया है: सिंगल पॉइंट और रास्ते.

सिंगल पॉइंट

सिंगल पॉइंट टैब में, Google Maps के वेबव्यू का इस्तेमाल करके दिलचस्पी की जगहों को खोजा जा सकता है. ठीक उसी तरह जैसे फ़ोन या ब्राउज़र पर Google Maps का इस्तेमाल करते समय किया जाता है. मैप में किसी जगह को खोजने या उस पर क्लिक करने के बाद, उसे सेव किया जा सकता है. इसके लिए, मैप में सबसे नीचे मौजूद 'सेव करें' विकल्प को चुनें. सेव की गई आपकी सभी जगहें, ज़्यादा कंट्रोल विंडो की दाईं ओर मौजूद सूची में दिखती हैं.

एम्युलेटर की जगह को मैप पर चुनी गई जगह पर सेट करने के लिए, एक्सटेंडेड कंट्रोल विंडो में सबसे नीचे दाईं ओर मौजूद, जगह सेट करें बटन पर क्लिक करें.

एम्युलेटर के एक्सटेंडेड कंट्रोल में मौजूद सिंगल पॉइंट टैब..

रास्ते

सिंगल पॉइंट टैब की तरह ही, रास्ते टैब में Google Maps का वेबव्यू दिखता है. इसका इस्तेमाल करके, दो या उससे ज़्यादा जगहों के बीच का रास्ता बनाया जा सकता है. कोई रास्ता बनाने और उसे सेव करने के लिए, यह तरीका अपनाएं:

  1. मैप व्यू में, टेक्स्ट फ़ील्ड का इस्तेमाल करके अपने रास्ते में मौजूद पहले डेस्टिनेशन को खोजें.
  2. खोज के नतीजों में से जगह चुनें.
  3. नेविगेट करें बटन चुनें.
  4. मैप पर, अपने रास्ते की शुरुआती जगह चुनें.
  5. (ज़रूरी नहीं) अपने रास्ते में और स्टॉप जोड़ने के लिए, डिलीवरी की जगह जोड़ें पर क्लिक करें.
  6. मैप व्यू में, रास्ता सेव करें पर क्लिक करके, अपना रास्ता सेव करें.
  7. रास्ते का नाम डालें और सेव करें पर क्लिक करें.

सेव किए गए रास्ते के हिसाब से एम्युलेटर को सिम्युलेट करने के लिए, सेव किए गए रास्तों की सूची से रास्ता चुनें. इसके बाद, ज़्यादा कंट्रोल विंडो में सबसे नीचे दाईं ओर मौजूद, रास्ता चलाएं पर क्लिक करें. सिमुलेशन रोकने के लिए, रास्ता रोकें पर क्लिक करें.

एम्युलेटर के बेहतर कंट्रोल में मौजूद 'रूट' टैब..

अगर आपको Emulator को तय किए गए रूट पर लगातार सिम्युलेट करना है, तो दोबारा चलाएं के बगल में मौजूद स्विच को चालू करें. एम्युलेटर को तय किए गए रास्ते पर कितनी तेज़ी से चलाना है, यह तय करने के लिए प्लेबैक स्पीड ड्रॉपडाउन से कोई विकल्प चुनें.

मल्टी-डिसप्ले की सुविधा

Android Emulator की मदद से, अब अपने ऐप्लिकेशन को एक से ज़्यादा डिसप्ले पर डिप्लॉय किया जा सकता है. ये डिसप्ले, पसंद के मुताबिक डाइमेंशन के साथ काम करते हैं. इससे आपको ऐसे ऐप्लिकेशन की जांच करने में मदद मिल सकती है जो मल्टी-विंडो और मल्टी-डिसप्ले की सुविधा के साथ काम करते हैं. वर्चुअल डिवाइस के चालू होने पर, ज़्यादा से ज़्यादा दो डिसप्ले जोड़े जा सकते हैं. इसके लिए, यह तरीका अपनाएं:

  1. बेहतर कंट्रोल खोलें और डिस्प्ले टैब पर जाएं.

  2. सेकंडरी डिसप्ले जोड़ें पर क्लिक करके, कोई दूसरा डिसप्ले जोड़ें.

  3. सेकंडरी डिसप्ले में मौजूद ड्रॉपडाउन मेन्यू में जाकर, इनमें से कोई एक काम करें:

  4. पहले से तय किए गए आसपेक्ट रेशियो में से कोई एक चुनें

  5. कस्टम को चुनें. इसके बाद, कस्टम डिसप्ले के लिए ऊंचाई, चौड़ाई, और डीपीआई सेट करें.

  6. (ज़रूरी नहीं) तीसरा डिसप्ले जोड़ने के लिए, सेकंडरी डिसप्ले जोड़ें पर क्लिक करें.

  7. चल रहे वर्चुअल डिवाइस में बताए गए डिसप्ले जोड़ने के लिए, बदलाव लागू करें पर क्लिक करें.

एक से ज़्यादा डिसप्ले जोड़ने के लिए, Emulator Extended Controls में जाकर Display टैब पर क्लिक करें.

Android Automotive OS के लिए नए वर्चुअल डिवाइस और प्रोजेक्ट टेंप्लेट

Android Studio का इस्तेमाल करके नया प्रोजेक्ट बनाते समय, अब नया प्रोजेक्ट बनाएं विज़र्ड में Automotive टैब में जाकर, तीन टेंप्लेट में से कोई एक चुना जा सकता है: No Activity, Media service, और Messaging service. मौजूदा प्रोजेक्ट के लिए, Android Automotive डिवाइसों के लिए सहायता जोड़ी जा सकती है. इसके लिए, मेन्यू बार से File > New > New Module को चुनें. इसके बाद, Automotive Module को चुनें. इसके बाद, नया मॉड्यूल बनाएं विज़र्ड, Android Automotive प्रोजेक्ट के किसी टेंप्लेट का इस्तेमाल करके नया मॉड्यूल बनाने में आपकी मदद करता है.

Android Automotive प्रोजेक्ट का टेंप्लेट चुनना..

इसके अलावा, अब Android Automotive OS डिवाइसों के लिए, Android वर्चुअल डिवाइस (एवीडी) बनाया जा सकता है. इसके लिए, वर्चुअल डिवाइस कॉन्फ़िगरेशन विज़र्ड में Automotive टैब में जाकर, इनमें से कोई एक विकल्प चुनें.

  1. Polestar 2: एक ऐसा एवीडी बनाएं जो Polestar 2 की हेड यूनिट की तरह काम करे.
  2. Automotive (1024 पिक्सल लैंडस्केप): सामान्य 1024 x 768 पिक्सल वाले Android Automotive हेड यूनिट के लिए, AVD बनाएं.

Android Automotive वर्चुअल डिवाइस चुनना..

एसडीके को फिर से डाउनलोड करने की सुविधा

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 सिंक तेज़ी से पूरा होता है और यूज़र इंटरफ़ेस (यूआई) की परफ़ॉर्मेंस बेहतर होती है. ध्यान रखें कि जब IDE, टास्क की सूची बनाने की प्रोसेस को छोड़ देता है, तो Gradle पैनल में टास्क की सूचियां खाली होती हैं. साथ ही, बिल्ड फ़ाइलों में टास्क के नाम अपने-आप पूरे होने की सुविधा काम नहीं करती.

Gradle के ऑफ़लाइन मोड को टॉगल करने के लिए नई जगह

Gradle के ऑफ़लाइन मोड को चालू या बंद करने के लिए, सबसे पहले मेन्यू बार से View > Tool Windows > Gradle चुनें. इसके बाद, Gradle विंडो में सबसे ऊपर, ऑफ़लाइन मोड टॉगल करें Gradle पैनल में Gradle ऑफ़लाइन बटन. पर क्लिक करें.

IntelliJ IDEA 2019.2

Android Studio के मुख्य आईडीई को IntelliJ IDEA से मिले सुधारों के साथ अपडेट किया गया है. यह 2019.2 रिलीज़ के ज़रिए किया गया है.

IntelliJ के अन्य वर्शन में किए गए सुधारों के बारे में ज़्यादा जानने के लिए, यहां दिए गए पेजों पर जाएं. ये सुधार, वर्शन 2019.2 में शामिल किए गए हैं:

कम्यूनिटी कॉन्ट्रिब्यूटर

हमारी कम्यूनिटी के उन सभी सदस्यों का धन्यवाद जिन्होंने Android Studio 3.6 में गड़बड़ियां ढूंढने और इसे बेहतर बनाने के अन्य तरीके खोजने में हमारी मदद की. खास तौर पर, हम उन लोगों का शुक्रिया अदा करना चाहते हैं जिन्होंने गड़बड़ियों की शिकायत की:

  • Albert Lo
  • Alexey Rott
  • एंड्रिया लेगांज़ा
  • Benedikt Kolb
  • सीज़र पुएर्ता
  • कर्टिस क्रोएट्श
  • डेमियन विएज़ोरेक
  • डेन लेव
  • डेविड बुरस्ट्रॉम
  • दीपांशु
  • ईगोर अंद्रेयेविची
  • एली ग्रैबर
  • Emin Kokalari
  • Evan Tatarka
  • फ़्रांतिसेक नागी
  • Greg Moens
  • Hannes Achleitner
  • हंस पीटर आइडे
  • हेनिंग बंक
  • ह्यूगो विसर
  • इगोर एस्कोड्रो
  • इनाकी वियार
  • Javentira Lienata
  • जो रॉजर्स
  • क्रिस्टोफ़र डेनियलसन
  • लिरान बार्सिसा
  • लुई कैड
  • लॉरेंट पिंटर
  • लुक़ाज़ वासिलकोव्स्की
  • ल्यूक फ़ील्के
  • मालविन सुतांतो
  • मासातोशी कुबोदे
  • मैथ्यू विंटर्स
  • माइकल बेली
  • मिखाल गोर्नी
  • मिहाई नेक्सु
  • माइक स्कैमेल
  • Monte Creasor
  • नेल्सन ओसाकी
  • नेल्सन ओसाकी
  • निक फ़िरमानी
  • निकलास ऐंसमन गिएर्ट्ज़
  • निकलास क्रोन
  • निकोलस लिच्टमायर
  • नीक हारमन
  • नील्स वैन होव
  • निकलास बौडी
  • Renato Goncalves
  • Roar Grønmo
  • रुस्लान बारतोव
  • सिनन कोज़ाक
  • स्लावोमिर चेरविंस्की
  • Stefan Wolf
  • स्टीफ़न डी'अमिको
  • ताओ वांग
  • Tomas Chladek
  • Tomáš Procházka
  • Tony Robalik
  • Torbjørn Sørli
  • वॉरेन ही
  • येनची लिन
  • ज़ैक स्वीर्स
  • 3.5 (अगस्त 2019)

    Android Studio 3.5, एक मेजर रिलीज़ है. यह Project Marble का नतीजा है. Android Studio 3.3 की रिलीज़ के बाद से, Project Marble के तहत कई रिलीज़ की गई हैं. इनमें आईडीई के तीन मुख्य पहलुओं को बेहतर बनाने पर फ़ोकस किया गया है: सिस्टम की परफ़ॉर्मेंस, सुविधाओं को बेहतर बनाना, और बग ठीक करना.

    इन और 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 Studio को अन्य कॉम्पोनेंट, जैसे कि Android Gradle प्लगइन से अलग अपडेट किया जा सकता है. इसलिए, नया वर्शन उपलब्ध होते ही IDE को सुरक्षित तरीके से अपडेट किया जा सकता है. साथ ही, अन्य कॉम्पोनेंट को बाद में अपडेट किया जा सकता है.

    लेआउट एडिटर

    Android Studio 3.5 में, लेआउट विज़ुअलाइज़ेशन, मैनेजमेंट, और इंटरैक्शन से जुड़े कई सुधार किए गए हैं.

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

    चुने गए यूज़र इंटरफ़ेस (यूआई) एलिमेंट के लिए, कंस्ट्रेंट के संबंध.

    चुने गए यूज़र इंटरफ़ेस (यूआई) एलिमेंट के लिए, कंस्ट्रेंट के संबंध.

    इसी तरह, अब किसी शर्त को मिटाने के लिए, उसे चुनें और Delete बटन दबाएं. Control बटन (macOS पर Command) को दबाकर रखने के बाद, कंस्ट्रेंट ऐंकर पर क्लिक करके भी कंस्ट्रेंट को मिटाया जा सकता है. ध्यान दें कि Control या Command कुंजी को दबाकर रखने और किसी ऐंकर पर कर्सर घुमाने पर, उससे जुड़ी सभी पाबंदियां लाल रंग में बदल जाती हैं. इससे पता चलता है कि उन्हें मिटाने के लिए क्लिक किया जा सकता है.

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

    इस ऐनिमेशन में, कंस्ट्रेंट विidget का इस्तेमाल करके कंस्ट्रेंट बनाने का तरीका दिखाया गया है.

    कॉन्स्ट्रेंट बनाने के लिए, कॉन्स्ट्रेंट विजेट का इस्तेमाल करना .

    कंस्ट्रेंट बनाते समय, लेआउट एडिटर अब सिर्फ़ उन एंकर पॉइंट को दिखाता है जिन पर कंस्ट्रेंट लागू किया जा सकता है. इससे पहले, लेआउट एडिटर सभी व्यू पर सभी ऐंकर पॉइंट को हाइलाइट करता था. भले ही, उन्हें सीमित किया जा सकता हो या नहीं. इसके अलावा, नीले रंग का ओवरले अब पाबंदी के टारगेट को हाइलाइट करता है. यह हाइलाइटिंग खास तौर पर तब काम आती है, जब आपको किसी ऐसे कॉम्पोनेंट को सीमित करना हो जो किसी दूसरे कॉम्पोनेंट के साथ ओवरलैप होता है.

    Android Studio 3.4 में, ओवरलैप होने वाले कॉम्पोनेंट के लिए कंस्ट्रेंट बनाने का तरीका दिखाने वाला ऐनिमेशन.

    Android Studio 3.4 में, ओवरलैप होने वाले कॉम्पोनेंट के लिए कंस्ट्रेंट बनाना.

    Android Studio 3.5 में, ओवरलैप होने वाले कॉम्पोनेंट के लिए कंस्ट्रेंट बनाने का तरीका दिखाने वाला ऐनिमेशन.

    Android Studio 3.5 में, ओवरलैप होने वाले कॉम्पोनेंट के लिए कंस्ट्रेंट बनाना.

    ऊपर दिए गए अपडेट के अलावा, Android Studio 3.5 में Layout Editor से जुड़े ये सुधार भी किए गए हैं:

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

    इन बदलावों के बारे में ज़्यादा जानने के लिए, Android Studio Project Marble: Layout Editor देखें.

    डेटा बाइंडिंग

    डेटा बाइंडिंग के लिए, इंक्रीमेंटल एनोटेशन प्रोसेसिंग की सुविधा जोड़ने के अलावा, IDE, एक्सएमएल में डेटा बाइंडिंग एक्सप्रेशन बनाते समय स्मार्ट एडिटर की सुविधाओं और परफ़ॉर्मेंस को बेहतर बनाता है.

    Android Studio 3.4 पर कोड एडिटर की परफ़ॉर्मेंस दिखाने वाला ऐनिमेशन.

    Android Studio 3.4 पर कोड एडिटर की परफ़ॉर्मेंस.

    Android Studio 3.5 पर कोड एडिटर की परफ़ॉर्मेंस दिखाने वाला ऐनिमेशन.

    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 IDE के मुख्य हिस्से को IntelliJ IDEA से मिले सुधारों के साथ अपडेट किया गया है. ये सुधार, 2019.1 रिलीज़ के ज़रिए किए गए हैं. जैसे, थीम को पसंद के मुताबिक बनाना.

    Android Studio के साथ शामिल किया गया IntelliJ का आखिरी वर्शन 2018.3.4 था. Android Studio के इस वर्शन में, IntelliJ के अन्य वर्शन में किए गए सुधारों के बारे में ज़्यादा जानने के लिए, गड़बड़ी ठीक करने से जुड़े ये अपडेट देखें:

    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 इन डिपेंडेंसी को हल करता है. इसके लिए, यह तरीका अपनाएं:

    1. पीएसडी के बाएं पैनल में, डिपेंडेंसी चुनें.
    2. मॉड्यूल पैनल में, वह मॉड्यूल चुनें जिसके लिए आपको हल की गई डिपेंडेंसी की जांच करनी है.
    3. PSD के दाईं ओर, हल की गई डिपेंडेंसी वाला पैनल खोलें. यह पैनल यहां दिखाया गया है.

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

    चुनी गई डिपेंडेंसी के टाइप के आधार पर, आपको नीचे दिए गए डायलॉग जैसा एक डायलॉग दिखेगा. इससे आपको मॉड्यूल में डिपेंडेंसी जोड़ने में मदद मिलेगी.

    बिल्ड वैरिएंट

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

    सुझाव

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

    नया रिसोर्स मैनेजर

    संसाधन मैनेजर, एक नई टूल विंडो है. इसका इस्तेमाल, अपने ऐप्लिकेशन में संसाधनों को इंपोर्ट करने, बनाने, मैनेज करने, और इस्तेमाल करने के लिए किया जाता है. टूल विंडो खोलने के लिए, मेन्यू बार में जाकर व्यू > टूल विंडो > संसाधन मैनेजर को चुनें. 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 से पहले, ProGuard, dexing और desugaring से अलग कंपाइलिंग स्टेप था.

    अब R8 की मदद से, डिसुगरिंग, श्रिंकिंग, अस्पष्ट करना, ऑप्टिमाइज़ करना, और डेक्सिंग (D8) जैसे सभी काम एक ही चरण में पूरे किए जा सकते हैं. इसके बारे में यहां बताया गया है.

    R8 की मदद से, डिसुगरिंग, श्रिंकिंग, अस्पष्ट करना, ऑप्टिमाइज़ करना, और डेक्सिंग, ये सभी काम एक ही कंपाइल स्टेप में किए जाते हैं.

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

    Android Studio, इन डायरेक्ट्री को मिटाने के लिए चुनता है:

    • Linux: ~/.AndroidStudio[Preview]X.Y
    • Mac: ~/Library/{Preferences, Caches, Logs, Application Support}/AndroidStudio[Preview]X.Y
    • Windows: %USER%.AndroidStudio[Preview]X.Y

    Lint की सुविधा में सुधार

    Gradle से शुरू करने पर, 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, और HTML शामिल हैं. फ़ॉर्मैट किए गए टेक्स्ट को दिखाने के लिए, जवाब और अनुरोध टैब में, पार्स किया गया डेटा देखें लिंक पर क्लिक करें. साथ ही, रॉ टेक्स्ट को दिखाने के लिए, सोर्स देखें लिंक पर क्लिक करें.

    ज़्यादा जानकारी के लिए, नेटवर्क प्रोफ़ाइलर की मदद से नेटवर्क ट्रैफ़िक की जांच करना लेख पढ़ें.

    एसडीके कॉम्पोनेंट अपने-आप डाउनलोड होने की सुविधा

    जब आपके प्रोजेक्ट को 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 ऐप्लिकेशन बंडल अब इंस्टैंट ऐप्लिकेशन के साथ काम करते हैं

    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 > Preferences > Experimental > 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 को नई Android एक्सटेंशन लाइब्रेरी में माइग्रेट कर रहे हैं. इसके लिए, androidx नेमस्पेस का इस्तेमाल किया जा रहा है. ज़्यादा जानकारी के लिए, 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 उस डेटा को मौजूदा सेशन में एक अलग एंट्री के तौर पर जोड़ता है. इसमें आपके ऐप्लिकेशन की नेटवर्क गतिविधि भी शामिल होती है. साथ ही, डेटा की तुलना करने के लिए, रिकॉर्डिंग के बीच आसानी से स्विच किया जा सकता है.

    सिस्टम ट्रेस करने वाला टूल

    अपने डिवाइस के सिस्टम सीपीयू और थ्रेड ऐक्टिविटी की जांच करने के लिए, सीपीयू प्रोफ़ाइलर में जाकर, नया सिस्टम ट्रेस कॉन्फ़िगरेशन चुनें. यह ट्रेस कॉन्फ़िगरेशन, 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 फ़ाइल नाम एक्सटेंशन के साथ सेव करें.

    ऐप्लिकेशन शुरू होने के दौरान सीपीयू की गतिविधि रिकॉर्ड करें

    अब अपने ऐप्लिकेशन के स्टार्टअप के दौरान सीपीयू की गतिविधि को रिकॉर्ड किया जा सकता है. इसके लिए, यह तरीका अपनाएं:

    1. मुख्य मेन्यू में जाकर, चलाएं > कॉन्फ़िगरेशन में बदलाव करें को चुनें.
    2. अपने पसंदीदा रन कॉन्फ़िगरेशन के प्रोफ़ाइलिंग टैब में जाकर, स्टार्टअप पर किसी तरीके की ट्रेसिंग रिकॉर्ड करना शुरू करें के बगल में मौजूद बॉक्स पर सही का निशान लगाएं.
    3. ड्रॉपडाउन मेन्यू से, इस्तेमाल करने के लिए कोई सीपीयू रिकॉर्डिंग कॉन्फ़िगरेशन चुनें.
    4. अपने ऐप्लिकेशन को Android 8.0 (एपीआई लेवल 26) या उसके बाद के वर्शन पर चलने वाले डिवाइस पर डिप्लॉय करें. इसके लिए, चलाएं > प्रोफ़ाइल बनाएं को चुनें.
    सीपीयू ट्रेस एक्सपोर्ट करना

    सीपीयू प्रोफ़ाइलर की मदद से सीपीयू की गतिविधि रिकॉर्ड करने के बाद, डेटा को .trace फ़ाइल के तौर पर एक्सपोर्ट किया जा सकता है. इससे डेटा को दूसरों के साथ शेयर किया जा सकता है या बाद में इसकी जांच की जा सकती है.

    सीपीयू की गतिविधि रिकॉर्ड करने के बाद, ट्रेस एक्सपोर्ट करने के लिए यह तरीका अपनाएं:

    1. सीपीयू टाइमलाइन से जिस रिकॉर्डिंग को एक्सपोर्ट करना है उस पर राइट क्लिक करें.
    2. ड्रॉपडाउन मेन्यू से, ट्रेस एक्सपोर्ट करें चुनें.
    3. उस जगह पर जाएं जहां आपको फ़ाइल सेव करनी है. इसके बाद, सेव करें पर क्लिक करें.
    सीपीयू की ट्रेस फ़ाइलें इंपोर्ट करना और उनकी जांच करना

    अब 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) के साथ काम करने के लिए, लिंट की जांच से जुड़े कई मेटाडेटा अपडेट किए गए हैं. जैसे, सेवा कास्ट की जांच.

    नए वैरिएंट पर लिंट चलाने पर चेतावनी

    लिंट अब यह रिकॉर्ड करता है कि किस वैरिएंट और वर्शन के साथ बेसलाइन रिकॉर्ड की गई है. अगर आपने लिंट को किसी ऐसे वैरिएंट पर चलाया है जिसके साथ बेसलाइन नहीं बनाई गई थी, तो लिंट आपको इसकी सूचना देगा.

    मौजूदा लिंट चेक में सुधार

    Android Studio 3.2 में, मौजूदा लिंट चेक की सुविधा को बेहतर बनाया गया है. उदाहरण के लिए, संसाधन साइकल की जांचें अब अन्य संसाधन टाइप पर भी लागू होती हैं. साथ ही, अनुवाद का पता लगाने वाला टूल, Editor में तुरंत ही छूटे हुए अनुवादों का पता लगा सकता है.

    समस्याओं के आईडी को ज़्यादा खोजे जाने लायक बनाना

    समस्या के आईडी अब ज़्यादा जगहों पर दिखते हैं. इनमें जांच के नतीजे वाली विंडो भी शामिल है. इससे आपको build.gradle में lintOptions के ज़रिए, किसी खास जांच को चालू या बंद करने के लिए ज़रूरी जानकारी आसानी से मिल जाती है.

    ज़्यादा जानकारी के लिए, Gradle की मदद से लिंट के विकल्प कॉन्फ़िगर करना लेख पढ़ें.

    डेटा बाइंडिंग V2

    डेटा बाइंडिंग V2 अब डिफ़ॉल्ट रूप से चालू है और यह V1 के साथ काम करता है. इसका मतलब है कि अगर आपके पास ऐसी लाइब्रेरी डिपेंडेंसी हैं जिन्हें V1 के साथ कंपाइल किया गया है, तो उन्हें डेटा बाइंडिंग V2 का इस्तेमाल करने वाले प्रोजेक्ट के साथ इस्तेमाल किया जा सकता है. हालांकि, ध्यान दें कि V1 का इस्तेमाल करने वाले प्रोजेक्ट, V2 के साथ कंपाइल की गई डिपेंडेंसी का इस्तेमाल नहीं कर सकते.

    D8 डिशुगरिंग

    Android Studio 3.1 में, हमने D8 टूल में डिसुगरिंग के चरण को एक्सपेरिमेंट के तौर पर उपलब्ध कराया है. इससे बिल्ड करने में लगने वाला कुल समय कम हो जाता है. Android Studio 3.2 में, D8 की मदद से डिसुगरिंग की सुविधा डिफ़ॉल्ट रूप से चालू होती है.

    कोड छोटा करने की नई सुविधा

    R8, कोड का साइज़ कम करने और उसे अस्पष्ट बनाने वाला नया टूल है. यह ProGuard की जगह लेता है. अपने प्रोजेक्ट की gradle.properties फ़ाइल में यह कोड शामिल करके, R8 के झलक वर्शन का इस्तेमाल शुरू किया जा सकता है:

          android.enableR8 = true
        

    मल्टी-एपीके के लिए डिफ़ॉल्ट एबीआई बदले गए

    जब अलग-अलग एबीआई को टारगेट करने वाले कई APK बनाए जाते हैं, तो प्लगिन डिफ़ॉल्ट रूप से इन एबीआई के लिए APK जनरेट नहीं करता: 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) कनेक्शन के ज़रिए सेट अप करने और इस्तेमाल करने के लिए, चरण-दर-चरण निर्देश दिए गए हैं.

    Assistant को शुरू करने के लिए, Tools > Connection Assistant चुनें.

    ADB कनेक्शन असिस्टेंट, Assistant पैनल के कई पेजों में निर्देश, कॉन्टेक्स्ट के हिसाब से कंट्रोल, और कनेक्ट किए गए डिवाइसों की सूची दिखाती है.

    एम्युलेटर से जुड़े सुधार

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

    AVD स्नैपशॉट को सेव करने, लोड करने, और मैनेज करने के कंट्रोल अब एम्युलेटर की एक्सटेंडेड कंट्रोल विंडो में मौजूद स्नैपशॉट टैब में हैं.

    ज़्यादा जानकारी के लिए, स्नैपशॉट देखें.

    एम्युलेटर में नया क्या है और क्या बदला है, इस बारे में ज़्यादा जानकारी के लिए, एम्युलेटर के रिलीज़ नोट देखें.

    3.1 (मार्च 2018)

    Android Studio 3.1.0 एक अहम रिलीज़ है. इसमें कई नई सुविधाएं और सुधार शामिल हैं.

    3.1.4 (अगस्त 2018)

    Android Studio 3.1 के इस अपडेट में, ये बदलाव किए गए हैं और गड़बड़ियां ठीक की गई हैं:

    • अब बंडल किए गए Kotlin का वर्शन 1.2.50 है.
    • नए प्रोजेक्ट, kotlin-stdlib-jre* आर्टफ़ैक्ट के बजाय kotlin-stdlib-jdk* artifacts की मदद से बनाए जाते हैं. kotlin-stdlib-jre* आर्टफ़ैक्ट अब काम नहीं करते.
    • ProGuard के नियमों को R8 पार्स करने की प्रोसेस को बेहतर बनाया गया है.
    • इन गड़बड़ियों को ठीक कर दिया गया है:
      • Kotlin की मुख्य क्लास को चलाने की कोशिश करते समय यह गड़बड़ी हुई: "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 सिंटैक्स को हाइलाइट करने की सुविधा काम करती है.
    • SQL में किसी टेबल के नाम पर राइट क्लिक करके, उसका नाम बदला जा सकता है. इससे, उससे जुड़ा Java या Kotlin कोड भी बदल जाता है. जैसे, क्वेरी का रिटर्न टाइप. नाम बदलने की प्रोसेस, दूसरी दिशा में भी काम करती है. इसलिए, किसी Java क्लास या फ़ील्ड का नाम बदलने पर, उससे जुड़ा एसक्यूएल कोड फिर से लिखा जाता है.
    • इस्तेमाल के उदाहरण ढूंढें सुविधा का इस्तेमाल करने पर, SQL के इस्तेमाल के उदाहरण दिखते हैं. इसके लिए, राइट क्लिक करें और कॉन्टेक्स्ट मेन्यू से इस्तेमाल के उदाहरण ढूंढें चुनें.
    • Java या Kotlin कोड में किसी SQL इकाई के एलान पर जाने के लिए, इकाई पर क्लिक करते समय 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 3.0.0 के लिए Android प्लग इन

    Gradle के लिए नए Android प्लगिन में कई सुधार और नई सुविधाएं शामिल हैं. हालांकि, यह मुख्य रूप से उन प्रोजेक्ट के लिए बिल्ड परफ़ॉर्मेंस को बेहतर बनाता है जिनमें बड़ी संख्या में मॉड्यूल होते हैं. इन बड़े प्रोजेक्ट के साथ नए प्लगिन का इस्तेमाल करते समय, आपको ये समस्याएं आ सकती हैं:

    • डिपेंडेंसी को बाद में हल करने की नई सुविधा की वजह से, कॉन्फ़िगरेशन को तेज़ी से बनाया जा सकता है.
    • सिर्फ़ उन प्रोजेक्ट और वैरिएंट के लिए वैरिएंट के हिसाब से डिपेंडेंसी रिज़ॉल्यूशन जिन्हें बनाया जा रहा है.
    • कोड या संसाधनों में सामान्य बदलाव करने पर, इंक्रीमेंटल बिल्ड प्रोसेस तेज़ी से पूरी होती है.

    ध्यान दें: इन सुधारों के लिए, कुछ ऐसे बड़े बदलाव करने पड़े हैं जिनकी वजह से प्लगिन के काम करने के कुछ तरीके, डीएसएल, और एपीआई काम नहीं कर रहे हैं. वर्शन 3.0.0 पर अपग्रेड करने के लिए, आपको अपनी बिल्ड फ़ाइलों और Gradle प्लग इन में बदलाव करने पड़ सकते हैं.

    इस वर्शन में ये चीज़ें भी शामिल हैं:

    • Android 8.0 के लिए सहायता.
    • भाषा के संसाधनों के आधार पर अलग-अलग APK बनाने की सुविधा.
    • Java 8 लाइब्रेरी और Java 8 भाषा की सुविधाओं के साथ काम करता है (Jack कंपाइलर के बिना).
    • Android Test Support Library 1.0 (Android Test Utility और Android Test Orchestrator) के साथ काम करता है.
    • ndk-build और cmake की मदद से ऐप्लिकेशन बनाने की स्पीड को बेहतर बनाया गया है.
    • Gradle सिंक करने की स्पीड को बेहतर बनाया गया है.
    • AAPT2 अब डिफ़ॉल्ट रूप से चालू होता है.
    • ndkCompile का इस्तेमाल अब ज़्यादा सीमित कर दिया गया है. इसके बजाय, आपको CMake या ndk-build का इस्तेमाल करके, उस नेटिव कोड को कंपाइल करना चाहिए जिसे आपको अपने APK में पैकेज करना है. ज़्यादा जानने के लिए, ndkcompile से माइग्रेट करना लेख पढ़ें.

    क्या-क्या बदलाव हुए हैं, इस बारे में ज़्यादा जानने के लिए 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 टाइमलाइन पर क्लिक करके, इससे जुड़े प्रोफ़ाइलर टूल ऐक्सेस करें.

    सीपीयू प्रोफ़ाइलर

    सीपीयू प्रोफ़ाइलर की मदद से, अपने ऐप्लिकेशन के सीपीयू थ्रेड के इस्तेमाल का विश्लेषण किया जा सकता है. इसके लिए, आपको सीपीयू के सैंपल या इंस्ट्रुमेंट किए गए ट्रेस को ट्रिगर करना होगा. इसके बाद, अलग-अलग डेटा व्यू और फ़िल्टर का इस्तेमाल करके, सीपीयू की परफ़ॉर्मेंस से जुड़ी समस्याओं को हल किया जा सकता है.

    ज़्यादा जानकारी के लिए, सीपीयू प्रोफ़ाइलर गाइड देखें.

    मेमोरी प्रोफ़ाइलर

    मेमोरी प्रोफ़ाइलर की मदद से, मेमोरी लीक और मेमोरी चर्न का पता लगाया जा सकता है. इनकी वजह से, ऐप्लिकेशन में रुकावटें आ सकती हैं, वह फ़्रीज़ हो सकता है, और यहां तक कि क्रैश भी हो सकता है. यह आपके ऐप्लिकेशन की मेमोरी के इस्तेमाल का रीयलटाइम ग्राफ़ दिखाता है. इससे आपको हीप डंप कैप्चर करने, गार्बेज कलेक्शन को लागू करने, और मेमोरी के बंटवारे को ट्रैक करने में मदद मिलती है.

    ज़्यादा जानकारी के लिए, मेमोरी प्रोफ़ाइलर गाइड देखें.

    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 बनाए जा सकते हैं. इसके लिए, दो नए मॉड्यूल टाइप का इस्तेमाल करें: Instant App मॉड्यूल और फ़ीचर मॉड्यूल. इनके लिए, 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 के नतीजों में दिख रहे हैं.
    • तीसरे चरण में, गड़बड़ियों की जांच करें पर क्लिक करके पुष्टि करें कि आपके ऐप्लिकेशन में इंडेक्स किए जा सकने वाले ऑब्जेक्ट, निजी कॉन्टेंट इंडेक्स में जोड़ दिए गए हैं.

    ऐप लिंक असिस्टेंट को इन नई सुविधाओं के साथ अपडेट किया गया है:

    • हर यूआरएल मैपिंग के लिए, यूआरएल टेस्ट जोड़ें, ताकि यह पक्का किया जा सके कि इंटेंट फ़िल्टर, असली यूआरएल को हैंडल करते हैं.

      इन यूआरएल टेस्ट को मैन्युअल तरीके से भी तय किया जा सकता है. इसके लिए, यहां बताया गया <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 repository डिफ़ॉल्ट रूप से शामिल होती है. अपने मौजूदा प्रोजेक्ट को अपडेट करने के लिए, टॉप-लेवल की 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 को अपडेट किया गया है.
    • एनडीके के R14 या इसके बाद के वर्शन का इस्तेमाल करते समय, एनडीके बिल्ड से जुड़ी गड़बड़ियों को ठीक किया गया है.

    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 &gt;
      New &gt; 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&lt;T&gt;)">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 projects
          <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&amp;q=target%3D2.3+status%3DReleased&amp;colspec=ID+Status+Priority+Owner+Summary+Stars+Reporter+Opened&amp;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&amp;q=target%3D2.2.3+status%3AReleased+&amp;colspec=ID+Status+Priority+Owner+Summary+Stars+Reporter+Opened&amp;cells=tiles">
      See all bug fixes in 2.2.3</a>.
    </p>
    

    2.2.2 (अक्टूबर 2016)

    <p>
      This is a minor update to Android Studio 2.2. It includes a number of small
      changes and bug fixes, including:
    </p>
    
    <ul>
      <li>When reporting Instant Run issues through the IDE, the report now also
      includes logcat output for <code>InstantRun</code> events. To help us
      improve Instant Run, please <a href=
      "/studio/run/index.html#submit-feedback">enable extra logging and report
      any issues</a>.
      </li>
      <li>A number of small bug fixes for Gradle.
      </li>
      <li>A fix for problems with generating multiple APKs.
      </li>
    </ul>
    

    2.2.1 (अक्टूबर 2016)

    <p>
      This is a minor update to Android Studio 2.2. It includes several bug fixes
      and a new feature to enable extra logging to help us troubleshoot Instant
      Run issues—to help us improve Instant Run, please <a href=
      "/studio/run/index.html#submit-feedback">enable extra logging and report
      any issues</a>.
    </p>
    

    नया

    • लेआउट एडिटर का नया वर्शन. इसमें ConstraintLayout के साथ काम करने के लिए, कस्टम टूल बनाए गए हैं.
    • <li>New <strong><a href=
      "http://tools.android.com/tech-docs/layout-inspector">Layout
      Inspector</a></strong> lets you examine snapshots of your layout hierarchy
      while your app is running on the emulator or a device.
      </li>
      
      <li>New <strong><a href="/studio/write/firebase.html">Assistant</a></strong>
      window to help you integrate Firebase services into your app.
      </li>
      
      <li>New <strong><a href="/studio/debug/apk-analyzer.html">APK
      Analyzer</a></strong> tool so you can inspect the contents of your packaged
      app.
      </li>
      
      <li>New <strong><a href=
      "http://tools.android.com/tech-docs/test-recorder">Espresso Test
      Recorder</a></strong> tool (currently in beta) to help you create UI tests by
      recording your own interactions.
      </li>
      
      <li>New <strong><a href=
      "http://tools.android.com/tech-docs/build-cache">build cache</a></strong>
      (currently experimental) to speed up build performance.
      </li>
      
      <li>New <strong>C/C++ build integration with CMake and ndk-build</strong>.
      Compile and build new or existing native code into libraries packaged into
      your APK, and debug using lldb. For new projects, Android Studio uses CMake
      by default, but also supports ndk-build for existing projects. To learn how
      to include native code in your Android application, read <a href=
      "/studio/projects/add-native-code.html">Add C and C++ Code to Your
      Project</a>. To learn how to debug native code with lldb, see <a href=
      "/studio/debug/index.html#debug-native">Debug Native Code</a>.
      </li>
      
      <li>New <strong><a href="/studio/intro/index.html#sample-code">Samples
      Browser</a></strong> so you can easily look up Google Android sample code
      from within Android Studio to jump start app development.
      </li>
      
      <li>New <strong>Merged Manifest Viewer</strong> to help you diagnose how your
      manifest file merges with your app dependencies across project build
      variants.
      </li>
      
      <li>The <strong>Run</strong> window now contains log messages for the current
      running app. Note that you can configure the <a href=
      "/studio/debug/am-logcat.html">logcat Monitor</a> display, but not the
      <strong>Run</strong> window.
      </li>
      
      <li>New <strong><a href="/studio/run/emulator.html">Android
      Emulator</a></strong> features:
        <ul>
          <li>Added new <strong>Virtual</strong> <strong>Sensors</strong> and
          <strong>Cellular</strong> &gt; <strong>Signal Strength</strong> controls.
          </li>
          <li>Added an <strong>LTE</strong> option to the <strong>Cellular</strong>
          &gt; <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 &gt; Project
      Structure &gt; SDK Location</strong>. You can switch to use the new bundled
      JDK by clicking <strong>File &gt; Project Structure &gt; 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)
      • अगर आईडीई के बाहर कोड में बदलाव किए जाते हैं, तो इंस्टेंट रन उन बदलावों को नहीं पहचानता. (बग: #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 wont 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 डिसप्ले का इस्तेमाल करके, किसी गतिविधि में ऐप्लिकेशन इंडेक्सिंग एपीआई कॉल की जांच भी की जा सकती है. Android lint टूल में अब डीप लिंक और ऐप्लिकेशन इंडेक्सिंग एपीआई से जुड़ी कुछ समस्याओं के लिए चेतावनियां दिखती हैं.
    • कोड एडिटर में कस्टम व्यू के लिए कोड पूरा करते समय, छोटे नामों का इस्तेमाल करने की सुविधा जोड़ी गई.
    • पुराने सिस्टम के साथ काम करने की सुविधा के लिए, वेक्टर ऐसेट स्टूडियो में ज़्यादा 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 स्पेसिफ़िकेशन के साथ-साथ, पुराने सिस्टम के साथ काम करने की सुविधा के लिए appcompat Support 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 एमुलेटर सपोर्ट जोड़ा गया.
    • Lint की चेतावनियों को ठीक करने की प्रोसेस को आसान बनाया गया है. इसके लिए, क्विक फ़िक्स जोड़े गए हैं. जैसे, 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 प्लगिन के इस वर्शन के लिए, ये ज़रूरी हैं:

    नई सुविधाएं

    Android Gradle प्लग इन के इस वर्शन में ये नई सुविधाएं शामिल हैं.

    बाइंडिंग देखें

    व्यू बाइंडिंग, आपके कोड में व्यू का रेफ़रंस देते समय कंपाइल-टाइम सेफ़्टी उपलब्ध कराती है. अब findViewById() की जगह, अपने-आप जनरेट होने वाले बाइंडिंग क्लास रेफ़रंस का इस्तेमाल किया जा सकता है. व्यू बाइंडिंग का इस्तेमाल शुरू करने के लिए, हर मॉड्यूल की build.gradle फ़ाइल में यह शामिल करें:

          android {
              viewBinding.enabled = true
          }
          
          android {
              viewBinding.enabled = true
          }
          

    ज़्यादा जानने के लिए, व्यू बाइंडिंग का दस्तावेज़ पढ़ें.

    Maven Publish प्लगिन के लिए सहायता

    Android Gradle प्लगिन में Maven Publish Gradle प्लगिन के लिए सहायता शामिल है. इसकी मदद से, बिल्ड आर्टफ़ैक्ट को Apache Maven रिपॉज़िटरी में पब्लिश किया जा सकता है. Android Gradle प्लगिन, आपके ऐप्लिकेशन या लाइब्रेरी मॉड्यूल में मौजूद हर बिल्ड वैरिएंट आर्टफ़ैक्ट के लिए एक कॉम्पोनेंट बनाता है. इसका इस्तेमाल, Maven रिपॉज़िटरी में पब्लिकेशन को पसंद के मुताबिक बनाने के लिए किया जा सकता है.

    ज़्यादा जानने के लिए, Maven Publish प्लगिन का इस्तेमाल करने के तरीके के बारे में जानकारी देने वाले पेज पर जाएं.

    पैकेजिंग के लिए डिफ़ॉल्ट तौर पर इस्तेमाल होने वाला नया टूल

    आपके ऐप्लिकेशन का डीबग वर्शन बनाते समय, प्लगिन आपके APK को बनाने के लिए, पैकेजिंग टूल का इस्तेमाल करता है. इसे zipflinger कहा जाता है. इस नए टूल से, बिल्ड की स्पीड में सुधार होगा. अगर नई पैकेजिंग टूल आपकी उम्मीद के मुताबिक काम नहीं करता है, तो कृपया बग की शिकायत करें. पैकेजिंग के पुराने टूल का इस्तेमाल करने के लिए, अपनी gradle.properties फ़ाइल में यह जानकारी शामिल करें:

            android.useNewApkCreator=false
          
    नेटिव बिल्ड एट्रिब्यूशन

    अब यह तय किया जा सकता है कि Clang को आपके प्रोजेक्ट में मौजूद हर C/C++ फ़ाइल को बनाने और लिंक करने में कितना समय लगेगा. Gradle, Chrome ट्रेस आउटपुट कर सकता है. इसमें कंपाइलर इवेंट के लिए टाइमस्टैंप होते हैं, ताकि आपको अपने प्रोजेक्ट को बनाने में लगने वाले समय के बारे में बेहतर जानकारी मिल सके. इस बिल्ड एट्रिब्यूशन फ़ाइल को आउटपुट करने के लिए, यह तरीका अपनाएं:

    1. Gradle बिल्ड चलाते समय, -Pandroid.enableProfileJson=true फ़्लैग जोड़ें. उदाहरण के लिए:

      gradlew assembleDebug -Pandroid.enableProfileJson=true

    2. Chrome ब्राउज़र खोलें और खोज बार में chrome://tracing टाइप करें.

    3. लोड करें बटन पर क्लिक करें और फ़ाइल ढूंढने के लिए, <var>project-root</var>/build/android-profile पर जाएं. फ़ाइल का नाम profile-<var>timestamp</var>.json.gz है.

    व्यूअर में सबसे ऊपर, नेटिव बिल्ड एट्रिब्यूशन का डेटा देखा जा सकता है:

    Chrome में नेटिव बिल्ड एट्रिब्यूशन ट्रेस की सुविधा

    व्यवहार में बदलाव

    इस प्लगिन के इस वर्शन का इस्तेमाल करने पर, आपको व्यवहार में ये बदलाव दिख सकते हैं.

    डिफ़ॉल्ट रूप से, कंप्रेस नहीं की गई और पहले से मशीन कोड में बदली गई लाइब्रेरी को पैकेज किया जाता है

    ऐप्लिकेशन बनाते समय, प्लगिन अब डिफ़ॉल्ट रूप से 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 में तय नहीं किया है, तो Android Gradle प्लगिन उस संसाधन को आपके प्रोजेक्ट को कंपाइल करते समय शामिल नहीं करेगा. इस बदलाव से, 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 प्लगिन के इस वर्शन के लिए, ये ज़रूरी हैं:

    3.5.4 (जुलाई 2020)

    इस छोटे से अपडेट में, 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 प्लगिन के इस वर्शन के लिए, ये ज़रूरी हैं:

    3.4.3 (जुलाई 2020)

    इस छोटे से अपडेट में, 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 प्लग इन के बंद होने की चेतावनी: अगर अब भी झटपट ऐप्लिकेशन बनाने के लिए com.android.feature प्लग इन का इस्तेमाल किया जा रहा है, तो Android Gradle प्लग इन 3.4.0 आपको इस प्लग इन के बंद होने की चेतावनी देगा. यह पक्का करने के लिए कि प्लगिन के आने वाले वर्शन पर भी झटपट ऐप्लिकेशन बनाया जा सके, अपने झटपट ऐप्लिकेशन को डाइनैमिक फ़ीचर प्लगिन का इस्तेमाल करने के लिए माइग्रेट करें. इससे आपको इंस्टॉल किए गए ऐप्लिकेशन और झटपट ऐप्लिकेशन, दोनों को एक ही Android ऐप्लिकेशन बंडल से पब्लिश करने की सुविधा भी मिलती है.

    • R8 डिफ़ॉल्ट रूप से चालू होता है: R8, एक ही चरण में डेसुगरिंग, श्रिंकिंग, अस्पष्ट करना, ऑप्टिमाइज़ करना, और डेक्सिंग को इंटिग्रेट करता है. इससे बिल्ड की परफ़ॉर्मेंस में काफ़ी सुधार होता है. R8 को Android Gradle प्लग इन 3.3.0 में पेश किया गया था. अब यह प्लग इन 3.4.0 और इसके बाद के वर्शन का इस्तेमाल करने वाले ऐप्लिकेशन और Android लाइब्रेरी प्रोजेक्ट, दोनों के लिए डिफ़ॉल्ट रूप से चालू होता है.

    नीचे दी गई इमेज में, R8 को लॉन्च करने से पहले कंपाइल करने की प्रोसेस के बारे में खास जानकारी दी गई है.

    R8 से पहले, ProGuard, dexing और desugaring से अलग कंपाइलिंग स्टेप था.

    अब R8 की मदद से, डिसुगरिंग, श्रिंकिंग, अस्पष्ट करना, ऑप्टिमाइज़ करना, और डेक्सिंग (D8) जैसे सभी काम एक ही चरण में पूरे किए जा सकते हैं. इसके बारे में यहां बताया गया है.

    R8 की मदद से, एक ही कंपाइल स्टेप में डिसुगरिंग, श्रिंकिंग, ऑबफ़स्केटिंग, ऑप्टिमाइज़िंग, और डेक्सिंग की जाती है.

    ध्यान रखें कि 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 = true
                
              

      Android Gradle प्लग-इन के ज़रिए पैकेज का नाम सेट करने के बारे में ज़्यादा जानने के लिए, ऐप्लिकेशन आईडी सेट करना लेख पढ़ें.

    3.3.0 (जनवरी 2019)

    Android प्लगिन के इस वर्शन के लिए, ये ज़रूरी हैं:

    3.3.3 (जुलाई 2020)

    इस छोटे से अपडेट में, Android 11 में पैकेज की जानकारी देखने की सुविधा के लिए, नई डिफ़ॉल्ट सेटिंग और सुविधाओं के साथ काम करने की सुविधा जोड़ी गई है.

    ज़्यादा जानकारी के लिए, 4.0.1 के रिलीज़ नोट देखें.

    3.3.2 (मार्च 2019)

    इस छोटे अपडेट में, Android Studio 3.3.2 के साथ काम करने की सुविधा दी गई है. साथ ही, इसमें कई गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस में सुधार किया गया है. गड़बड़ियों को ठीक करने से जुड़ी अहम जानकारी देखने के लिए, रिलीज़ अपडेट ब्लॉग पर इससे जुड़ी पोस्ट पढ़ें.

    3.3.1 (फ़रवरी 2019)

    इस छोटे अपडेट में Android Studio 3.3.1 के लिए सहायता उपलब्ध है. साथ ही, इसमें कई गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस में सुधार किया गया है.

    नई सुविधाएं

    • बेहतर क्लासपाथ सिंक्रनाइज़ेशन: रनटाइम और कंपाइल टाइम क्लासपाथ पर डिपेंडेंसी हल करते समय, Android Gradle प्लगिन, डिपेंडेंसी के लिए डाउनस्ट्रीम वर्शन के कुछ टकरावों को ठीक करने की कोशिश करता है. ये डिपेंडेंसी, कई क्लासपाथ में दिखती हैं.

      उदाहरण के लिए, अगर रनटाइम क्लासपाथ में लाइब्रेरी A का वर्शन 2.0 और कंपाइल क्लासपाथ में लाइब्रेरी A का वर्शन 1.0 शामिल है, तो प्लगिन अपने-आप कंपाइल क्लासपाथ में मौजूद डिपेंडेंसी को लाइब्रेरी A के वर्शन 2.0 पर अपडेट कर देता है, ताकि गड़बड़ियों से बचा जा सके.

      हालांकि, अगर रनटाइम क्लासपाथ में लाइब्रेरी A का वर्शन 1.0 और कंपाइल में लाइब्रेरी A का वर्शन 2.0 शामिल है, तो प्लगिन, कंपाइल क्लासपाथ पर मौजूद डिपेंडेंसी को लाइब्रेरी A के वर्शन 1.0 पर डाउनग्रेड नहीं करता है. इसलिए, आपको गड़बड़ी का मैसेज दिखेगा. ज़्यादा जानने के लिए, क्लाथपाथ के बीच होने वाले टकराव ठीक करना लेख पढ़ें.

    • एनोटेशन प्रोसेसर का इस्तेमाल करते समय, Java के इंक्रीमेंटल कंपाइलेशन को बेहतर बनाया गया है: इस अपडेट से, एनोटेशन प्रोसेसर का इस्तेमाल करते समय Java के इंक्रीमेंटल कंपाइलेशन के लिए बेहतर सपोर्ट मिलता है. इससे बिल्ड टाइम कम हो जाता है.

      ध्यान दें: यह सुविधा Gradle 4.10.1 और इसके बाद के वर्शन के साथ काम करती है. हालांकि, Gradle issue 8194 की वजह से, यह Gradle 5.1 के साथ काम नहीं करती.

      • Kapt का इस्तेमाल करने वाले प्रोजेक्ट के लिए (सिर्फ़ Kotlin वाले ज़्यादातर प्रोजेक्ट और Kotlin-Java हाइब्रिड प्रोजेक्ट): इंक्रीमेंटल Java कंपाइलेशन चालू होता है. भले ही, आपने डेटा बाइंडिंग या रेट्रो-लैम्ब्डा प्लगिन का इस्तेमाल किया हो. Kapt टास्क के ज़रिए एनोटेशन प्रोसेस करने की सुविधा अभी तक इंक्रीमेंटल नहीं है.

      • ऐसे प्रोजेक्ट के लिए जिनमें Kapt का इस्तेमाल नहीं किया जा रहा है (सिर्फ़ Java प्रोजेक्ट): अगर आपके इस्तेमाल किए गए सभी एनोटेशन प्रोसेसर, इंक्रीमेंटल एनोटेशन प्रोसेसिंग के साथ काम करते हैं, तो इंक्रीमेंटल Java कंपाइलेशन डिफ़ॉल्ट रूप से चालू होता है. एनोटेशन प्रोसेसर को धीरे-धीरे अपनाने की प्रोसेस पर नज़र रखने के लिए, Gradle की समस्या 5277 देखें.

        हालांकि, अगर एक या उससे ज़्यादा एनोटेशन प्रोसेसर, इंक्रीमेंटल बिल्ड के साथ काम नहीं करते हैं, तो इंक्रीमेंटल Java कंपाइलेशन चालू नहीं होता है. इसके बजाय, अपनी gradle.properties फ़ाइल में यह फ़्लैग शामिल करें:

        android.enableSeparateAnnotationProcessing=true
                    

        इस फ़्लैग को शामिल करने पर, Android Gradle प्लगिन एनोटेशन प्रोसेसर को अलग टास्क में एक्ज़ीक्यूट करता है. साथ ही, Java कंपाइलेशन टास्क को धीरे-धीरे चलाने की अनुमति देता है.

    • पुराने एपीआई का इस्तेमाल करने पर, डीबग करने से जुड़ी बेहतर जानकारी: जब प्लगिन को पता चलता है कि ऐसे एपीआई का इस्तेमाल किया जा रहा है जिसे अब सपोर्ट नहीं किया जाता, तो वह अब ज़्यादा जानकारी दे सकता है. इससे आपको यह पता लगाने में मदद मिलेगी कि उस एपीआई का इस्तेमाल कहां किया जा रहा है. ज़्यादा जानकारी देखने के लिए, आपको अपने प्रोजेक्ट की gradle.properties फ़ाइल में यह जानकारी शामिल करनी होगी:

                android.debug.obsoleteApi=true
              

      कमांड लाइन से -Pandroid.debug.obsoleteApi=true पास करके भी फ़्लैग चालू किया जा सकता है.

    • कमांड लाइन से, फ़ीचर मॉड्यूल पर इंस्ट्रुमेंटेशन टेस्ट चलाए जा सकते हैं.

    व्यवहार में बदलाव

    • लेज़ी टास्क कॉन्फ़िगरेशन: अब प्लगिन, Gradle के नए टास्क क्रिएशन एपीआई का इस्तेमाल करता है. इससे उन टास्क को शुरू और कॉन्फ़िगर करने से बचा जा सकता है जिनकी ज़रूरत मौजूदा बिल्ड को पूरा करने के लिए नहीं होती. इसके अलावा, उन टास्क को भी शुरू और कॉन्फ़िगर करने से बचा जा सकता है जो एक्ज़ीक्यूशन टास्क ग्राफ़ पर नहीं होते. उदाहरण के लिए, अगर आपके पास “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 का वर्शन मैन्युअल तरीके से सेट नहीं करना होगा

    3.2.0 (सितंबर 2018)

    Android प्लगिन के इस वर्शन के लिए, ये ज़रूरी हैं:

    3.2.1 (अक्टूबर 2018)

    इस अपडेट के बाद, आपको एसडीके बिल्ड टूल के लिए वर्शन तय करने की ज़रूरत नहीं होगी. Android Gradle प्लग इन अब डिफ़ॉल्ट रूप से 28.0.3 वर्शन का इस्तेमाल करता है.

    नई सुविधाएं

    • Android ऐप्लिकेशन बंडल बनाने की सुविधा: ऐप्लिकेशन बंडल, अपलोड करने का एक नया फ़ॉर्मैट है. इसमें आपके ऐप्लिकेशन का कंपाइल किया गया पूरा कोड और संसाधन शामिल होते हैं. साथ ही, APK जनरेट करने और साइन करने की प्रोसेस को Google Play Store पर ट्रांसफ़र कर दिया जाता है. अब आपको एक से ज़्यादा APK बनाने, साइन करने, और मैनेज करने की ज़रूरत नहीं है. साथ ही, लोगों को उनके डिवाइस के लिए ऑप्टिमाइज़ किए गए छोटे डाउनलोड मिलते हैं. ज़्यादा जानने के लिए, Android ऐप्लिकेशन बंडल के बारे में जानकारी लेख पढ़ें.

    • एनोटेशन प्रोसेसर का इस्तेमाल करते समय, इंक्रीमेंटल बिल्ड की स्पीड को बेहतर बनाने की सुविधा: AnnotationProcessorOptions DSL अब 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 के प्रीव्यू वर्शन का इस्तेमाल किया जा रहा है, तो ध्यान दें कि अब यह SDK बिल्ड टूल में शामिल लाइब्रेरी के साथ कंपाइल होता है, न कि JDK के साथ. इसलिए, अगर JDK में मौजूद एपीआई को ऐक्सेस किया जा रहा है, लेकिन SDK बिल्ड टूल लाइब्रेरी में मौजूद एपीआई को ऐक्सेस नहीं किया जा रहा है, तो आपको कंपाइल करने से जुड़ी गड़बड़ी का मैसेज मिलेगा.

    व्यवहार में बदलाव

    • अलग-अलग एबीआई को टारगेट करने वाले कई APK बनाते समय, अब डिफ़ॉल्ट रूप से इन एबीआई के लिए APK जनरेट नहीं करता: mips, mips64, और armeabi.

      अगर आपको इन एबीआइ को टारगेट करने वाले APK बनाने हैं, तो आपको NDK r16b या इससे पहले के वर्शन का इस्तेमाल करना होगा. साथ ही, यहां दिखाए गए तरीके से अपनी build.gradle फ़ाइल में एबीआइ तय करने होंगे:

                splits {
                    abi {
                        include 'armeabi', 'mips', 'mips64'
                        ...
                    }
                }
              
                splits {
                    abi {
                        include("armeabi", "mips", "mips64")
                        ...
                    }
                }
              
    • Android प्लगिन का बिल्ड कैश अब 30 दिन से ज़्यादा पुरानी कैश मेमोरी की एंट्री हटा देता है.

    • "auto" को resConfig पर पास करने से, अब आपके APK में पैकेज करने के लिए स्ट्रिंग रिसॉर्स अपने-आप नहीं चुने जाते. "auto" का इस्तेमाल जारी रखने पर, प्लगिन आपके ऐप्लिकेशन और उसकी डिपेंडेंसी से मिलने वाले सभी स्ट्रिंग रिसॉर्स को पैकेज करता है. इसलिए, आपको हर उस स्थान-भाषा के बारे में बताना चाहिए जिसे आपको प्लग इन के ज़रिए अपने APK में पैकेज करना है.

    • लोकल मॉड्यूल, आपके ऐप्लिकेशन के टेस्ट APK पर निर्भर नहीं हो सकते. इसलिए, androidTestImplementation के बजाय androidTestApi कॉन्फ़िगरेशन का इस्तेमाल करके, इंस्ट्रुमेंट किए गए टेस्ट में डिपेंडेंसी जोड़ने पर, Gradle यह चेतावनी जारी करता है:

              WARNING: Configuration 'androidTestApi' is obsolete
              and has been replaced with 'androidTestImplementation'
              
              WARNING: Configuration 'androidTestApi' is obsolete
              and has been replaced with 'androidTestImplementation'
              

    समाधान

    • इस अपडेट से उस समस्या को ठीक किया गया है जिसमें Android Studio, कंपोज़िट बिल्ड में डिपेंडेंसी को ठीक से पहचान नहीं पाता था.
    • इस अपडेट में, उस समस्या को ठीक किया गया है जिसमें एक ही बिल्ड में Android प्लगिन को कई बार लोड करने पर, प्रोजेक्ट सिंक करने से जुड़ी गड़बड़ी दिखती है. उदाहरण के लिए, जब कई सबप्रोजेक्ट में से हर एक में, Android प्लगिन को अपने buildscript classpath में शामिल किया जाता है.

    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 का इस्तेमाल करते समय समस्याएं आ रही हैं, तो कृपया बग की शिकायत करें. आपके पास AAPT2 को बंद करने का विकल्प भी है. इसके लिए, अपनी android.enableAapt2=false फ़ाइल में android.enableAapt2=false सेट करें. इसके बाद, कमांड लाइन से ./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डिपेंडेंसी कॉन्फ़िगरेशन की नई सुविधा की मदद से, इंस्ट्रुमेंटेशन टेस्ट चलाने से पहले, टेस्ट हेल्पर का कोई दूसरा APK इंस्टॉल किया जा सकता है. जैसे, Android Test Orchestrator:

      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 कॉन्फ़िगरेशन का इस्तेमाल करके, आपके लिंट प्रोजेक्ट पर निर्भर हो सकते हैं:

      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() ऑब्जेक्ट को ऐक्सेस करने या हर वैरिएंट के लिए मेनिफ़ेस्ट फ़ाइल पाने के लिए, Variants API का इस्तेमाल नहीं किया जा सकता.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 का इस्तेमाल करते समय समस्याएं आ रही हैं, तो कृपया बग की शिकायत करें. आपके पास AAPT2 को बंद करने का विकल्प भी है. इसके लिए, अपनी android.enableAapt2=false फ़ाइल में android.enableAapt2=false सेट करें. इसके बाद, कमांड लाइन से ./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डिपेंडेंसी कॉन्फ़िगरेशन की नई सुविधा की मदद से, इंस्ट्रुमेंटेशन टेस्ट चलाने से पहले, टेस्ट हेल्पर का कोई दूसरा APK इंस्टॉल किया जा सकता है. जैसे, Android Test Orchestrator:

      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 कॉन्फ़िगरेशन का इस्तेमाल करके, आपके लिंट प्रोजेक्ट पर निर्भर हो सकते हैं:

      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() ऑब्जेक्ट को ऐक्सेस करने या हर वैरिएंट के लिए मेनिफ़ेस्ट फ़ाइल पाने के लिए, Variants API का इस्तेमाल नहीं किया जा सकता.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 की मदद से, बिल्ड करने की स्पीड बढ़ाना लेख पढ़ें.
    बदलाव:

    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
        }
            
      • सेट किए जा सकने वाले पैरामीटर की सूची देखने के लिए, कमांड लाइन में यह कमांड चलाएं:

        java -jar /build-tools/jack.jar --help-properties
        
      • डिफ़ॉल्ट रूप से, अगर Gradle डेमॉन का हीप साइज़ कम से कम 1.5 जीबी है, तो Jack अब Gradle की तरह ही प्रोसेस में चलता है. डेमॉन के हीप साइज़ में बदलाव करने के लिए, अपनी gradle.properties फ़ाइल में यह जोड़ें:
        # This sets the daemon heap size to 1.5GB.
        org.gradle.jvmargs=-Xmx1536M
        

    2.1.0 (अप्रैल 2016)

    2.1.3 (अगस्त 2016)

    इस अपडेट के लिए, Gradle 2.14.1 और इसके बाद के वर्शन की ज़रूरत है. Gradle 2.14.1 में, परफ़ॉर्मेंस से जुड़े सुधार, नई सुविधाएं, और सुरक्षा से जुड़ी एक ज़रूरी समस्या को ठीक किया गया है. ज़्यादा जानकारी के लिए, Gradle के रिलीज़ नोट देखें.

    डिपेंडेंसी:
    • Gradle 2.10 या इसके बाद का वर्शन.
    • Build Tools 23.0.2 या इसके बाद का वर्शन.
    नया:
    • Jack टूलचेन का इस्तेमाल करके, N Developer Preview, JDK 8, और Java 8 की भाषा से जुड़ी सुविधाओं के लिए सहायता जोड़ी गई. ज़्यादा जानने के लिए, N Preview गाइड पढ़ें.

      ध्यान दें: फ़िलहाल, झटपट चलाएं की सुविधा, Jack के साथ काम नहीं करती. नई टूलचेन का इस्तेमाल करते समय, यह सुविधा बंद हो जाएगी. अगर आपको N Preview के लिए डेवलपमेंट करना है और Java 8 की भाषा से जुड़ी सुविधाओं का इस्तेमाल करना है, तो आपको सिर्फ़ Jack का इस्तेमाल करना होगा.

    • डेवलपमेंट के दौरान कंपाइलेशन में लगने वाला समय कम करने के लिए, इंक्रीमेंटल Java कंपाइलेशन के लिए डिफ़ॉल्ट सहायता जोड़ी गई. यह सिर्फ़ सोर्स के उन हिस्सों को फिर से कंपाइल करता है जिनमें बदलाव हुआ है या जिन्हें फिर से कंपाइल करने की ज़रूरत है. इस सुविधा को बंद करने के लिए, अपने मॉड्यूल-लेवल की build.gradle फ़ाइल में यह कोड जोड़ें:

      Groovy

      android {
        ...
        compileOptions {
          incremental false
        }
      }

      Kotlin

      android {
        ...
        compileOptions {
          incremental = false
        }
      }
    • प्रोसेस में डेक्सिंग की सुविधा जोड़ी गई है. यह सुविधा, अलग और बाहरी वीएम प्रोसेस के बजाय, बिल्ड प्रोसेस में डेक्सिंग करती है. इससे न सिर्फ़ इंक्रीमेंटल बिल्ड तेज़ी से बनते हैं, बल्कि पूरे बिल्ड भी तेज़ी से बनते हैं. यह सुविधा, उन प्रोजेक्ट के लिए डिफ़ॉल्ट रूप से चालू होती है जिन्होंने Gradle डेमॉन के ज़्यादा से ज़्यादा हीप साइज़ को कम से कम 2048 एमबी पर सेट किया है. इसके लिए, अपने प्रोजेक्ट की gradle.properties फ़ाइल में यह शामिल करें:

      ```none org.gradle.jvmargs = -Xmx2048m ```

      अगर आपने मॉड्यूल-लेवल की build.gradle फ़ाइल में javaMaxHeapSize के लिए कोई वैल्यू तय की है, तो आपको org.gradle.jvmargs को javaMaxHeapSize + 1024 एमबी की वैल्यू पर सेट करना होगा. उदाहरण के लिए, अगर आपने javaMaxHeapSize को "2048m" पर सेट किया है, तो आपको अपने प्रोजेक्ट की gradle.properties फ़ाइल में यह जोड़ना होगा:

      ```none org.gradle.jvmargs = -Xmx3072m ```

      प्रोसेस में मौजूद डेक्सिंग को बंद करने के लिए, मॉड्यूल-लेवल की build.gradle फ़ाइल में यह कोड जोड़ें:

      Groovy

      android {
        ...
        dexOptions {
            dexInProcess false
        }
      }

      Kotlin

      android {
        ...
        dexOptions {
            dexInProcess = false
        }
      }

    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 फ़ाइल में यह कोड जोड़ें जो प्लगिन का इस्तेमाल करती है:
    • android {
          dataBinding {
              enabled = true
          }
      }
              
      android {
          dataBinding {
              enabled = true
          }
      }
              
    • एक नया 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 क्लास से dex getter को बंद कर दिया गया है. अब वैरिएंट एपीआई के ज़रिए 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 एट्रिब्यूट से अलग प्लैटफ़ॉर्म वर्शन सेट करने की सुविधा जोड़ी गई.

    Gradle के लिए Android प्लग इन, वर्शन 1.3.1 (अगस्त 2015)

    डिपेंडेंसी:
    • Gradle 2.2.1 या इसके बाद का वर्शन.
    • Build Tools 21.1.1 या इसके बाद का वर्शन.
    सामान्य जानकारी:
    • फ़ाइल के नाम को पसंद के मुताबिक बनाने की सुविधा का इस्तेमाल करते समय, पिछली टास्क के आउटपुट का सही तरीके से इस्तेमाल करने के लिए, ZipAlign टास्क को ठीक किया गया है.
    • NDK के साथ Renderscript पैकेजिंग से जुड़ी समस्या ठीक की गई है.
    • createDebugCoverageReport बिल्ड टास्क के लिए सहायता जारी रखी गई है.
    • build.gradle बिल्ड फ़ाइल में, archiveBaseName प्रॉपर्टी का कस्टम तरीके से इस्तेमाल करने की सुविधा ठीक की गई.
    • Android Studio के बाहर lint चलाने पर, पैरामीटर के तरीके के एनोटेशन लुकअप की वजह से होने वाली Invalid ResourceType lint चेतावनी को ठीक किया गया है.

    Gradle के लिए Android प्लग इन, वर्शन 1.3.0 (जुलाई 2015)

    डिपेंडेंसी:
    • Gradle 2.2.1 या इसके बाद का वर्शन.
    • Build Tools 21.1.1 या इसके बाद का वर्शन.
    सामान्य जानकारी:
    • com.android.build.threadPoolSize प्रॉपर्टी के लिए सहायता जोड़ी गई है. इससे gradle.properties फ़ाइल या कमांड लाइन से, Android टास्क थ्रेड पूल के साइज़ को कंट्रोल किया जा सकता है. यहां दिए गए उदाहरण में, इस प्रॉपर्टी को 4 पर सेट किया गया है.

              
              -Pcom.android.build.threadPoolSize=4
              
            
    • डिफ़ॉल्ट बिल्ड के तरीके को इस तरह सेट करें कि 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 डीबग ब्रिज की स्क्रीन रिकॉर्डिंग के लिए, ज़्यादा से ज़्यादा रिकॉर्डिंग का समय सेट करने के लिए, timeOut कोड ब्लॉक में timeOut प्रॉपर्टी जोड़ी गई है.adbOptions
    • 280 डीपीआई वाले संसाधनों के लिए सहायता जोड़ी गई.
    • प्रोजेक्ट के आकलन के दौरान बेहतर परफ़ॉर्मेंस.

    Gradle के लिए Android प्लग इन, वर्शन 1.1.3 (मार्च 2015)

    डिपेंडेंसी:
    • Gradle 2.2.1 या इसके बाद का वर्शन.
    • Build Tools 21.1.1 या इसके बाद का वर्शन.
    सामान्य नोट:
    • टेस्ट ऐप्लिकेशन पर डुप्लीकेट डिपेंडेंसी की समस्या को ठीक किया गया है. इसकी वजह से ProGuard काम नहीं कर रहा था.
    • Comparator को लागू करने से जुड़ी समस्या को ठीक किया गया है. यह समस्या JDK Comparator के समझौते का पालन नहीं करती थी और इसकी वजह से JDK 7 में गड़बड़ी होती थी.

    Gradle के लिए Android प्लग इन, वर्शन 1.1.2 (फ़रवरी 2015)

    डिपेंडेंसी:
    • Gradle 2.2.1 या इसके बाद का वर्शन.
    • Build Tools 21.1.1 या इसके बाद का वर्शन.
    सामान्य नोट:
    • यूनिट टेस्टिंग के लिए, मॉक किया जा सकने वाला JAR बनाते समय पाथ को सामान्य किया जाता है.
    • build.gradle फ़ाइल में archivesBaseName सेटिंग को ठीक किया गया.
    • लाइब्रेरी टेस्ट ऐप्लिकेशन बनाते समय, मेनिफ़ेस्ट मर्जर में प्लेसहोल्डर से जुड़ी समस्या को ठीक किया गया है.

    Gradle के लिए Android प्लग इन, वर्शन 1.1.1 (फ़रवरी 2015)

    डिपेंडेंसी:
    • Gradle 2.2.1 या इसके बाद का वर्शन.
    • Build Tools 21.1.1 या इसके बाद का वर्शन.
    सामान्य नोट:
    • बदले गए बिल्ड वैरिएंट, ताकि सिर्फ़ वे वैरिएंट जो Wear ऐप्लिकेशन को पैकेज करते हैं, Wear के लिए खास तौर पर बनाए गए बिल्ड टास्क को ट्रिगर करें.
    • बिल्ड टाइम के दौरान, डिपेंडेंसी से जुड़ी समस्याओं को ठीक किया गया है. ऐसा डीबग टाइम के बजाय किया गया है. इस व्यवहार की वजह से, आपको टकराव को हल करने में मदद मिलती है. इसके लिए, आपको डायग्नोस्टिक टास्क (जैसे कि 'डिपेंडेंसी') चलाने की अनुमति मिलती है.
    • android.getBootClasspath() तरीके में सुधार किया गया है, ताकि वह वैल्यू दिखा सके.

    Gradle के लिए Android प्लग इन, वर्शन 1.1.0 (फ़रवरी 2015)

    डिपेंडेंसी:
    • Gradle 2.2.1 या इसके बाद का वर्शन.
    • Build Tools 21.1.1 या इसके बाद का वर्शन.
    सामान्य नोट:
    • नई यूनिट टेस्ट की सुविधा जोड़ी गई
      • स्थानीय जेवीएम पर android.jar फ़ाइल के खास वर्शन के ख़िलाफ़, यूनिट टेस्ट चालू किए गए हैं. यह फ़ाइल, लोकप्रिय मॉकिंग फ़्रेमवर्क के साथ काम करती है. जैसे, Mockito.
      • प्रॉडक्ट फ़्लेवर का इस्तेमाल करते समय, नए टेस्ट टास्क testDebug, testRelease, और testMyFlavorDebug जोड़े गए.
      • ऐसे नए सोर्स फ़ोल्डर जोड़े गए हैं जिन्हें यूनिट टेस्ट के तौर पर पहचाना जाता है: src/test/java/, src/testDebug/java/, src/testMyFlavor/java/.
      • build.gradle फ़ाइल में नए कॉन्फ़िगरेशन जोड़े गए हैं. इनका इस्तेमाल, सिर्फ़ टेस्ट के लिए इस्तेमाल की जाने वाली डिपेंडेंसी का एलान करने के लिए किया जाता है. उदाहरण के लिए, testCompile 'junit:junit:4.11', testMyFlavorCompile 'some:library:1.0'.

        ध्यान दें: फ़िलहाल, सिर्फ़ टेस्ट के लिए इस्तेमाल की जाने वाली डिपेंडेंसी, Jack (Java Android Compiler Kit) के साथ काम नहीं करती हैं.

      • ऐंड्रॉइड के jar फ़ाइल को मॉक करने की सुविधा के व्यवहार को कंट्रोल करने के लिए, android.testOptions.unitTests.returnDefaultValues विकल्प जोड़ा गया.
    • टेस्ट टास्क के नामों में मौजूद Test को AndroidTest से बदल दिया गया है. उदाहरण के लिए, assembleDebugTest टास्क अब assembleDebugAndroidTest टास्क बन गया है. यूनिट टेस्ट टास्क के नाम में अब भी UnitTest मौजूद है. उदाहरण के लिए, assembleDebugUnitTest.
    • ProGuard कॉन्फ़िगरेशन फ़ाइलों में बदलाव किया गया है, ताकि वे अब टेस्ट APK पर लागू न हों. अगर कोड छोटा करने की सुविधा चालू है, तो ProGuard, टेस्ट APK को प्रोसेस करता है. साथ ही, सिर्फ़ उस मैपिंग फ़ाइल को लागू करता है जो मुख्य APK के कोड को छोटा करते समय जनरेट होती है.
    • डिपेंडेंसी मैनेज करने की सुविधा अपडेट की गई
      • provided और package स्कोप का इस्तेमाल करने से जुड़ी समस्याएं ठीक की गईं.

        ध्यान दें: ये स्कोप, एएआर (Android ARchive) पैकेज के साथ काम नहीं करते. इसलिए, एएआर पैकेज के साथ बिल्ड करने पर गड़बड़ी होगी.

      • टेस्ट किए जा रहे ऐप्लिकेशन और टेस्ट ऐप्लिकेशन की डिपेंडेंसी की तुलना करने के लिए, डिपेंडेंसी रिज़ॉल्यूशन में बदलाव किया गया है. अगर दोनों ऐप्लिकेशन के लिए एक ही वर्शन वाला आर्टफ़ैक्ट मिलता है, तो उसे टेस्ट ऐप्लिकेशन में शामिल नहीं किया जाता है. साथ ही, उसे सिर्फ़ टेस्ट किए जा रहे ऐप्लिकेशन के साथ पैकेज किया जाता है. अगर दोनों ऐप्लिकेशन के लिए, अलग-अलग वर्शन वाला कोई आर्टफ़ैक्ट मिलता है, तो बिल्ड नहीं हो पाएगा.
    • संसाधन मर्ज करने की सुविधा में, anyDpi संसाधन क्वालीफ़ायर के लिए सहायता जोड़ी गई.
    • Android मॉड्यूल की ज़्यादा संख्या वाले प्रोजेक्ट के लिए, आईडीई सिंक करने की स्पीड और आकलन करने की प्रोसेस को बेहतर बनाया गया है.

    Gradle के लिए Android प्लग इन, वर्शन 1.0.1 (जनवरी 2015)

    डिपेंडेंसी:
    • Gradle 2.2.1 से लेकर 2.3.x तक.

      ध्यान दें: Gradle के लिए Android प्लगिन का यह वर्शन, Gradle 2.4 और इसके बाद के वर्शन के साथ काम नहीं करता.

    • Build Tools 21.1.1 या इसके बाद का वर्शन.
    सामान्य नोट:
    • extractReleaseAnnotations मॉड्यूल को ऐक्सेस करते समय, Gradle बिल्ड फ़ेल होने की समस्या को ठीक किया गया है. (समस्या 81638).
    • Disable सेटिंग को Dalvik Executable (dex) बाइटकोड में पास करने से जुड़ी समस्या को ठीक किया गया है.--no-optimize (समस्या 82662).
    • targetSdkVersion 16 से कम वर्शन वाली लाइब्रेरी इंपोर्ट करते समय, मेनिफ़ेस्ट मर्ज करने से जुड़ी समस्याएं ठीक की गईं.
    • 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 या इसके बाद का वर्शन.
    सामान्य नोट:
    • प्लगिन की शुरुआती रिलीज़.