प्रोजेक्ट की खास जानकारी

Android Studio के प्रोजेक्ट में वह सब कुछ होता है जो किसी ऐप्लिकेशन के लिए आपके फ़ाइल फ़ोल्डर को परिभाषित करता है. इसमें सोर्स कोड और ऐसेट से लेकर कोड की जांच करना, और बिल्ड कॉन्फ़िगरेशन शामिल हैं.

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

इस पेज पर, आपके प्रोजेक्ट के मुख्य कॉम्पोनेंट के बारे में खास जानकारी दी गई है.

मॉड्यूल

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

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

अपने प्रोजेक्ट में नया मॉड्यूल जोड़ने के लिए, फ़ाइल > नया > नया मॉड्यूल पर क्लिक करें.

Android Studio में कुछ अलग तरह के मॉड्यूल उपलब्ध होते हैं:

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

Android Studio में इस तरह के ऐप्लिकेशन मॉड्यूल मौजूद हैं:

  • फ़ोन और टैबलेट
  • Automotive
  • Wear OS
  • टेलीविज़न
  • बेसलाइन प्रोफ़ाइल जनरेटर
  • मानदंड

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

मॉड्यूल जोड़ने के बारे में ज़्यादा जानने के लिए, नए डिवाइस के लिए मॉड्यूल जोड़ना लेख पढ़ें.

सुविधा वाला मॉड्यूल
आपके ऐप्लिकेशन की मॉड्यूलर सुविधा को दिखाता है. इस सुविधा को Play Feature Delivery का फ़ायदा मिल सकता है. उदाहरण के लिए, सुविधा वाले मॉड्यूल की मदद से, अपने उपयोगकर्ताओं को ऐप्लिकेशन की कुछ सुविधाएं मांगने पर या Google Play Instant की मदद से, इंस्टैंट इस्तेमाल की सुविधा के तौर पर दी जा सकती हैं.

Android Studio में, सुविधा वाले ये मॉड्यूल उपलब्ध हैं:

  • डाइनैमिक फ़ीचर मॉड्यूल
  • इंस्टैंट डाइनैमिक फ़ीचर लाइब्रेरी मॉड्यूल

ज़्यादा जानने के लिए, Play Feature Delivery के बारे में पढ़ें.

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

नया मॉड्यूल बनाएं विंडो में, Android Studio इन तरह के लाइब्रेरी मॉड्यूल उपलब्ध कराता है:

  • Android लाइब्रेरी: इसमें Android प्रोजेक्ट में काम करने वाली सभी तरह की फ़ाइलें शामिल होती हैं. हालांकि, इसमें नेटिव C++ कोड शामिल नहीं होता. इसमें Java और Kotlin सोर्स कोड, संसाधन, और मेनिफ़ेस्ट फ़ाइलें शामिल होती हैं. बिल्ड का नतीजा एक Android संग्रह (एएआर) फ़ाइल होती है. इसे अपने Android ऐप्लिकेशन मॉड्यूल के लिए, डिपेंडेंसी के तौर पर जोड़ा जा सकता है.
  • Android नेटिव लाइब्रेरी: इसमें Android लाइब्रेरी की तरह, Android प्रोजेक्ट में काम करने वाले सभी फ़ाइल टाइप शामिल होते हैं. हालांकि, Android नेटिव लाइब्रेरी में भी नेटिव C++ सोर्स कोड शामिल हो सकता है. बिल्ड का नतीजा एक Android संग्रह (एएआर) फ़ाइल होती है. इसे अपने Android ऐप्लिकेशन मॉड्यूल के लिए डिपेंडेंसी के तौर पर जोड़ा जा सकता है.
  • Java या Kotlin लाइब्रेरी: इसमें सिर्फ़ Kotlin या Java सोर्स फ़ाइलें होती हैं. बिल्ड का नतीजा एक Java Archive (JAR) फ़ाइल होती है. इसे अपने Android ऐप्लिकेशन मॉड्यूल या अन्य Kotlin या Java प्रोजेक्ट के लिए, डिपेंडेंसी के तौर पर जोड़ा जा सकता है.

मॉड्यूल को कभी-कभी सब-प्रोजेक्ट भी कहा जाता है, क्योंकि Gradle, मॉड्यूल को प्रोजेक्ट भी कहते हैं.

लाइब्रेरी मॉड्यूल बनाते समय, अगर आपको उसे अपने Android ऐप्लिकेशन मॉड्यूल में डिपेंडेंसी के तौर पर जोड़ना है, तो आपको इसे इस तरह से एलान करना होगा:

