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