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

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

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

इस पेज पर, आपके प्रोजेक्ट में मौजूद मुख्य कॉम्पोनेंट की खास जानकारी मिलती है.

मॉड्यूल

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

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

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

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

Android ऐप्लिकेशन मॉड्यूल

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

Android Studio में, इस तरह के ऐप्लिकेशन मॉड्यूल उपलब्ध होते हैं:

  • फ़ोन और टैबलेट
  • Automotive
  • Wear OS
  • टेलीविज़न

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

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

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

Android Studio में, इस तरह के फ़ीचर मॉड्यूल उपलब्ध होते हैं:

  • डाइनैमिक फ़ीचर मॉड्यूल
  • Instant Dynamic Feature Library Module

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

लाइब्रेरी मॉड्यूल

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

नया मॉड्यूल बनाएं विंडो में, 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 में, इन तरह के टेस्ट मॉड्यूल उपलब्ध हैं:

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

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

डिफ़ॉल्ट रूप से, 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 बिल्ड टाइप होते हैं. हालांकि, ज़रूरत के हिसाब से और भी बिल्ड टाइप तय किए जा सकते हैं.