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

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

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

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

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

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

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"
    ...
}

चेतावनी: testNamespace और namespace को एक ही वैल्यू पर सेट न करें. ऐसा करने पर, नेमस्पेस के नाम में आपस में टकराव होता है.

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