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

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

नेमस्पेस चुनना

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

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

Groovy

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

Kotlin

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ग्रूवी

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 सेटिंग को प्राथमिकता देने के तरीके के बारे में ज़्यादा जानने के लिए, सोर्स सेट की मदद से बिल्ड करना लेख पढ़ें.

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

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

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

Groovy

android {
  testFixtures {
    enable = true
  }
}

Kotlin

android {
  testFixtures {
    enable = true
  }
}

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

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