रिलीज़ के लिए अपनी लाइब्रेरी तैयार करना

इस पेज पर, Android Gradle प्लगिन (AGP) का इस्तेमाल करके, पब्लिश करने के लिए Android लाइब्रेरी प्रोजेक्ट तैयार करने के लिए ज़रूरी प्रॉपर्टी और विकल्पों के बारे में बताया गया है. अगर आपने लाइब्रेरी बनाते समय इनमें से कुछ प्रॉपर्टी सेट की हैं, तो अपनी सेटिंग को ऑप्टिमाइज़ करने के लिए, यहां दिए गए दिशा-निर्देश पढ़ें.

कोई नेमस्पेस चुनें

Android लाइब्रेरी को नेमस्पेस के बारे में बताना होता है, ताकि वे अपने संसाधनों को कंपाइल करते समय एक यूनीक R क्लास जनरेट कर सकें. यह नेमस्पेस, लाइब्रेरी के रूट क्लास पैकेज से काफ़ी मिलता-जुलता होना चाहिए. इससे उपयोगकर्ताओं को लाइब्रेरी और उसकी R क्लास से सामान्य क्लास इंपोर्ट करते समय कोई भ्रम नहीं होगा.

AGP 7.0 से, ऐप्लिकेशन की build.gradle फ़ाइल में namespace सेट किया जा सकता है. इसे कोड के इस उदाहरण में दिखाया गया है:

Groovy

android {
  namespace = 'com.example.library'
}

Kotlin

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

नेमस्पेस, लाइब्रेरी की एक ऐसी प्रॉपर्टी है जो डेवलपर को दिखती है. यह ऐप्लिकेशन की पहचान से जुड़ी नहीं है. ऐप्लिकेशन की पहचान, applicationId प्रॉपर्टी का इस्तेमाल करके सेट की जाती है.

AGP के पिछले वर्शन में, ऐप्लिकेशन के लिए applicationId प्रॉपर्टी और लाइब्रेरी के लिए namespace प्रॉपर्टी, दोनों को मेनिफ़ेस्ट के package एट्रिब्यूट का इस्तेमाल करके सेट किया जा सकता था. इससे भ्रम की स्थिति पैदा होती थी.

minSdkVersion वैल्यू चुनें

अपनी लाइब्रेरी के लिए minSdkVersion चुनना, लाइब्रेरी को पब्लिश करने का एक अहम हिस्सा है. minSdkVersion में, Android का वह कम से कम वर्शन दिखना चाहिए जिस पर आपका कोड काम कर सकता है.

minSdkVersion चुनते समय, इन बातों का ध्यान रखें:

  • minSdkVersion को कम पर सेट करने से, आम तौर पर आपकी लाइब्रेरी को ज़्यादा लोगों तक पहुंचाया जा सकता है.

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

  • minSdkVersion का ज़्यादा वर्शन चुनने से, ऐप्लिकेशन में लाइब्रेरी शामिल नहीं की जा सकती.

    मेनिफ़ेस्ट मर्जर, AGP का एक चरण है. यह ऐप्लिकेशन और उसकी डिपेंडेंसी से मेनिफ़ेस्ट फ़ाइलों को मर्ज करता है. यह इस बात को लागू करता है कि किसी भी डिपेंडेंसी में ऐप्लिकेशन से ज़्यादा minSdkVersion न हो.

  • ज़्यादा minSdkVersion चुनने पर, ऐप्लिकेशन डेवलपर मेनिफ़ेस्ट मर्जर की सुरक्षा जांचों को बंद कर सकते हैं. इससे बाद में बिल्ड प्रोसेस में समस्याएं आ सकती हैं.

    मेनिफ़ेस्ट मर्जर, ऐप्लिकेशन प्रोजेक्ट को ऐसी लाइब्रेरी शामिल करने से रोकता है जिनमें ऐप्लिकेशन के मुकाबले ज़्यादा minSdkVersion होता है. इसलिए, ऐप्लिकेशन डेवलपर, मेनिफ़ेस्ट मर्जर की सुरक्षा जांचों को बंद कर सकते हैं, ताकि बिल्ड से जुड़ी गड़बड़ियों को कम किया जा सके. हालांकि, इससे बाद में काम न करने से जुड़ी समस्याएं हो सकती हैं.

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

    ऐसे मामलों में, ज़्यादा minSdkVersion चुनने से यह पक्का किया जा सकता है कि कोड चल सके. इसके अलावा, अपने-आप होने वाली कार्रवाई को बंद किया जा सकता है, ताकि सही जांच करने के बाद ऐप्लिकेशन, लाइब्रेरी को लागू करने के लिए ऑप्ट-इन कर सके.

