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