Android बिल्ड सिस्टम, ऐप्लिकेशन के संसाधनों और सोर्स कोड को संकलित करता है और उन्हें APK या Android ऐप्लिकेशन बंडल में पैकेज करता है. इनका इस्तेमाल, टेस्ट करने, डिप्लॉय करने, साइन करने, और डिस्ट्रिब्यूट करने के लिए किया जा सकता है.
Gradle और Android Gradle प्लग इन की मदद से, अपने बिल्ड के इन पहलुओं को कॉन्फ़िगर किया जा सकता है:
बिल्ड के टाइप
बिल्ड टाइप से कुछ खास प्रॉपर्टी तय होती हैं. Gradle, आपके ऐप्लिकेशन को बिल्ड और पैकेज करते समय इन प्रॉपर्टी का इस्तेमाल करता है. आम तौर पर, बिल्ड टाइप को डेवलपमेंट लाइफ़साइकल के अलग-अलग चरणों के लिए कॉन्फ़िगर किया जाता है.
उदाहरण के लिए, डीबग बिल्ड टाइप, डीबग करने के विकल्प चालू करता है और डीबग पासकोड से ऐप्लिकेशन पर हस्ताक्षर करता है. वहीं, रिलीज़ बिल्ड टाइप, डिस्ट्रिब्यूशन के लिए आपके ऐप्लिकेशन को छोटा कर सकता है, उसे गलत बना सकता है, और रिलीज़ पासकोड से उस पर हस्ताक्षर कर सकता है.
आपको अपना ऐप्लिकेशन बनाने के लिए, कम से कम एक बिल्ड टाइप तय करना होगा. Android Studio, डिबग और रिलीज़ बिल्ड टाइप को डिफ़ॉल्ट रूप से बनाता है. अपने ऐप्लिकेशन के लिए, पैकेजिंग की सेटिंग को पसंद के मुताबिक बनाने के लिए, बिल्ड टाइप को कॉन्फ़िगर करने का तरीका जानें.
प्रॉडक्ट के फ़्लेवर
प्रॉडक्ट फ़्लेवर, आपके ऐप्लिकेशन के उन अलग-अलग वर्शन के बारे में बताते हैं जिन्हें उपयोगकर्ताओं के लिए रिलीज़ किया जा सकता है. जैसे, मुफ़्त और पैसे चुकाकर डाउनलोड किए जाने वाले वर्शन. अपने ऐप्लिकेशन के सभी वर्शन के लिए उपलब्ध पार्ट शेयर और दोबारा इस्तेमाल करते समय, अलग-अलग कोड और संसाधनों का इस्तेमाल करने के लिए, प्रॉडक्ट के फ़्लेवर को पसंद के मुताबिक बनाया जा सकता है. प्रॉडक्ट के फ़्लेवर ज़रूरी नहीं हैं और आपको उन्हें मैन्युअल तरीके से बनाना होगा. अपने ऐप्लिकेशन के अलग-अलग वर्शन बनाने के लिए, प्रॉडक्ट के फ़्लेवर कॉन्फ़िगर करने का तरीका जानें.
वैरिएंट बनाना
बिल्ड वैरिएंट, बिल्ड टाइप और प्रॉडक्ट फ़्लेवर का क्रॉस-प्रॉडक्ट होता है. साथ ही, यह वह कॉन्फ़िगरेशन होता है जिसका इस्तेमाल Gradle आपके ऐप्लिकेशन को बनाने के लिए करता है. बिल्ड वैरिएंट का इस्तेमाल करके, डेवलपमेंट के दौरान अपने प्रॉडक्ट फ़्लेवर का डीबग वर्शन और डिस्ट्रिब्यूशन के लिए, अपने प्रॉडक्ट फ़्लेवर के साइन किए गए रिलीज़ वर्शन बनाए जा सकते हैं.
हालांकि, सीधे तौर पर बिल्ड वैरिएंट को कॉन्फ़िगर नहीं किया जाता, लेकिन उनसे बने
बिल्ड टाइप और प्रॉडक्ट फ़्लेवर को कॉन्फ़िगर किया जाता है. अतिरिक्त बिल्ड टाइप या प्रॉडक्ट फ़्लेवर बनाने पर, अतिरिक्त बिल्ड वैरिएंट भी बन जाते हैं. बाइल्ड वैरिएंट बनाने और मैनेज करने का तरीका जानने के लिए, बिल्ड वैरिएंट कॉन्फ़िगर करना के बारे में खास जानकारी वाला लेख पढ़ें.
मेनिफ़ेस्ट एंट्री
बिल्ड के वैरिएंट कॉन्फ़िगरेशन में, मेनिफ़ेस्ट फ़ाइल की कुछ प्रॉपर्टी के लिए
वैल्यू तय की जा सकती है. ये बिल्ड वैल्यू, मेनिफ़ेस्ट फ़ाइल में
मौजूदा वैल्यू को बदल देती हैं. अगर आपको अपने ऐप्लिकेशन के अलग-अलग नाम, कम से कम SDK वर्शन या
टारगेट SDK वर्शन के साथ एक से ज़्यादा वैरिएंट जनरेट करने हैं, तो यह तरीका मददगार होता है. एक से ज़्यादा मेनिफ़ेस्ट मौजूद होने पर, मेनिफ़ेस्ट
मर्जर टूल,
मेनिफ़ेस्ट सेटिंग को मर्ज करता है.
डिपेंडेंसी
बिल्ड सिस्टम, आपके लोकल फ़ाइल सिस्टम और रिमोट रिपॉज़िटरी से प्रोजेक्ट की डिपेंडेंसी मैनेज करता है. इसका मतलब है कि आपको अपनी डिपेंडेंसी के बाइनरी पैकेज को मैन्युअल तरीके से खोजने, डाउनलोड करने, और प्रोजेक्ट डायरेक्ट्री में कॉपी करने की ज़रूरत नहीं है. ज़्यादा जानकारी के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
साइन इन करना
बिल्ड सिस्टम की मदद से, बिल्ड कॉन्फ़िगरेशन में साइन करने की सेटिंग तय की जा सकती है. साथ ही, यह बिल्ड प्रोसेस के दौरान आपके ऐप्लिकेशन को अपने-आप साइन कर सकता है. बिल्ड सिस्टम, डीबग वर्शन को डिफ़ॉल्ट पासकोड और
सर्टिफ़िकेट के साथ साइन करता है. इसके लिए, यह जाने-पहचाने क्रेडेंशियल का इस्तेमाल करता है, ताकि बिल्ड के समय पासवर्ड के अनुरोध से बचा जा सके. रिलीज़ वर्शन पर तब तक साइन नहीं किया जाता, जब तक कि आपने इस बिल्ड के लिए साइन करने का कॉन्फ़िगरेशन साफ़ तौर पर तय न कर दिया हो. अगर आपके पास
कोई रिलीज़ पासकोड नहीं है, तो अपने ऐप्लिकेशन पर हस्ताक्षर करें सेक्शन में दिए गए तरीके से एक रिलीज़ पासकोड जनरेट किया जा सकता है. ज़्यादातर ऐप स्टोर पर ऐप्लिकेशन उपलब्ध कराने के लिए, साइन किए हुए रिलीज़ बिल्ड ज़रूरी होते हैं.
कोड और रिसॉर्स को छोटा करना
बिल्ड सिस्टम की मदद से, हर बिल्ड वैरिएंट के लिए ProGuard के नियमों की अलग-अलग फ़ाइल तय की जा सकती है. आपका ऐप्लिकेशन बनाते समय, बिल्ड सिस्टम अपने बिल्ट-इन टूल का इस्तेमाल करके, आपके कोड और संसाधनों को छोटा करने के लिए, नियमों का सही सेट लागू करता है. जैसे, R8.
अपने कोड और संसाधनों को छोटा करके, APK या AAB का साइज़ कम किया जा सकता है.
एक से ज़्यादा APK के लिए सहायता
बिल्ड सिस्टम आपको अपने-आप अलग-अलग APK बनाने की सुविधा देता है.
हर APK में सिर्फ़ वे कोड और संसाधन होते हैं
जो खास स्क्रीन सघनता या ऐप्लिकेशन बाइनरी इंटरफ़ेस (एबीआई) के लिए ज़रूरी हैं.
ज़्यादा जानकारी के लिए,
एक से ज़्यादा APK बनाना लेख पढ़ें. हालांकि, एक ही AAB रिलीज़ करने का सुझाव दिया जाता है, क्योंकि इससे स्क्रीन डेंसिटी और एबीआई के साथ-साथ भाषा के हिसाब से भी ऐप्लिकेशन को अलग-अलग वर्शन में बांटा जा सकता है. साथ ही, Google Play पर कई आर्टिफ़ैक्ट अपलोड करने की ज़रूरत भी नहीं पड़ती. अगस्त 2021 के बाद सबमिट किए गए सभी नए ऐप्लिकेशन के लिए,
AAB का इस्तेमाल करना ज़रूरी है.
Android बिल्ड में Java के वर्शन
भले ही, आपका सोर्स कोड Java, Kotlin या दोनों में लिखा गया हो, फिर भी आपको अपने बिल्ड के लिए JDK या Java भाषा का वर्शन चुनना होगा. ज़्यादा जानकारी के लिए, Android बिल्ड में Java के वर्शन देखें.
बिल्ड कॉन्फ़िगरेशन फ़ाइलें
कस्टम बिल्ड कॉन्फ़िगरेशन बनाने के लिए, आपको एक या एक से ज़्यादा बिल्ड कॉन्फ़िगरेशन फ़ाइलों में बदलाव करने होंगे. ये प्लैन-टेक्स्ट फ़ाइलें, डोमेन के हिसाब से बनी भाषा (डीएसएल) का इस्तेमाल करती हैं. इनका मकसद, Kotlin स्क्रिप्ट का इस्तेमाल करके, बिल्ड लॉजिक के बारे में बताना और उसमें बदलाव करना है. Kotlin स्क्रिप्ट, Kotlin भाषा का एक फ़्लेवर है. अपने बिल्ड कॉन्फ़िगर करने के लिए, Groovy का भी इस्तेमाल किया जा सकता है. यह Java Virtual Machine (JVM) भाषा के लिए एक डाइनैमिक भाषा है.
आपको अपनी बिल्ड को कॉन्फ़िगर करने के लिए, Kotlin स्क्रिप्ट या Groovy के बारे में जानने की ज़रूरत नहीं है. ऐसा इसलिए है, क्योंकि Android Gradle प्लग इन में ज़रूरी डीएसएल एलिमेंट मौजूद होते हैं. Android Gradle प्लग-इन DSL के बारे में ज़्यादा जानने के लिए,
DSL के रेफ़रंस दस्तावेज़ पढ़ें. Kotlin स्क्रिप्ट, इसमें
बुनियादी Gradle Kotlin DSL का भी इस्तेमाल करती है
नया प्रोजेक्ट शुरू करने पर, Android Studio आपके लिए इनमें से कुछ फ़ाइलें अपने-आप बना देता है और उन्हें सही डिफ़ॉल्ट के आधार पर पॉप्युलेट करता है. बनाई गई फ़ाइलों की खास जानकारी के लिए, Android बिल्ड स्ट्रक्चर देखें.
Gradle Wrapper फ़ाइल
Gradle रैपर (gradlew) एक छोटा ऐप्लिकेशन है, जो आपके सोर्स कोड में शामिल होता है. यह Gradle खुद डाउनलोड और लॉन्च करता है.
इससे, बिल्ड को ज़्यादा बेहतर तरीके से लागू किया जा सकता है. डेवलपर, ऐप्लिकेशन के सोर्स
को डाउनलोड करते हैं और gradlew को चलाते हैं. यह ज़रूरी Gradle डिस्ट्रिब्यूशन डाउनलोड करता है और आपका ऐप्लिकेशन बनाने के लिए, Gradle लॉन्च करता है.
gradle/wrapper/gradle-wrapper.properties फ़ाइल में एक प्रॉपर्टी, distributionUrl होती है. इससे पता चलता है कि आपके बिल्ड को चलाने के लिए, Gradle के किस वर्शन का इस्तेमाल किया जाता है.
settings.gradle.kts फ़ाइल (Kotlin DSL के लिए) या
settings.gradle फ़ाइल (Groovy DSL के लिए), प्रोजेक्ट की रूट डायरेक्ट्री में होती है. यह सेटिंग फ़ाइल, प्रोजेक्ट-लेवल की रिपॉज़िटरी सेटिंग तय करती है और Gradle को बताती है कि आपके ऐप्लिकेशन को बिल्ड करते समय किन मॉड्यूल को शामिल करना चाहिए. कई मॉड्यूल वाले प्रोजेक्ट के लिए, हर उस मॉड्यूल की जानकारी देनी ज़रूरी है जिसे फ़ाइनल बिल्ड में शामिल करना है.
ज़्यादातर प्रोजेक्ट के लिए, फ़ाइल डिफ़ॉल्ट रूप से इस तरह दिखती है:
टॉप-लेवल की build.gradle.kts फ़ाइल (Kotlin DSL के लिए) या
build.gradle फ़ाइल (ग्रूवी डीएसएल के लिए), रूट प्रोजेक्ट डायरेक्ट्री में मौजूद होती है. यह आम तौर पर, आपके प्रोजेक्ट में मॉड्यूल के ज़रिए इस्तेमाल किए जाने वाले प्लगिन के सामान्य वर्शन के बारे में बताता है.
यहां दिए गए कोड सैंपल में, नया प्रोजेक्ट बनाने के बाद, टॉप-लेवल वाली बिल्ड स्क्रिप्ट में मौजूद डिफ़ॉल्ट सेटिंग और डीएसएल एलिमेंट के बारे में बताया गया है:
मॉड्यूल-लेवल build.gradle.kts (Kotlin DSL के लिए) या
build.gradle फ़ाइल (ग्रूवी डीएसएल के लिए) हर
project/module/ डायरेक्ट्री में मौजूद होती है. इसकी मदद से, उस मॉड्यूल के लिए बिल्ड सेटिंग कॉन्फ़िगर की जा सकती है जिसमें यह मौजूद है. इन बिल्ड सेटिंग को कॉन्फ़िगर करने पर, आपको कस्टम पैकेजिंग के विकल्प मिलते हैं. जैसे, बिल्ड के अन्य टाइप और प्रॉडक्ट फ़्लेवर. साथ ही, main/ ऐप्लिकेशन मेनिफ़ेस्ट या टॉप-लेवल बिल्ड स्क्रिप्ट में सेटिंग को बदला जा सकता है.
Android SDK टूल की सेटिंग
आपके ऐप्लिकेशन के लिए मॉड्यूल-लेवल की बिल्ड फ़ाइल में ऐसी सेटिंग शामिल होती हैं जिनसे पता चलता है कि कंपाइल करने, प्लैटफ़ॉर्म के व्यवहार को चुनने, और आपके ऐप्लिकेशन के लिए कम से कम वर्शन तय करने के दौरान, Android SDK टूल के किन वर्शन का इस्तेमाल किया गया है.
पहला डायग्राम. बिल्ड में Android SDK टूल
compileSdk
compileSdk से यह तय होता है कि आपके सोर्स कोड को कंपाइल करते समय, कौनसे Android और Java एपीआई उपलब्ध हैं. Android की नई सुविधाओं
का इस्तेमाल करने के लिए, कंपाइल करते समय Android SDK के नए वर्शन का इस्तेमाल करें.
हर Android SDK, आपके ऐप्लिकेशन में इस्तेमाल करने के लिए Java API का सबसेट उपलब्ध कराता है.
अपने Java या Kotlin सोर्स कोड में कौनसे Java API इस्तेमाल किए जा सकते हैं के नीचे दी गई टेबल में, यह जानकारी मिलती है कि Android SDK टूल के वर्शन के आधार पर, कौनसा Java API लेवल उपलब्ध है.
नए Java API, Android के पुराने वर्शन पर काम करते हैं. इसके लिए, डिसगैरिंग की सुविधा का इस्तेमाल किया जाता है. यह सुविधा आपके बिल्ड में चालू होनी चाहिए.
अगर आपका compileSdk, Android Studio, AGP के मौजूदा वर्शन या आपके प्रोजेक्ट की लाइब्रेरी डिपेंडेंसी की ज़रूरी शर्तों के साथ संघर्ष करता है, तो Android Studio चेतावनियां दिखाता है.
minSdk
minSdk, Android के उस सबसे पुराने वर्शन के बारे में बताता है जिस पर
आपको ऐप्लिकेशन काम करना है. minSdk को सेट करने से, यह तय किया जाता है कि
कौनसे डिवाइस पर आपका ऐप्लिकेशन इंस्टॉल किया जा सकता है.
Android के पुराने वर्शन के साथ काम करने के लिए, आपको अपने कोड में और शर्तों के साथ जांच करनी पड़ सकती है. इसके अलावा, AndroidX के साथ काम करने वाली लाइब्रेरी का ज़्यादा इस्तेमाल करना पड़ सकता है. आपको
उन उपयोगकर्ताओं के प्रतिशत के हिसाब से, कम वर्शन के रखरखाव की लागत का आकलन करना चाहिए जो अब भी उन कम वर्शन का इस्तेमाल कर रहे हैं. मौजूदा वर्शन के इस्तेमाल के प्रतिशत के लिए, Android Studio के नए प्रोजेक्ट विज़र्ड में वर्शन चार्ट देखें.
Android Studio में अपने कोड में बदलाव करते समय या बिल्ड के दौरान जांच करते समय, लिंट उन एपीआई के बारे में चेतावनी देगा जिनका इस्तेमाल किया जा रहा है और जो minSdk में उपलब्ध नहीं हैं. आपको
नई सुविधाओं को शर्तों के साथ बनाकर इन्हें ठीक करना चाहिए. इसके अलावा, पुराने सिस्टम के साथ काम करने की सुविधा के लिए, Appcompat का इस्तेमाल करके भी ऐसा किया जा सकता है.
targetSdk
targetSdk का इस्तेमाल दो कामों के लिए किया जाता है:
यह आपके ऐप्लिकेशन के रनटाइम व्यवहार को सेट करता है.
यह प्रमाणित करता है कि आपने Android के किस वर्शन का इस्तेमाल करके टेस्ट किया है.
अगर आपका ऐप्लिकेशन किसी ऐसे डिवाइस पर चलता है जो आपके targetSdk के मुकाबले, Android के नए वर्शन का इस्तेमाल करता है, तो Android आपके ऐप्लिकेशन को काम करने के लिए, उस वर्शन के हिसाब से काम करने वाले मोड में चलाता है जो आपके targetSdk में बताया गया है. उदाहरण के लिए, जब API 23 में रनटाइम अनुमतियों का मॉडल पेश किया गया, तो सभी ऐप्लिकेशन इसे तुरंत अपनाने के लिए तैयार नहीं थे.
targetSdk को 22 पर सेट करके, वे ऐप्लिकेशन रनटाइम की अनुमतियों का इस्तेमाल किए बिना, एपीआई 23 वाले डिवाइसों पर चल सकते हैं. साथ ही, वे compileSdk के नए वर्शन में शामिल सुविधाओं का इस्तेमाल कर सकते हैं. Google Play के डिस्ट्रिब्यूशन की नीति, टारगेट एपीआई लेवल पर अन्य नीतियां लागू करती है.
targetSdk की वैल्यू, compileSdk की वैल्यू से कम या उसके बराबर होनी चाहिए.
ध्यान दें:compileSdk और targetSdk की वैल्यू एक जैसी होनी ज़रूरी नहीं है. इन बुनियादी सिद्धांतों को ध्यान में रखें:
compileSdk से आपको नए एपीआई का ऐक्सेस मिलता है
targetSdk आपके ऐप्लिकेशन का रनटाइम व्यवहार सेट करता है
targetSdk, compileSdk से कम या उसके बराबर होना चाहिए
ऐप्लिकेशन-मॉड्यूल बिल्ड स्क्रिप्ट का सैंपल
Android ऐप्लिकेशन मॉड्यूल की इस सैंपल बिल्ड स्क्रिप्ट में, डीएसएल के कुछ बुनियादी एलिमेंट और सेटिंग के बारे में बताया गया है:
Gradle में दो प्रॉपर्टी फ़ाइलें भी शामिल होती हैं, जो आपके रूट प्रोजेक्ट
डायरेक्ट्री में मौजूद होती हैं. इनका इस्तेमाल, Gradle बिल्ड टूलकिट की सेटिंग तय करने के लिए
किया जा सकता है:
gradle.properties
यहां से पूरे प्रोजेक्ट के लिए Gradle सेटिंग कॉन्फ़िगर की जा सकती है. जैसे, Gradle डीमन का ज़्यादा से ज़्यादा हीप साइज़. ज़्यादा जानकारी के लिए, बिल्ड एनवायरमेंट लेख पढ़ें.
local.properties
बिल्ड सिस्टम के लिए लोकल एनवायरमेंट प्रॉपर्टी कॉन्फ़िगर करता है. इनमें ये भी शामिल हैं:
ndk.dir - NDK का पाथ. यह प्रॉपर्टी अब काम नहीं करती. NDK के डाउनलोड किए गए वर्शन, Android SDK डायरेक्ट्री में मौजूद
ndk डायरेक्ट्री में इंस्टॉल किए जाते हैं.
sdk.dir - Android SDK टूल का पाथ.
cmake.dir - CMake का पाथ.
ndk.symlinkdir - Android Studio 3.5 और इसके बाद के वर्शन में,
NDK के लिए एक लिंक बनाया जाता है. यह लिंक, इंस्टॉल किए गए NDK पाथ से छोटा हो सकता है.
NDK को छोटे पाथ पर फिर से मैप करना (सिर्फ़ Windows के लिए)
Windows में, इंस्टॉल किए गए NDK फ़ोल्डर में मौजूद टूल, जैसे कि ld.exe के आखिर में लंबे पाथ होते हैं. ये टूल, लंबे पाथ के साथ ठीक से काम नहीं करते.
छोटा पाथ बनाने के लिए, local.properties में प्रॉपर्टी ndk.symlinkdir सेट करें. इससे, Android Gradle प्लग इन, NDK के लिए एक सिमलिंक बनाएगा. उस सिमलिंक का पाथ, मौजूदा एनडीके फ़ोल्डर से छोटा हो सकता है.
उदाहरण के लिए, ndk.symlinkdir = C:\ से यह सिमलिंक बनता है:
C:\ndk\19.0.5232133
प्रोजेक्ट को Gradle फ़ाइलों के साथ सिंक करना
जब अपने प्रोजेक्ट में, बिल्ड कॉन्फ़िगरेशन फ़ाइलों में बदलाव किए जाते हैं, तो
Android Studio के लिए ज़रूरी है कि आप अपनी प्रोजेक्ट फ़ाइलों को सिंक करें, ताकि वह आपके बिल्ड कॉन्फ़िगरेशन में किए गए बदलावों को इंपोर्ट कर सके. साथ ही, कुछ जांच करके यह पक्का कर सके कि आपके कॉन्फ़िगरेशन की वजह से, बिल्ड में गड़बड़ियां न हों.
प्रोजेक्ट की फ़ाइलों को सिंक करने के लिए, बदलाव करने पर दिखने वाले सूचना बार में, अभी सिंक करें पर क्लिक करें, जैसा कि दूसरे चित्र में दिखाया गया है. इसके अलावा, मेन्यू बार में जाकर, प्रोजेक्ट सिंक करें पर भी क्लिक किया जा सकता है. अगर Android Studio को आपके कॉन्फ़िगरेशन में कोई गड़बड़ी मिलती है — उदाहरण के लिए, आपका सोर्स कोड एपीआई की उन सुविधाओं का इस्तेमाल करता है जो सिर्फ़ आपके compileSdkVersion से ऊपर के एपीआई लेवल में उपलब्ध हैं — मैसेज विंडो से समस्या के बारे में पता चलता है.
दूसरी इमेज. Android Studio में बिल्ड कॉन्फ़िगरेशन
फ़ाइलों के साथ प्रोजेक्ट सिंक करें.
सोर्स सेट
Android Studio, हर मॉड्यूल के सोर्स कोड और रिसॉर्स को सोर्स सेट में व्यवस्थित करता है. कोई नया मॉड्यूल बनाने पर, Android Studio
मॉड्यूल में main/ सोर्स सेट बना देता है. किसी मॉड्यूल के
main/ सोर्स सेट में, उसके सभी
बिल्ड वैरिएंट का इस्तेमाल किया गया कोड और संसाधन शामिल होते हैं.
सोर्स सेट की अन्य डायरेक्ट्री इस्तेमाल करना ज़रूरी नहीं है. नए बिल्ड के वैरिएंट कॉन्फ़िगर करने पर, Android
Studio आपके लिए अपने-आप ये डायरेक्ट्री नहीं बनाता. हालांकि, main/ की तरह सोर्स सेट बनाने से, उन फ़ाइलों और संसाधनों को व्यवस्थित करने में मदद मिलती है जिनका इस्तेमाल Gradle को आपके ऐप्लिकेशन के कुछ वर्शन बनाते समय ही करना चाहिए:
src/main/
इस सोर्स सेट में ऐसे कोड और संसाधन शामिल हैं जो बिल्ड के सभी वैरिएंट के लिए सामान्य हैं.
src/buildType/
इस सोर्स सेट को बनाएं, ताकि सिर्फ़ किसी खास तरह के बिल्ड के लिए कोड और संसाधन शामिल किए जा सकें.
src/productFlavor/
इस सोर्स सेट को बनाएं, ताकि सिर्फ़ किसी खास प्रॉडक्ट फ़्लेवर के लिए कोड और संसाधन शामिल किए जा सकें.
ध्यान दें:प्रॉडक्ट के एक से ज़्यादा फ़्लेवर को जोड़ने के लिए, अपने बिल्ड को कॉन्फ़िगर करने पर, फ़्लेवर डाइमेंशन के बीच में प्रॉडक्ट के हर कॉम्बिनेशन के लिए सोर्स सेट डायरेक्ट्री बनाई जा सकती है: src/productFlavor1ProductFlavor2/.
src/productFlavorBuildType/
सिर्फ़ किसी खास बिल्ड वैरिएंट के लिए कोड और संसाधन शामिल करने के लिए, यह सोर्स सेट बनाएं.
उदाहरण के लिए, अपने ऐप्लिकेशन का "fullDebug" वर्शन जनरेट करने के लिए, बिल्ड सिस्टम इन सोर्स सेट से कोड, सेटिंग, और संसाधनों को मर्ज करता है:
src/fullDebug/ (बिल्ड वैरिएंट का सोर्स सेट)
src/debug/ (बिल्ड टाइप का सोर्स सेट)
src/full/ (प्रॉडक्ट फ़्लेवर का सोर्स सेट)
src/main/ (मुख्य सोर्स सेट)
ध्यान दें: Android Studio में कोई नई फ़ाइल या डायरेक्ट्री बनाते समय,
फ़ाइल > नया मेन्यू में दिए गए विकल्पों का इस्तेमाल
करके, उसे किसी खास सोर्स सेट के लिए बनाएं. आपके पास जिन सोर्स सेट को चुनने का विकल्प होता है वे आपके बिल्ड कॉन्फ़िगरेशन पर आधारित होते हैं. अगर ज़रूरी डायरेक्ट्री पहले से मौजूद नहीं हैं, तो Android Studio उन्हें अपने-आप बना देता है.
अगर अलग-अलग सोर्स सेट में एक ही फ़ाइल के अलग-अलग वर्शन मौजूद हैं, तो Gradle, किस फ़ाइल का इस्तेमाल करना है, यह तय करते समय प्राथमिकता के इस क्रम का इस्तेमाल करता है. बाईं ओर मौजूद सोर्स
सेट, दाईं ओर मौजूद सोर्स सेट की फ़ाइलों और सेटिंग को बदल देते हैं:
इससे Gradle, उन फ़ाइलों का इस्तेमाल कर सकता है जो आपके ऐप्लिकेशन के अन्य वर्शन में मौजूद गतिविधियों, ऐप्लिकेशन लॉजिक, और संसाधनों का फिर से इस्तेमाल करते समय, आपके बिल्ड वैरिएंट के लिए खास तौर पर बनाई गई हैं.
एक से ज़्यादा मेनिफ़ेस्ट को मर्ज करते समय, Gradle उसी प्राथमिकता क्रम का इस्तेमाल करता है, ताकि हर बिल्ड वैरिएंट, फ़ाइनल मेनिफ़ेस्ट में अलग-अलग कॉम्पोनेंट या अनुमतियां तय कर सके. कस्टम सोर्स सेट बनाने के बारे में ज़्यादा जानने के लिए, सोर्स सेट बनाना लेख पढ़ें.
वर्शन कैटलॉग
अगर आपके बिल्ड में एक जैसी डिपेंडेंसी वाले कई मॉड्यूल हैं या आपके पास एक जैसी डिपेंडेंसी वाले कई अलग-अलग प्रोजेक्ट हैं, तो हमारा सुझाव है कि आप एक जैसे वर्शन की जानकारी देने के लिए, वर्शन कैटलॉग या बिल ऑफ़ मटीरियल (बीओएम) का इस्तेमाल करें.
अन्य बिल्ड सिस्टम
Bazel की मदद से Android ऐप्लिकेशन बनाए जा सकते हैं, लेकिन आधिकारिक तौर पर यह सुविधा उपलब्ध नहीं है. Android Studio, आधिकारिक तौर पर Bagel प्रोजेक्ट के साथ काम नहीं करता है.
Bazel की मदद से बिल्ड करने की मौजूदा सीमाओं को बेहतर तरीके से समझने के लिए, पहले से मौजूद समस्याएं देखें.
इस पेज पर मौजूद कॉन्टेंट और कोड सैंपल कॉन्टेंट के लाइसेंस में बताए गए लाइसेंस के हिसाब से हैं. Java और OpenJDK, Oracle और/या इससे जुड़ी हुई कंपनियों के ट्रेडमार्क या रजिस्टर किए हुए ट्रेडमार्क हैं.
आखिरी बार 2025-03-06 (UTC) को अपडेट किया गया.
[null,null,["आखिरी बार 2025-03-06 (UTC) को अपडेट किया गया."],[],[]]