ऐप्लिकेशन के संसाधन जोड़ें

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

Android Studio में, नए संसाधन और वैकल्पिक संसाधन कई तरीकों से जोड़े जा सकते हैं. यह इस बात पर निर्भर करता है कि आपको किस तरह का संसाधन जोड़ना है. इस पेज पर, संसाधन की बुनियादी फ़ाइलें जोड़ने, अपने संसाधनों की जगह बदलने, और संसाधन मर्ज करने के तरीके के बारे में बताया गया है.

Jetpack Compose में, यूज़र इंटरफ़ेस (यूआई) को एक्सएमएल लेआउट के बजाय Kotlin में तय किया जाता है. हालांकि, ऐप्लिकेशन के लेवल पर मौजूद स्टेटिक ऐसेट को सेव करने के लिए, अब भी res/ डायरेक्ट्री का इस्तेमाल किया जाता है. जैसे, आइकॉन, फ़ॉन्ट, और अनुवाद. कंपोज़ेबल फ़ंक्शन में इन संसाधनों को ऐक्सेस करने का तरीका जानने के लिए, Compose में संसाधन देखें.

किसी खास तरह के संसाधन बनाने के तरीके के बारे में जानने के लिए, ये पेज देखें:

अपने ऐप्लिकेशन के कोड से संसाधनों को रेफ़रंस करने के तरीके के बारे में जानने के लिए, ऐप्लिकेशन के संसाधनों की खास जानकारी देखें.

एक्सएमएल संसाधन फ़ाइल जोड़ना

हालांकि, पिछले पेज पर दिए गए लिंक में, हर तरह के संसाधन के हिसाब से वर्कफ़्लो के बारे में बताया गया है. फिर भी, इन चरणों को पूरा करके, एक्सएमएल की किसी भी संसाधन फ़ाइल को जोड़ा जा सकता है:

  1. Android या प्रोजेक्ट व्यू में, प्रोजेक्ट विंडो में जाकर, टारगेट ऐप्लिकेशन मॉड्यूल पर क्लिक करें.
  2. फ़ाइल > नया > Android संसाधन फ़ाइल को चुनें.

    पहली इमेज. नई संसाधन फ़ाइल डायलॉग.

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

कॉम्प्लेक्स एक्सएमएल संसाधनों को इनलाइन करना

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

इस उदाहरण में, एक्सएमएल की तीनों फ़ाइलें अलग-अलग बनाई और सेव की जा सकती हैं. ऐसा तब करें, जब आपको इनमें से एक या एक से ज़्यादा फ़ाइलों को फिर से इस्तेमाल करना हो. हालांकि, अगर एक्सएमएल की फ़ाइलों का इस्तेमाल सिर्फ़ इस ऐनिमेटेड वेक्टर ड्रॉएबल के लिए किया जाता है, तो Android Asset Packaging Tool (AAPT) में दिए गए इनलाइन संसाधन फ़ॉर्मैट का इस्तेमाल किया जा सकता है. AAPT की मदद से, एक्सएमएल की एक फ़ाइल में तीनों संसाधनों को तय किया जा सकता है. ज़्यादा जानकारी के लिए, कॉम्प्लेक्स एक्सएमएल संसाधनों को इनलाइन करना लेख पढ़ें.

संसाधन डायरेक्ट्री जोड़ना

संसाधन की नई डायरेक्ट्री जोड़ने के लिए, यह तरीका अपनाएं:

  1. प्रोजेक्ट विंडो में जाकर, टारगेट ऐप्लिकेशन मॉड्यूल पर क्लिक करें.
  2. फ़ाइल > नया > Android संसाधन डायरेक्ट्री को चुनें.

    दूसरी इमेज. नई संसाधन डायरेक्ट्री डायलॉग.

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

संसाधन डायरेक्ट्री बदलना

डिफ़ॉल्ट रूप से, आपके संसाधन module-name/src/source-set-name/res/ में मौजूद होते हैं. उदाहरण के लिए, आपके मॉड्यूल के मुख्य सोर्स सेट के संसाधन, src/main/res/ में होते हैं. वहीं, डीबग सोर्स सेट के संसाधन, src/debug/res/ में होते हैं.

हालांकि, sourceSets ब्लॉक में मौजूद res.srcDirs प्रॉपर्टी की मदद से, इन पाथ को किसी दूसरी जगह पर बदला जा सकता है. यह जगह, build.gradle फ़ाइल के हिसाब से तय की जाती है. उदाहरण के लिए:

शानदार

android {
    sourceSets {
        main {
            res.srcDirs = ['resources/main']
        }
        debug {
            res.srcDirs = ['resources/debug']
        }
    }
}

Kotlin

android {
    sourceSets {
        getByName("main") {
            res.srcDirs("resources/main")
        }
        getByName("debug") {
            res.srcDirs("resources/debug")
        }
    }
}

एक सोर्स सेट के लिए, संसाधन की एक से ज़्यादा डायरेक्ट्री भी तय की जा सकती हैं. इसके बाद, बिल्ड टूल उन्हें एक साथ मर्ज कर देते हैं. उदाहरण के लिए:

शानदार

android {
    sourceSets {
        main {
            res.srcDirs = ['res1', 'res2']
        }
    }
}

Kotlin

android {
    sourceSets {
        main {
            res.srcDirs("res1", "res2")
        }
    }
}

ज़्यादा जानकारी के लिए, सोर्स सेट के बारे में पढ़ें.

संसाधन मर्ज करना

आपके ऐप्लिकेशन की फ़ाइनल फ़ाइल में मौजूद संसाधन, तीन सोर्स से आ सकते हैं:

  • मुख्य सोर्स सेट (आम तौर पर, यह src/main/res/ में मौजूद होता है)
  • बिल्ड वैरिएंट सोर्स सेट
  • Android लाइब्रेरी (AAR)

जब हर सोर्स सेट या लाइब्रेरी के सभी संसाधन यूनीक होते हैं, तो उन्हें ऐप्लिकेशन की फ़ाइनल फ़ाइल में जोड़ दिया जाता है. किसी संसाधन को यूनीक तब माना जाता है, जब उसका फ़ाइल नाम, संसाधन टाइप डायरेक्ट्री और संसाधन क्वालिफ़ायर (अगर तय किया गया हो) में यूनीक हो .

अगर एक ही संसाधन के दो या उससे ज़्यादा मैचिंग वर्शन मौजूद हैं, तो ऐप्लिकेशन की फ़ाइनल फ़ाइल में सिर्फ़ एक वर्शन शामिल किया जाता है. बिल्ड टूल, प्राथमिकता के इस क्रम के आधार पर तय करते हैं कि कौनसे वर्शन को रखना है. इसमें सबसे ज़्यादा प्राथमिकता वाले वर्शन को बाईं ओर रखा गया है:

बिल्ड वैरिएंट > बिल्ड टाइप > प्रॉडक्ट फ़्लेवर > मुख्य सोर्स सेट > लाइब्रेरी डिपेंडेंसी

उदाहरण के लिए, अगर मुख्य सोर्स सेट में ये शामिल हैं:

  • res/values/strings.xml
  • res/values-es/strings.xml

और डीबग बिल्ड टाइप में यह शामिल है:

  • res/values/strings.xml

इसके बाद, ऐप्लिकेशन की फ़ाइनल फ़ाइल में, डीबग बिल्ड टाइप से res/values/strings.xml और मुख्य सोर्स सेट से res/values-es/strings.xml शामिल किया जाता है.

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