इस पेज पर, 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
प्रॉपर्टी का इस्तेमाल करके सेट की जाती है.
AGP के पिछले वर्शन में, applicationId
प्रॉपर्टी (ऐप्लिकेशन के लिए) और namespace
प्रॉपर्टी (लाइब्रेरी के लिए), दोनों को मेनिफ़ेस्ट के package
एट्रिब्यूट का इस्तेमाल करके सेट किया जा सकता था. इस वजह से, लोगों को भ्रम होता था.
minSdkVersion
वैल्यू चुनें
अपनी लाइब्रेरी को पब्लिश करने के लिए, लाइब्रेरी के लिए minSdkVersion
चुनना ज़रूरी है. minSdkVersion
में, Android का वह कम से कम वर्शन दिखना चाहिए जिस पर आपका कोड काम कर सकता है.
minSdkVersion
चुनते समय, इन बातों का ध्यान रखें:
कम
minSdkVersion
चुनने पर, आम तौर पर आपकी लाइब्रेरी को ज़्यादा लोगों तक पहुंचाया जा सकता है.आम तौर पर, लाइब्रेरी का कोड तब तक लागू नहीं होता, जब तक ऐप्लिकेशन उसे साफ़ तौर पर कॉल नहीं करता. अगर लाइब्रेरी, ऐप्लिकेशन के मुख्य फ़ंक्शन के लिए ज़रूरी नहीं है, तो ऐप्लिकेशन अब भी Android के उस वर्शन पर चल सकता है जो लाइब्रेरी की ज़रूरी शर्तों से कम है. इसके लिए, लाइब्रेरी को कॉल करने से पहले रनटाइम की जांच की जाती है. इसलिए, अपनी लाइब्रेरी के
minSdkVersion
को इतना कम सेट करें कि इसे ऐप्लिकेशन में एम्बेड किया जा सके. साथ ही, ज़्यादा उपयोगकर्ताओं तक पहुंचने के लिए, जब भी संभव हो इसे कॉल किया जा सके.ज़्यादा
minSdkVersion
चुनने पर, हो सकता है कि ऐप्लिकेशन में लाइब्रेरी शामिल न की जाए.मेनिफ़ेस्ट मर्ज करने की प्रोसेस, AGP का एक चरण है. इसमें ऐप्लिकेशन और उसकी डिपेंडेंसी की मेनिफ़ेस्ट फ़ाइलों को मर्ज किया जाता है. इस प्रोसेस में यह पक्का किया जाता है कि किसी भी डिपेंडेंसी का
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{}
ब्लॉक में सेट किया जा सकता है:
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, बिल्ड प्रोसेस के दौरान सेटिंग की जगहों को इस तरह प्राथमिकता देता है:
buildTypes{}
productFlavors{}
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 का दस्तावेज़ देखें.