इस पेज पर, Android Gradle प्लगिन (एजीपी) का इस्तेमाल करके, Android लाइब्रेरी प्रोजेक्ट को पब्लिश करने के लिए ज़रूरी प्रॉपर्टी और विकल्पों के बारे में बताया गया है. भले ही, आपने लाइब्रेरी बनाते समय इनमें से कुछ प्रॉपर्टी सेट की हों, लेकिन अपनी सेटिंग को ऑप्टिमाइज़ करने के लिए, यहां दिए गए दिशा-निर्देशों को पढ़ें.
कोई नेमस्पेस चुनें
Android लाइब्रेरी को एक नेमस्पेस का एलान करना होगा, ताकि उनके संसाधनों को कंपाइल करने पर, वे एक यूनीक R क्लास जनरेट कर सकें. यह नेमस्पेस, लाइब्रेरी के रूट क्लास पैकेज से काफ़ी हद तक मेल खाना चाहिए. इससे, लाइब्रेरी और उसकी R क्लास से सामान्य क्लास इंपोर्ट करते समय, उपयोगकर्ताओं को कोई भ्रम नहीं होगा.
AGP 7.0 से, ऐप्लिकेशन की build.gradle फ़ाइल में नेमस्पेस सेट किया जा सकता है. इसके लिए, यहां दिए गए कोड का उदाहरण देखें:
Groovy
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की वैल्यू ज़्यादा रखने पर, हो सकता है कि ऐप्लिकेशन में लाइब्रेरी शामिल न की जा सके.मेनिफ़ेस्ट मर्जर, एजीपी का एक चरण है. यह ऐप्लिकेशन और उसकी डिपेंडेंसी की मेनिफ़ेस्ट फ़ाइलों को मर्ज करता है. साथ ही, यह पक्का करता है कि किसी भी डिपेंडेंसी का
minSdkVersion, ऐप्लिकेशन से ज़्यादा न हो.minSdkVersionकी वैल्यू ज़्यादा चुनने पर, ऐप्लिकेशन डेवलपर मेनिफ़ेस्ट मर्जर की सुरक्षा जांचों को बंद कर सकते हैं. इससे, बिल्ड प्रोसेस के दौरान समस्याएं आ सकती हैं.मेनिफ़ेस्ट मर्जर, ऐप्लिकेशन प्रोजेक्ट में ऐसी लाइब्रेरी शामिल करने से रोकता है जिनका
minSdkVersionऐप्लिकेशन से ज़्यादा हो. इसलिए, ऐप्लिकेशन डेवलपर, बिल्ड से जुड़ी गड़बड़ियों को कम करने के लिए, मेनिफ़ेस्ट मर्जर की सुरक्षा जांचों को बंद कर सकते हैं. हालांकि, इससे बाद में काम न करने की समस्याएं हो सकती हैं.कुछ खास मामलों में,
minSdkVersionकी ज़्यादा वैल्यू चुनना ज़रूरी हो सकता है. जैसे, जब किसी लाइब्रेरी के मेनिफ़ेस्ट में ब्रॉडकास्ट रिसीवर या कोई अन्य तरीका शामिल हो, जिससे उसका कोड अपने-आप ट्रिगर हो जाता है.ऐसे मामलों में,
minSdkVersionकी ज़्यादा वैल्यू चुनने से यह पक्का होता है कि कोड रन हो सके. इसके अलावा, अपने-आप होने वाली प्रोसेस को बंद किया जा सकता है, ताकि ऐप्लिकेशन सही जांच करने के बाद, लाइब्रेरी को लागू करने का विकल्प चुन सके.
ऐप्लिकेशन में एम्बेड करने की अनुमति देने के लिए, अपनी लाइब्रेरी में RequiresApi एनोटेशन का इस्तेमाल करें. इससे कॉलर को यह पता चलता है कि उन्हें रनटाइम की जांच करनी होगी. Android
Lint, जांच के लिए RequiresApi जानकारी का इस्तेमाल करता है. अपने एपीआई कोड और एपीआई को बेहतर बनाने के लिए, एनोटेशन इस्तेमाल करने के बारे में ज़्यादा जानकारी पाने के लिए, एनोटेशन की मदद से कोड की जांच को बेहतर बनाना लेख पढ़ें.
एएआर मेटाडेटा सेट अप करना
Android लाइब्रेरी को Android Archive (AAR) फ़ाइल के तौर पर पैकेज किया जाता है. एएआर मेटाडेटा में ऐसी प्रॉपर्टी शामिल होती हैं जो एजीपी को लाइब्रेरी इस्तेमाल करने में मदद करती हैं. अगर आपकी लाइब्रेरी का इस्तेमाल, काम न करने वाले कॉन्फ़िगरेशन के साथ किया जाता है और एएआर मेटाडेटा सेट अप किया जाता है, तो उपयोगकर्ताओं को गड़बड़ी का मैसेज दिखता है. इससे उन्हें समस्या हल करने में मदद मिलती है.
minCompileSdk वैल्यू चुनें
वर्शन 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 का दस्तावेज़ पढ़ें.