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

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

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

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

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

शानदार

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

Kotlin

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

नेमस्पेस, लाइब्रेरी की डेवलपर-फ़ेसिंग प्रॉपर्टी है. इसका संबंध ऐप्लिकेशन की पहचान से नहीं है. ऐप्लिकेशन की पहचान, applicationId प्रॉपर्टी का इस्तेमाल करके सेट की जाती है.

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

minSdkVersion की कोई वैल्यू चुनना

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

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

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

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

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

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

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

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

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

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

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

AAR मेटाडेटा सेट अप करना

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

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

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

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

शानदार

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{} दोनों में तय किया गया है. इसलिए, Gradle, productFlavors{} को प्राथमिकता देता है और minCompileSdk को 30 पर सेट करता है.

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

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

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

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

शानदार

android {
  testFixtures {
    enable = true
  }
}

Kotlin

android {
  testFixtures {
    enable = true
  }
}

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

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