ऐप्लिकेशन मॉड्यूल कॉन्फ़िगर करें

इस पेज पर, मॉड्यूल-लेवल की build.gradle.kts फ़ाइल में मौजूद, ऐप्लिकेशन की काम की सेटिंग के बारे में बताया गया है. build.gradle.kts फ़ाइल में सेट की गई ज़रूरी प्रॉपर्टी की खास जानकारी देने के साथ-साथ, इन कामों को करने का तरीका जानें:

  • अलग-अलग बिल्ड कॉन्फ़िगरेशन के लिए, ऐप्लिकेशन आईडी बदलें.
  • ऐप्लिकेशन आईडी से अलग, नेमस्पेस को सुरक्षित तरीके से अडजस्ट करें.

ऐप्लिकेशन आईडी सेट करना

हर Android ऐप्लिकेशन का एक यूनीक ऐप्लिकेशन आईडी होता है, जो Java या Kotlin पैकेज के नाम जैसा दिखता है. जैसे, com.example.myapp. यह आईडी, डिवाइस और Google Play Store पर आपके ऐप्लिकेशन की खास तौर पर पहचान करता है.

आपके ऐप्लिकेशन आईडी को आपके मॉड्यूल की build.gradle.kts फ़ाइल में applicationId प्रॉपर्टी से तय किया जाता है, जैसा कि यहां दिखाया गया है. applicationId की वैल्यू अपडेट करें. इसके लिए, com.example.myapp को अपने ऐप्लिकेशन के आईडी से बदलें:

Kotlin

android {
    defaultConfig {
        applicationId = "com.example.myapp"
        minSdk = 15
        targetSdk = 24
        versionCode = 1
        versionName = "1.0"
    }
    ...
}

Groovy

