Android Studio में मौजूद प्रोजेक्ट में, किसी ऐप्लिकेशन के वर्कस्पेस को तय करने वाली हर चीज़ शामिल होती है. जैसे, सोर्स कोड और ऐसेट से लेकर टेस्ट कोड और बिल्ड कॉन्फ़िगरेशन तक.
नया प्रोजेक्ट शुरू करने पर, Android Studio आपकी सभी फ़ाइलों के लिए ज़रूरी स्ट्रक्चर बनाता है. साथ ही, उन्हें Android Studio की Project विंडो में दिखाता है. विंडो खोलने के लिए, व्यू > टूल विंडो > प्रोजेक्ट चुनें.
इस पेज पर, आपके प्रोजेक्ट में मौजूद मुख्य कॉम्पोनेंट की खास जानकारी मिलती है.
मॉड्यूल
मॉड्यूल, सोर्स फ़ाइलों और बिल्ड सेटिंग का कलेक्शन होता है. इसकी मदद से, अपने प्रोजेक्ट को अलग-अलग फ़ंक्शनल यूनिट में बांटा जा सकता है. आपके प्रोजेक्ट में एक या कई मॉड्यूल हो सकते हैं. साथ ही, एक मॉड्यूल, दूसरे मॉड्यूल को डिपेंडेंसी के तौर पर इस्तेमाल कर सकता है. हर मॉड्यूल को अलग से बनाया, टेस्ट किया, और डीबग किया जा सकता है. ध्यान दें कि Gradle के दस्तावेज़ में, मॉड्यूल को "प्रोजेक्ट" या "सबप्रोजेक्ट" कहा जा सकता है.
अतिरिक्त मॉड्यूल तब काम आते हैं, जब आपको अपने प्रोजेक्ट में कोड लाइब्रेरी बनानी हो. इसके अलावा, इनका इस्तेमाल तब भी किया जा सकता है, जब आपको अलग-अलग डिवाइस टाइप, जैसे कि फ़ोन और पहनने योग्य डिवाइसों के लिए कोड और संसाधनों के अलग-अलग सेट बनाने हों. हालांकि, आपको सभी फ़ाइलों को एक ही प्रोजेक्ट में रखना हो और कुछ कोड शेयर करना हो.
अपने प्रोजेक्ट में नया मॉड्यूल जोड़ने के लिए, फ़ाइल > नया > नया मॉड्यूल पर क्लिक करें.
Android Studio में कुछ अलग-अलग तरह के मॉड्यूल उपलब्ध हैं:
- Android ऐप्लिकेशन मॉड्यूल
यह आपके ऐप्लिकेशन के सोर्स कोड, संसाधन फ़ाइलों, और ऐप्लिकेशन-लेवल की सेटिंग के लिए कंटेनर उपलब्ध कराता है. जैसे, मॉड्यूल-लेवल की बिल्ड फ़ाइल और Android मेनिफ़ेस्ट फ़ाइल. नया प्रोजेक्ट बनाते समय, डिफ़ॉल्ट ऐप्लिकेशन मॉड्यूल का नाम "app" होता है.
Android Studio में, ऐप्लिकेशन मॉड्यूल के ये टाइप उपलब्ध हैं:
- फ़ोन और टैबलेट
- ऑटोमोटिव
- Wear OS
- टेलीविज़न
हर मॉड्यूल में ज़रूरी फ़ाइलें और कुछ कोड टेंप्लेट होते हैं. ये टेंप्लेट, संबंधित ऐप्लिकेशन या डिवाइस टाइप के लिए सही होते हैं.
मॉड्यूल जोड़ने के बारे में ज़्यादा जानने के लिए, नए डिवाइस के लिए मॉड्यूल जोड़ना लेख पढ़ें.
- फ़ीचर मॉड्यूल
-
यह आपके ऐप्लिकेशन की एक मॉड्यूलर सुविधा है, जो Play Feature Delivery का फ़ायदा ले सकती है. उदाहरण के लिए, फ़ीचर मॉड्यूल की मदद से, अपने उपयोगकर्ताओं को मांग पर या Google Play इंस्टेंट के ज़रिए झटपट इस्तेमाल की सुविधा देने वाले ऐप्लिकेशन के तौर पर, अपने ऐप्लिकेशन की कुछ सुविधाएं उपलब्ध कराई जा सकती हैं.
Android Studio में, इस तरह के फ़ीचर मॉड्यूल उपलब्ध होते हैं:
- डाइनैमिक फ़ीचर मॉड्यूल
- Instant Dynamic Feature Library Module
ज़्यादा जानने के लिए, Play Feature Delivery के बारे में पढ़ें.
- लाइब्रेरी मॉड्यूल
यह आपके बार-बार इस्तेमाल किए जा सकने वाले कोड के लिए एक कंटेनर उपलब्ध कराता है. इसका इस्तेमाल, अन्य ऐप्लिकेशन मॉड्यूल में डिपेंडेंसी के तौर पर किया जा सकता है. इसके अलावा, इसे अन्य प्रोजेक्ट में इंपोर्ट किया जा सकता है. स्ट्रक्चर के हिसाब से, लाइब्रेरी मॉड्यूल, ऐप्लिकेशन मॉड्यूल जैसा ही होता है. हालांकि, बिल्ड करने पर यह APK के बजाय कोड आर्काइव फ़ाइल बनाता है. इसलिए, इसे किसी डिवाइस पर इंस्टॉल नहीं किया जा सकता.
Create New Module विंडो में, Android Studio इन तरह के लाइब्रेरी मॉड्यूल उपलब्ध कराता है:
- Android लाइब्रेरी: इसमें Android प्रोजेक्ट में इस्तेमाल की जा सकने वाली सभी तरह की फ़ाइलें शामिल होती हैं. हालांकि, इसमें नेटिव C++ कोड शामिल नहीं होता. इसमें Java और Kotlin सोर्स कोड, संसाधन, और मेनिफ़ेस्ट फ़ाइलें शामिल होती हैं. बिल्ड का नतीजा, Android Archive (AAR) फ़ाइल होती है. इसे अपने Android ऐप्लिकेशन मॉड्यूल के लिए, डिपेंडेंसी के तौर पर जोड़ा जा सकता है.
- Android नेटिव लाइब्रेरी: इसमें Android प्रोजेक्ट में इस्तेमाल की जा सकने वाली सभी फ़ाइलें होती हैं. यह Android लाइब्रेरी की तरह ही होती है. हालांकि, Android की नेटिव लाइब्रेरी में नेटिव C++ सोर्स कोड भी हो सकता है. बिल्ड का नतीजा, Android Archive (AAR) फ़ाइल होती है. इसे अपने Android ऐप्लिकेशन मॉड्यूल के लिए, डिपेंडेंसी के तौर पर जोड़ा जा सकता है.
- Java या Kotlin लाइब्रेरी: इसमें सिर्फ़ Kotlin या Java सोर्स फ़ाइलें होती हैं. बिल्ड का नतीजा, Java Archive (JAR) फ़ाइल होती है. इसे अपने Android ऐप्लिकेशन मॉड्यूल या अन्य Kotlin या Java प्रोजेक्ट के लिए, डिपेंडेंसी के तौर पर जोड़ा जा सकता है.
- बेंचमार्क > माइक्रोबेंचमार्क: इसमें ऐसी फ़ाइलें होती हैं जिनकी मदद से, कोड की परफ़ॉर्मेंस को नियमित तौर पर मेज़र किया जाता है. साथ ही, बेंचमार्किंग के नतीजों को आउटपुट किया जाता है. माइक्रोबेंचमार्क मॉड्यूल, कोड के उन छोटे-छोटे हिस्सों की परफ़ॉर्मेंस को मेज़र करने में खास तौर पर मददगार होते हैं जिनका बार-बार इस्तेमाल किया जाता है. ज़्यादा जानकारी के लिए, माइक्रोबेंचमार्क के बारे में जानकारी लेख पढ़ें.
जब आपको कोई लाइब्रेरी मॉड्यूल बनाना हो और उसे अपने Android ऐप्लिकेशन मॉड्यूल में डिपेंडेंसी के तौर पर जोड़ना हो, तो आपको उसे इस तरह से एलान करना होगा:
Groovy
dependencies { implementation project(':my-library-module') }
Kotlin
dependencies { implementation(project(":my-library-module")) }
- टेस्ट मॉड्यूल
इससे आपकी जांच, आपके बाकी कोड से अलग रहती हैं. टेस्ट मॉड्यूल को कॉन्फ़िगर करके, खास बिल्ड वैरिएंट को टारगेट किया जा सकता है.
Android Studio में, इस तरह के टेस्ट मॉड्यूल उपलब्ध होते हैं:
- बेसलाइन प्रोफ़ाइल जनरेट करने वाला टूल: बेसलाइन प्रोफ़ाइल से, उपयोगकर्ता के इंटरैक्शन को बेहतर बनाया जा सकता है. जैसे, नेविगेशन और स्क्रोलिंग. इससे पहली बार ऐप्लिकेशन चलाने पर, उपयोगकर्ता को बेहतर अनुभव मिलता है. ऐप्लिकेशन की परफ़ॉर्मेंस और उपयोगकर्ता अनुभव को बेहतर बनाने के लिए, क्रिटिकल यूज़र जर्नी के लिए बेसलाइन प्रोफ़ाइलें बनाएं.
- बेंचमार्क > मैक्रोबेंचमार्क: इसमें ऐसी फ़ाइलें होती हैं जिनकी मदद से, कोड की परफ़ॉर्मेंस को नियमित तौर पर मेज़र किया जाता है. साथ ही, बेंचमार्किंग के नतीजे भी मिलते हैं. मैक्रोबेंचमार्क मॉड्यूल, आपके ऐप्लिकेशन के बड़े इस्तेमाल के उदाहरणों की परफ़ॉर्मेंस को मेज़र करने में खास तौर पर मददगार होते हैं. जैसे, किसी सूची को स्क्रोल करना या यूज़र इंटरफ़ेस (यूआई) में बदलाव करना. ज़्यादा जानकारी के लिए, Macrobenchmark लिखना लेख पढ़ें.
प्रोजेक्ट फ़ाइलें
डिफ़ॉल्ट रूप से, Android Studio आपकी प्रोजेक्ट फ़ाइलों को Android व्यू में दिखाता है. इस व्यू में, डिस्क पर मौजूद फ़ाइलों का असल क्रम नहीं दिखता. इसके बजाय, इसे मॉड्यूल और फ़ाइल टाइप के हिसाब से व्यवस्थित किया जाता है, ताकि आपके प्रोजेक्ट की मुख्य सोर्स फ़ाइलों के बीच नेविगेट करना आसान हो. साथ ही, कुछ ऐसी फ़ाइलों या डायरेक्ट्री को छिपाया जाता है जिनका इस्तेमाल आम तौर पर नहीं किया जाता.
Android व्यू और डिस्क पर मौजूद स्ट्रक्चर के बीच कुछ अंतर यहां दिए गए हैं. जैसे, Android व्यू:
- यह प्रोजेक्ट की सभी कॉन्फ़िगरेशन फ़ाइलों को दिखाता है. ये फ़ाइलें, टॉप-लेवल के Gradle Script ग्रुप में होती हैं.
- जब आपके पास अलग-अलग प्रॉडक्ट फ़्लेवर और बिल्ड टाइप के लिए अलग-अलग मेनिफ़ेस्ट फ़ाइलें होती हैं, तब यह मॉड्यूल-लेवल के ग्रुप में मौजूद हर मॉड्यूल के लिए सभी मेनिफ़ेस्ट फ़ाइलें दिखाता है.
- यह सभी वैकल्पिक संसाधन फ़ाइलों को एक ग्रुप में दिखाता है. ऐसा, हर संसाधन क्वालिफ़ायर के लिए अलग-अलग फ़ोल्डर में दिखाने के बजाय किया जाता है. उदाहरण के लिए, आपके लॉन्चर आइकॉन के सभी डेनसिटी वर्शन एक साथ दिखते हैं.
हर Android ऐप्लिकेशन मॉड्यूल में, फ़ाइलों को इन ग्रुप में दिखाया जाता है:
- मेनिफ़ेस्ट
- में
AndroidManifest.xmlफ़ाइल मौजूद है. - java
- इसमें Kotlin और Java के सोर्स कोड की फ़ाइलें होती हैं. इन्हें पैकेज के नाम के हिसाब से अलग किया जाता है. इसमें JUnit टेस्ट कोड भी शामिल होता है.
- res
- इसमें बिना कोड वाले सभी संसाधन शामिल होते हैं. जैसे, यूज़र इंटरफ़ेस (यूआई) स्ट्रिंग और बिटमैप इमेज. इन्हें अलग-अलग सबडायरेक्ट्री में बांटा जाता है. संभावित संसाधन टाइप के बारे में ज़्यादा जानने के लिए, ऐप्लिकेशन के संसाधनों की खास जानकारी देखें.
प्रोजेक्ट व्यू
प्रोजेक्ट का असल फ़ाइल स्ट्रक्चर देखने के लिए, Android व्यू में छिपी हुई सभी फ़ाइलों को शामिल करें. इसके लिए, प्रोजेक्ट विंडो में सबसे ऊपर मौजूद मेन्यू से, प्रोजेक्ट चुनें.
प्रोजेक्ट व्यू चुनने पर, आपको कई और फ़ाइलें और डायरेक्ट्री दिख सकती हैं. इनमें ये शामिल हैं:
module-name/-
build/- इसमें बिल्ड आउटपुट शामिल होते हैं.
libs/- इसमें निजी लाइब्रेरी शामिल हैं.
src/- इसमें मॉड्यूल के लिए सभी कोड और संसाधन फ़ाइलें होती हैं. ये फ़ाइलें, यहां दी गई सबडायरेक्ट्री में होती हैं:
androidTest/- इसमें इंस्ट्रुमेंटेशन टेस्ट के लिए कोड होता है, जो Android डिवाइस पर चलता है. ज़्यादा जानकारी के लिए, Android Studio में टेस्ट करना लेख पढ़ें.
cpp/- इसमें Java Native Interface (JNI) का इस्तेमाल करने वाला नेटिव C या C++ कोड होता है. ज़्यादा जानकारी के लिए, Android NDK का दस्तावेज़ देखें.
main/- इसमें "main" सोर्स सेट फ़ाइलें होती हैं: Android कोड और सभी बिल्ड वैरिएंट के साथ शेयर किए गए संसाधन. अन्य बिल्ड वैरिएंट की फ़ाइलें, सिबलिंग डायरेक्ट्री में मौजूद होती हैं. जैसे, डिबग बिल्ड टाइप के लिए
src/debug/:AndroidManifest.xml- इसमें ऐप्लिकेशन और उसके हर कॉम्पोनेंट के बारे में बताया जाता है. ज़्यादा जानकारी के लिए, ऐप्लिकेशन मेनिफ़ेस्ट की खास जानकारी देखें.
java/- अगर आपके ऐप्लिकेशन में Kotlin और Java, दोनों का सोर्स कोड है, तो इसमें Kotlin या Java कोड सोर्स या दोनों शामिल होते हैं.
kotlin/- इसमें सिर्फ़ Kotlin कोड सोर्स शामिल होते हैं.
res/- इसमें ऐप्लिकेशन के संसाधन होते हैं, जैसे कि ड्रॉएबल फ़ाइलें और यूज़र इंटरफ़ेस (यूआई) स्ट्रिंग फ़ाइलें. ज़्यादा जानकारी के लिए, ऐप्लिकेशन के संसाधनों की खास जानकारी देखें.
assets/- इसमें ऐसी फ़ाइलें होती हैं जिन्हें APK फ़ाइल में कंपाइल किया जाना है. उदाहरण के लिए,
यह टेक्सचर और गेम डेटा के लिए एक अच्छी जगह है. इस डायरेक्ट्री में, सामान्य फ़ाइल सिस्टम की तरह ही नेविगेट किया जा सकता है. इसके लिए, यूआरआई का इस्तेमाल किया जा सकता है. साथ ही,
AssetManagerका इस्तेमाल करके, फ़ाइलों को बाइट की स्ट्रीम के तौर पर पढ़ा जा सकता है.
test/- इसमें लोकल टेस्ट के लिए कोड होता है, जो आपके होस्ट JVM पर चलता है.
build.gradleयाbuild.gradle.kts(मॉड्यूल)- इससे मॉड्यूल के हिसाब से बिल्ड कॉन्फ़िगरेशन तय किए जाते हैं. अगर बिल्ड स्क्रिप्ट की भाषा के तौर पर Groovy का इस्तेमाल किया जा रहा है, तो
build.gradleसही फ़ाइल का नाम है. वहीं, अगर Kotlin स्क्रिप्ट का इस्तेमाल किया जा रहा है, तो यहbuild.gradle.ktsहै.
build.gradleयाbuild.gradle.kts(प्रोजेक्ट)- इससे आपके बिल्ड कॉन्फ़िगरेशन के बारे में पता चलता है. यह सभी मॉड्यूल पर लागू होता है. अगर बिल्ड स्क्रिप्ट की भाषा के तौर पर Groovy का इस्तेमाल किया जा रहा है, तो फ़ाइल का सही नाम
build.gradleहै. वहीं, अगर Kotlin स्क्रिप्ट का इस्तेमाल किया जा रहा है, तो फ़ाइल का सही नामbuild.gradle.ktsहै. यह फ़ाइल प्रोजेक्ट के लिए ज़रूरी है. इसलिए, इसे अन्य सभी सोर्स कोड के साथ, वर्शन कंट्रोल में बनाए रखें.अन्य बिल्ड फ़ाइलों के बारे में जानकारी के लिए, बिल्ड कॉन्फ़िगर करना लेख पढ़ें.
प्रोजेक्ट स्ट्रक्चर की सेटिंग
अपने Android Studio प्रोजेक्ट की अलग-अलग सेटिंग बदलने के लिए, फ़ाइल > प्रोजेक्ट स्ट्रक्चर पर क्लिक करके, प्रोजेक्ट स्ट्रक्चर डायलॉग बॉक्स खोलें. इसमें ये सेक्शन शामिल हैं:
- प्रोजेक्ट: यह Gradle और Android Gradle प्लगिन के वर्शन और रिपॉज़िटरी के नाम की जगह सेट करता है.
- एसडीके की जगह: इससे JDK, Android SDK, और Android NDK की जगह सेट की जाती है. ये वे टूल हैं जिनका इस्तेमाल आपका प्रोजेक्ट करता है.
- वैरिएबल: इसकी मदद से, उन वैरिएबल में बदलाव किया जा सकता है जिनका इस्तेमाल आपकी बिल्ड स्क्रिप्ट में किया जाता है.
-
मॉड्यूल: इसकी मदद से, मॉड्यूल के हिसाब से बिल्ड कॉन्फ़िगरेशन में बदलाव किया जा सकता है. इनमें टारगेट और कम से कम एसडीके, ऐप्लिकेशन का हस्ताक्षर, और लाइब्रेरी की डिपेंडेंसी शामिल हैं. हर मॉड्यूल का सेटिंग पेज, इन टैब में बंटा होता है:
- प्रॉपर्टी: मॉड्यूल को कंपाइल करने के लिए, एसडीके और बिल्ड टूल के वर्शन के बारे में बताती है.
- साइनिंग: इससे यह पता चलता है कि आपके ऐप्लिकेशन पर साइन करने के लिए, किस सर्टिफ़िकेट का इस्तेमाल किया जाएगा.
-
डिपेंडेंसी: इस मॉड्यूल के लिए लाइब्रेरी, फ़ाइल, और मॉड्यूल डिपेंडेंसी की सूची दिखाता है. इस पैनल से, डिपेंडेंसी जोड़ी जा सकती हैं, उनमें बदलाव किया जा सकता है, और उन्हें मिटाया जा सकता है. मॉड्यूल की डिपेंडेंसी के बारे में ज़्यादा जानने के लिए, बिल्ड वैरिएंट कॉन्फ़िगर करना लेख पढ़ें.
-
बिल्ड वैरिएंट: इसकी मदद से, अपने प्रोजेक्ट के लिए अलग-अलग फ़्लेवर और बिल्ड टाइप कॉन्फ़िगर किए जा सकते हैं.
-
फ़्लेवर: इसकी मदद से, कई बिल्ड फ़्लेवर बनाए जा सकते हैं. हर फ़्लेवर में कॉन्फ़िगरेशन सेटिंग का एक सेट होता है. जैसे, मॉड्यूल का कम से कम और टारगेट SDK टूल का वर्शन, वर्शन कोड, और वर्शन का नाम.
उदाहरण के लिए, ऐसा हो सकता है कि आपने एक फ़्लेवर के लिए, एसडीके का कम से कम लेवल 21 और टारगेट एसडीके 29 तय किया हो. वहीं, दूसरे फ़्लेवर के लिए, एसडीके का कम से कम लेवल 24 और टारगेट एसडीके 33 तय किया हो.
- बिल्ड टाइप: इसकी मदद से, बिल्ड कॉन्फ़िगरेशन बनाए और उनमें बदलाव किए जा सकते हैं. इसके बारे में बिल्ड वैरिएंट कॉन्फ़िगर करना लेख में बताया गया है. डिफ़ॉल्ट रूप से, हर मॉड्यूल में debug और release बिल्ड टाइप होते हैं. हालांकि, ज़रूरत के हिसाब से और भी बिल्ड टाइप तय किए जा सकते हैं.
-