इस पेज पर, Android Gradle प्लगिन (एजीपी) का इस्तेमाल करके, 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 Archive (AAR) फ़ाइल के तौर पर पैकेज किया जाता है. एएआर मेटाडेटा में ऐसी प्रॉपर्टी होती हैं जिनकी मदद से एजीपी, लाइब्रेरी का इस्तेमाल कर पाता है. अगर आपकी लाइब्रेरी का इस्तेमाल, काम न करने वाले कॉन्फ़िगरेशन के साथ किया जाता है और एएआर मेटाडेटा सेट अप किया जाता है, तो उपयोगकर्ताओं को गड़बड़ी का मैसेज दिखता है. इससे उन्हें समस्या हल करने में मदद मिलती है.
minCompileSdk की वैल्यू चुनें
वर्शन 4.1 और इसके बाद के वर्शन में, AGP 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 सेटिंग को कैसे प्राथमिकता देता है, इस बारे में ज़्यादा जानने के लिए, सोर्स सेट की मदद से बिल्ड करना लेख पढ़ें.
टेस्ट फ़िक्सचर चालू करना
टेस्ट फ़िक्सचर का इस्तेमाल, आम तौर पर टेस्ट किए जा रहे कोड को सेट अप करने या किसी कॉम्पोनेंट के टेस्ट को आसान बनाने के लिए किया जाता है. वर्शन 7.1 से, AGP ऐप्लिकेशन और डाइनैमिक-फ़ीचर प्रोजेक्ट के अलावा, लाइब्रेरी प्रोजेक्ट के लिए भी टेस्ट फ़िक्सचर बना सकता है.
दूसरों के इस्तेमाल के लिए लाइब्रेरी पब्लिश करते समय, अपने एपीआई के लिए टेस्ट फ़िक्सचर बनाएं. टेस्ट फ़िक्सचर को मॉड्यूल-लेवल की build.gradle फ़ाइल में चालू किया जा सकता है:
Groovy
android { testFixtures { enable = true } }
Kotlin
android { testFixtures { enable = true } }
टेस्ट फ़िक्सचर चालू करने पर, Gradle अपने-आप एक src/testFixtures सोर्स सेट बना देता है. इसमें टेस्ट फ़िक्सचर लिखे जा सकते हैं.
ज़्यादा जानकारी के लिए, टेस्ट फ़िक्सचर इस्तेमाल करने के बारे में Gradle का दस्तावेज़ देखें.