android {
    defaultConfig {
        applicationId "com.example.myapp"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    ...
}

ऐप्लिकेशन आईडी, Kotlin या Java पैकेज के नाम जैसा दिखता है. हालांकि, ऐप्लिकेशन आईडी के नाम से जुड़े नियम थोड़े ज़्यादा सख्त होते हैं:

  • इसमें कम से कम दो सेगमेंट (एक या उससे ज़्यादा बिंदु) होने चाहिए.
  • हर सेगमेंट किसी अक्षर से शुरू होना चाहिए.
  • सभी वर्ण, अक्षर और अंक या अंडरस्कोर [a-zA-Z0-9_] होने चाहिए.

Android Studio में नया प्रोजेक्ट बनाने पर, applicationId को वह पैकेज नाम अपने-आप असाइन हो जाता है जिसे आपने सेटअप के दौरान चुना था. इसके बाद, दोनों प्रॉपर्टी को अलग-अलग टॉगल किया जा सकता है. हालांकि, हमारा सुझाव है कि ऐसा न करें.

हमारा सुझाव है कि ऐप्लिकेशन आईडी सेट करते समय, ये काम करें:

  • ऐप्लिकेशन आईडी को नेमस्पेस के जैसा ही रखें. दोनों प्रॉपर्टी के बीच का अंतर थोड़ा भ्रमित करने वाला हो सकता है. हालांकि, अगर दोनों को एक जैसा रखा जाए, तो आपको चिंता करने की ज़रूरत नहीं है.
  • ऐप्लिकेशन पब्लिश करने के बाद, उसका आईडी न बदलें. अगर आपने आईडी बदला, तो Google Play Store बाद में अपलोड किए गए ऐप्लिकेशन को एक नए ऐप्लिकेशन के तौर पर दिखाएगा.
  • ऐप्लिकेशन आईडी को साफ़ तौर पर तय करें. अगर applicationId प्रॉपर्टी का इस्तेमाल करके, ऐप्लिकेशन आईडी को साफ़ तौर पर तय नहीं किया गया है, तो यह अपने-आप नेमस्पेस की वैल्यू ले लेता है. इसका मतलब है कि नेमस्पेस बदलने से ऐप्लिकेशन आईडी बदल जाता है. आम तौर पर, आपको ऐसा नहीं करना होता.

टेस्टिंग के लिए ऐप्लिकेशन आईडी बदलना

डिफ़ॉल्ट रूप से, बिल्ड टूल आपके इंस्ट्रुमेंटेशन टेस्ट APK पर ऐप्लिकेशन आईडी लागू करते हैं. इसके लिए, वे दिए गए बिल्ड वैरिएंट के ऐप्लिकेशन आईडी का इस्तेमाल करते हैं. साथ ही, इसमें .test जोड़ते हैं. उदाहरण के लिए, com.example.myapp.free बिल्ड वैरिएंट के लिए टेस्ट APK का ऐप्लिकेशन आईडी com.example.myapp.free.test है.

हालांकि, इसकी ज़रूरत नहीं होनी चाहिए, लेकिन defaultConfig या productFlavor ब्लॉक में testApplicationId प्रॉपर्टी को तय करके, ऐप्लिकेशन आईडी को बदला जा सकता है.

नेमस्पेस सेट करना

हर Android मॉड्यूल का एक नेमस्पेस होता है. इसका इस्तेमाल, जनरेट की गई R और BuildConfig क्लास के लिए, Kotlin या Java पैकेज के नाम के तौर पर किया जाता है.

आपका नेमस्पेस, आपके मॉड्यूल की build.gradle.kts फ़ाइल में namespace प्रॉपर्टी से तय होता है. जैसा कि यहां दिए गए कोड स्निपेट में दिखाया गया है. namespace शुरुआत में, उस पैकेज के नाम पर सेट होता है जिसे आपने प्रोजेक्ट बनाते समय चुना था.

Kotlin

android {
    namespace = "com.example.myapp"
    ...
}

Groovy

android {
    namespace "com.example.myapp"
    ...
}

आपके ऐप्लिकेशन को फ़ाइनल ऐप्लिकेशन पैकेज (APK) में बनाते समय, Android बिल्ड टूल, नेमस्पेस का इस्तेमाल आपके ऐप्लिकेशन के जनरेट किए गए R क्लास के नेमस्पेस के तौर पर करते हैं. इसका इस्तेमाल आपके ऐप्लिकेशन के संसाधनों को ऐक्सेस करने के लिए किया जाता है. उदाहरण के लिए, ऊपर दी गई बिल्ड फ़ाइल में, R क्लास को com.example.myapp.R पर बनाया गया है.

build.gradle.kts फ़ाइल की namespace प्रॉपर्टी के लिए सेट किया गया नाम, हमेशा आपके प्रोजेक्ट के बेस पैकेज के नाम से मेल खाना चाहिए. इस पैकेज में, आपकी गतिविधियां और ऐप्लिकेशन का अन्य कोड सेव होता है. आपके प्रोजेक्ट में अन्य सब-पैकेज हो सकते हैं. हालांकि, उन फ़ाइलों को namespace प्रॉपर्टी के नेमस्पेस का इस्तेमाल करके, R क्लास को इंपोर्ट करना होगा.

वर्कफ़्लो को आसान बनाने के लिए, अपने नेमस्पेस को ऐप्लिकेशन आईडी जैसा ही रखें. डिफ़ॉल्ट रूप से, ये दोनों एक जैसे ही होते हैं.

नेमस्पेस बदलना

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

ऐसे मामलों में, ऐप्लिकेशन आईडी के बजाय अपने मॉड्यूल की build.gradle.kts फ़ाइल में namespace प्रॉपर्टी को अपडेट करके नेमस्पेस बदलें. ऐसा करने से पहले, पक्का करें कि आपके ऐप्लिकेशन आईडी को साफ़ तौर पर तय किया गया हो, ताकि नेमस्पेस बदलने से ऐप्लिकेशन आईडी न बदले. नेमस्पेस, ऐप्लिकेशन आईडी पर किस तरह असर डाल सकता है, इस बारे में ज़्यादा जानने के लिए, ऐप्लिकेशन आईडी सेट करना लेख पढ़ें.

अगर namespace और Gradle applicationId के लिए अलग-अलग नाम हैं, तो बिल्ड टूल, बिल्ड के आखिर में ऐप्लिकेशन आईडी को आपके ऐप्लिकेशन की फ़ाइनल मेनिफ़ेस्ट फ़ाइल में कॉपी कर देते हैं. इसलिए, अगर बिल्ड के बाद AndroidManifest.xml फ़ाइल की जांच की जाती है, तो package एट्रिब्यूट को ऐप्लिकेशन आईडी पर सेट किया जाता है. आपस में मिले हुए मेनिफ़ेस्ट की package एट्रिब्यूट वह जगह है जहां Google Play Store और Android प्लैटफ़ॉर्म, आपके ऐप्लिकेशन की पहचान करने के लिए असल में देखते हैं.

जांच के लिए नेमस्पेस बदलना

androidTest और test सोर्स सेट के लिए डिफ़ॉल्ट नेमस्पेस, मुख्य नेमस्पेस होता है. इसके आखिर में .test जोड़ा जाता है. उदाहरण के लिए, अगर build.gradle फ़ाइल में namespace प्रॉपर्टी com.example.myapp है, तो टेस्टिंग नेमस्पेस डिफ़ॉल्ट रूप से com.example.myapp.test पर सेट होता है. टेस्टिंग के लिए नेमस्पेस बदलने के लिए, testNamespace प्रॉपर्टी का इस्तेमाल करें. इसके बारे में यहां दिए गए कोड स्निपेट में बताया गया है:

Kotlin

android {
    namespace = "com.example.myapp"
    testNamespace = "com.example.mytestapp"
    ...
}

Groovy

android {
    namespace "com.example.myapp"
    testNamespace "com.example.mytestapp"
    ...
}

टेस्टिंग के बारे में ज़्यादा जानने के लिए, Android पर ऐप्लिकेशन की टेस्टिंग लेख पढ़ें.