ऐप्लिकेशन में एम्बेड करने की अनुमति देने के लिए, अपनी लाइब्रेरी में RequiresApi एनोटेशन का इस्तेमाल करें. इससे, कॉल करने वालों को यह पता चलेगा कि उन्हें रनटाइम की जांच करनी है. Android Lint, RequiresApi जानकारी का इस्तेमाल करके जांच करता है. अपने एपीआई कोड और एपीआई को बेहतर बनाने के लिए एनोटेशन इस्तेमाल करने के बारे में ज़्यादा संसाधनों के लिए, एनोटेशन की मदद से कोड की जांच को बेहतर बनाना लेख पढ़ें.

एएआर मेटाडेटा सेट अप करना

Android लाइब्रेरी को Android Archive (AAR) फ़ाइल के तौर पर पैकेज किया जाता है. एएआर मेटाडेटा में ऐसी प्रॉपर्टी होती हैं जो AGP को लाइब्रेरी इस्तेमाल करने में मदद करती हैं. अगर आपकी लाइब्रेरी का इस्तेमाल किसी ऐसी कॉन्फ़िगरेशन में किया जाता है जो इसके साथ काम नहीं करती है और एएआर मेटाडेटा सेट अप किया गया है, तो उपयोगकर्ताओं को गड़बड़ी का मैसेज दिखता है. इससे उन्हें समस्या हल करने में मदद मिलती है.

minCompileSdk की कोई वैल्यू चुनें

AGP के 4.1 वर्शन से, minCompileSdk काम करता है. इससे पता चलता है कि इस्तेमाल करने वाले प्रोजेक्ट, कम से कम compileSdk का इस्तेमाल कर सकते हैं. अगर आपकी लाइब्रेरी में ऐसी मेनिफ़ेस्ट एंट्री या संसाधन शामिल हैं जो प्लैटफ़ॉर्म के नए एट्रिब्यूट का इस्तेमाल करते हैं, तो आपको यह वैल्यू सेट करनी होगी.

minCompileSdk वैल्यू को मॉड्यूल-लेवल की build.gradle फ़ाइल में मौजूद defaultConfig{}, productFlavors{}, और buildTypes{} ब्लॉक में सेट किया जा सकता है:

Groovy

android {
  defaultConfig {
    aarMetadata {
      minCompileSdk = 29
    }
  }
  productFlavors {
    foo {
      ...
      aarMetadata {
        minCompileSdk = 30
      }
    }
  }
}

Kotlin

android {
  defaultConfig {
    aarMetadata {
      minCompileSdk = 29
    }
  }
  productFlavors {
    register("foo") {
      ...
      aarMetadata {
        minCompileSdk = 30
      }
    }
  }
}

अगर आपने minCompileSdk को कई जगहों पर सेट किया है, तो Gradle, बिल्ड प्रोसेस के दौरान सेटिंग की जगहों को इस तरह प्राथमिकता देता है:

  1. buildTypes{}

  2. productFlavors{}

  3. defaultConfig{}

ऊपर दिए गए उदाहरण में, minCompileSdk को defaultConfig{} और productFlavors{}, दोनों में तय किया गया है. इसलिए, productFlavors{} को प्राथमिकता दी गई है और minCompileSdk को 30 पर सेट किया गया है.

कोड और संसाधनों को एक साथ इस्तेमाल करते समय, Gradle सेटिंग को प्राथमिकता कैसे देता है, इस बारे में ज़्यादा जानने के लिए सोर्स सेट के साथ बनाना लेख पढ़ें.

टेस्ट फ़िक्चर चालू करना

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

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

Groovy

android {
  testFixtures {
    enable = true
  }
}

Kotlin

android {
  testFixtures {
    enable = true
  }
}

टेस्ट फ़िक्चर चालू करने पर, Gradle अपने-आप एक src/testFixtures सोर्स सेट बना देता है. इसमें टेस्ट फ़िक्चर लिखे जा सकते हैं.

ज़्यादा जानकारी के लिए, टेस्ट फ़िक्चर इस्तेमाल करने के बारे में Gradle का दस्तावेज़ देखें.