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 वर्चुअल मशीन (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 को बताती है कि आपके ऐप्लिकेशन को बिल्ड करते समय, किन मॉड्यूल को शामिल करना चाहिए. कई मॉड्यूल वाले प्रोजेक्ट के लिए, यह बताना ज़रूरी है कि फ़ाइनल बिल्ड में कौनसे मॉड्यूल शामिल होने चाहिए.
ज़्यादातर प्रोजेक्ट के लिए, फ़ाइल डिफ़ॉल्ट रूप से इस तरह दिखती है:
Kotlin DSL के लिए टॉप-लेवल build.gradle.kts फ़ाइल या
Groovy DSL के लिए build.gradle फ़ाइल, प्रोजेक्ट की रूट डायरेक्ट्री में होती है. आम तौर पर, यह आपके प्रोजेक्ट में मॉड्यूल के इस्तेमाल किए जाने वाले प्लग इन के सामान्य वर्शन तय करता है.
यहां दिए गए कोड सैंपल में, नया प्रोजेक्ट बनाने के बाद, टॉप-लेवल वाली बिल्ड स्क्रिप्ट में मौजूद डिफ़ॉल्ट सेटिंग और डीएसएल एलिमेंट के बारे में बताया गया है:
Kotlin DSL के लिए मॉड्यूल-लेवल build.gradle.kts या
Groovy 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 फ़ोल्डर से छोटा हो सकता है.
उदाहरण के लिए, 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 में, आधिकारिक तौर पर
Bazel प्रोजेक्ट काम नहीं करते.
Bazel की मदद से बिल्ड करने की मौजूदा सीमाओं को बेहतर तरीके से समझने के लिए, पहले से मौजूद समस्याएं देखें.
इस पेज पर मौजूद कॉन्टेंट और कोड सैंपल कॉन्टेंट के लाइसेंस में बताए गए लाइसेंस के हिसाब से हैं. Java और OpenJDK, Oracle और/या इससे जुड़ी हुई कंपनियों के ट्रेडमार्क या रजिस्टर किए हुए ट्रेडमार्क हैं.
आखिरी बार 2024-12-21 (UTC) को अपडेट किया गया.
[null,null,["आखिरी बार 2024-12-21 (UTC) को अपडेट किया गया."],[],[]]