ग्रूवी

dependencies {
    implementation project(':my-library-module')
}

Kotlin

dependencies {
    implementation(project(":my-library-module"))
}

प्रोजेक्ट फ़ाइलें

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

Android व्यू और डिस्क पर मौजूद स्ट्रक्चर के बीच कुछ अंतर हैं. जैसे, Android व्यू:

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

हर Android ऐप्लिकेशन मॉड्यूल में, फ़ाइलें नीचे दिए गए ग्रुप में दिखती हैं:

मेनिफ़ेस्ट
में AndroidManifest.xml फ़ाइल शामिल है.
java
इसमें Kotlin और Java सोर्स कोड फ़ाइलें होती हैं, जिन्हें पैकेज के नाम से अलग किया जाता है. इनमें JUnit टेस्ट कोड भी शामिल होता है.
रिज़ॉल्यूशन
इसमें यूज़र इंटरफ़ेस (यूआई) स्ट्रिंग और बिटमैप इमेज जैसे सभी ऐसे संसाधन शामिल होते हैं जो कोड नहीं हैं. इन्हें संबंधित सबडायरेक्ट्री में बांटा जाता है. संसाधन के संभावित टाइप के बारे में ज़्यादा जानने के लिए, ऐप्लिकेशन के संसाधनों की खास जानकारी देखें.

प्रोजेक्ट व्यू

प्रोजेक्ट का असल फ़ाइल स्ट्रक्चर देखने के लिए, Project विंडो में सबसे ऊपर मौजूद मेन्यू से Project चुनें. इसमें Android व्यू से छिपी सभी फ़ाइलें भी दिखेंगी.

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

module-name/
build/
इसमें बिल्ड आउटपुट शामिल होते हैं.
libs/
इसमें निजी लाइब्रेरी मौजूद हैं.
src/
इन सबडायरेक्ट्री में, मॉड्यूल के लिए सभी कोड और रिसॉर्स फ़ाइलें शामिल होती हैं:
androidTest/
इसमें Android डिवाइस पर चलने वाली इंस्ट्रूमेंटेशन टेस्ट के लिए कोड होता है. ज़्यादा जानकारी के लिए, Android Studio में टेस्ट करना लेख पढ़ें.
cpp/
इसमें Java Native Interface (JNI) का इस्तेमाल करके, नेटिव C या C++ कोड शामिल होता है. ज़्यादा जानकारी के लिए, Android NDK का दस्तावेज़ देखें.
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 प्लग इन' के वर्शन और रिपॉज़िटरी की जगह का नाम सेट करता है.
  • SDK टूल की जगह: यह आपके प्रोजेक्ट में इस्तेमाल किए जाने वाले JDK, Android SDK टूल, और Android NDK की जगह सेट करता है.
  • वैरिएबल: इसकी मदद से, उन वैरिएबल में बदलाव किया जा सकता है जिनका इस्तेमाल आपकी बिल्ड स्क्रिप्ट में किया जाता है.
  • मॉड्यूल: आपको मॉड्यूल के खास बिल्ड कॉन्फ़िगरेशन में बदलाव करने देता है, जिनमें टारगेट और कम से कम SDK टूल, ऐप्लिकेशन सिग्नेचर, और लाइब्रेरी डिपेंडेंसी शामिल हैं. हर मॉड्यूल के सेटिंग पेज को नीचे दिए गए टैब में बांटा गया है:
  • डिपेंडेंसी: इस मॉड्यूल के लिए, लाइब्रेरी, फ़ाइल, और मॉड्यूल की डिपेंडेंसी की सूची दिखाता है. इस पैनल से, डिपेंडेंसी जोड़ी जा सकती हैं, उनमें बदलाव किया जा सकता है, और उन्हें मिटाया जा सकता है. मॉड्यूल की डिपेंडेंसी के बारे में ज़्यादा जानकारी के लिए, बिल्ड वैरिएंट कॉन्फ़िगर करना देखें.

  • बाइन्ड किए गए वैरिएंट: इसकी मदद से, अपने प्रोजेक्ट के लिए अलग-अलग फ़्लेवर और बाइन्ड किए गए टाइप कॉन्फ़िगर किए जा सकते हैं.

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

      उदाहरण के लिए, एक फ़्लेवर के लिए, SDK टूल का कम से कम वर्शन 21 और टारगेट वर्शन 29 तय किया जा सकता है. वहीं, दूसरे फ़्लेवर के लिए, SDK टूल का कम से कम वर्शन 24 और टारगेट वर्शन 33 तय किया जा सकता है.

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