Android लाइब्रेरी का स्ट्रक्चर, Android ऐप्लिकेशन मॉड्यूल के जैसा ही होता है. इसमें ऐप्लिकेशन बनाने के लिए ज़रूरी सभी चीज़ें शामिल होती हैं. जैसे, सोर्स कोड, संसाधन फ़ाइलें, और Android मेनिफ़ेस्ट.
हालांकि, किसी डिवाइस पर चलने वाले APK में कंपाइल करने के बजाय, Android लाइब्रेरी को Android Archive (AAR) फ़ाइल में कंपाइल किया जाता है. इसका इस्तेमाल, Android ऐप्लिकेशन मॉड्यूल के लिए डिपेंडेंसी के तौर पर किया जा सकता है. JAR फ़ाइलों के उलट, AAR फ़ाइलें Android ऐप्लिकेशन के लिए ये सुविधाएं देती हैं:
- AAR फ़ाइलों में Android के रिसॉर्स और मेनिफ़ेस्ट फ़ाइल शामिल हो सकती है. इससे आपको Kotlin या Java क्लास और तरीकों के अलावा, लेआउट और ड्रॉएबल जैसे शेयर किए गए रिसॉर्स को बंडल करने की सुविधा मिलती है.
- AAR फ़ाइलों में, ऐप्लिकेशन मॉड्यूल के C/C++ कोड के इस्तेमाल के लिए, C/C++ लाइब्रेरी शामिल हो सकती हैं.
लाइब्रेरी मॉड्यूल इन स्थितियों में काम आता है:
- जब एक से ज़्यादा ऐसे ऐप्लिकेशन बनाए जा रहे हों जिनमें कुछ कॉम्पोनेंट एक जैसे हों. जैसे, ऐक्टिविटी, सेवाएं या यूज़र इंटरफ़ेस (यूआई) लेआउट
- जब एक ऐसा ऐप्लिकेशन बनाया जा रहा हो जिसके कई APK वर्शन मौजूद हों. जैसे, मुफ़्त और पैसे चुकाकर इस्तेमाल किया जाने वाला वर्शन. इन वर्शन में मुख्य कॉम्पोनेंट एक जैसे होते हैं
इन दोनों ही मामलों में, जिन फ़ाइलों का फिर से इस्तेमाल करना है उन्हें लाइब्रेरी मॉड्यूल में ले जाएं. इसके बाद, हर ऐप्लिकेशन मॉड्यूल के लिए लाइब्रेरी को डिपेंडेंसी के तौर पर जोड़ें.
इस पेज पर, Android लाइब्रेरी मॉड्यूल बनाने और उसका इस्तेमाल करने का तरीका बताया गया है. लाइब्रेरी को पब्लिश करने के बारे में जानकारी पाने के लिए, अपनी लाइब्रेरी पब्लिश करना लेख पढ़ें
लाइब्रेरी मॉड्यूल बनाना
अपने प्रोजेक्ट में नया लाइब्रेरी मॉड्यूल बनाने के लिए, यह तरीका अपनाएं:
- फ़ाइल > नया > नया मॉड्यूल पर क्लिक करें.
- दिखने वाले नया मॉड्यूल बनाएं डायलॉग बॉक्स में, Android लाइब्रेरी पर क्लिक करें. इसके बाद, आगे बढ़ें पर क्लिक करें.
Kotlin या Java लाइब्रेरी बनाने का विकल्प भी है. इससे एक पारंपरिक JAR फ़ाइल बनती है. JAR फ़ाइल कई प्रोजेक्ट के लिए काम की होती है. खास तौर पर, जब आपको कोड को अन्य प्लैटफ़ॉर्म के साथ शेयर करना हो. हालांकि, इससे Android संसाधनों या मेनिफ़ेस्ट फ़ाइलों को शामिल नहीं किया जा सकता. ये फ़ाइलें, Android प्रोजेक्ट में कोड को फिर से इस्तेमाल करने के लिए बहुत काम की होती हैं. इस गाइड में, Android लाइब्रेरी बनाने के बारे में बताया गया है.
- अपनी लाइब्रेरी को कोई नाम दें और लाइब्रेरी में मौजूद कोड के लिए, एसडीके का कम से कम लेवल वाला वर्शन चुनें. इसके बाद, हो गया पर क्लिक करें.
Gradle प्रोजेक्ट सिंक होने के बाद, लाइब्रेरी मॉड्यूल Project पैनल में दिखता है. अगर आपको नया मॉड्यूल फ़ोल्डर नहीं दिखता है, तो पक्का करें कि पैन में Android व्यू दिख रहा हो.
किसी ऐप्लिकेशन मॉड्यूल को लाइब्रेरी मॉड्यूल में बदलना
अगर आपके पास कोई ऐसा मौजूदा ऐप्लिकेशन मॉड्यूल है जिसमें मौजूद कोड का आपको फिर से इस्तेमाल करना है, तो उसे लाइब्रेरी मॉड्यूल में बदला जा सकता है. इसके लिए, यह तरीका अपनाएं:
- अगर Groovy का इस्तेमाल किया जा रहा है, तो मॉड्यूल-लेवल की
build.gradle
फ़ाइल खोलें. अगर Kotlin स्क्रिप्ट का इस्तेमाल किया जा रहा है, तोbuild.gradle.kts
फ़ाइल खोलें. applicationId
के लिए लाइन मिटाओ. इसे सिर्फ़ Android ऐप्लिकेशन मॉड्यूल तय कर सकता है.- फ़ाइल में सबसे ऊपर मौजूद `plugins` ब्लॉक ढूंढें. यह इस तरह दिखता है:
Groovy
plugins { id 'com.android.application' }
Kotlin
plugins { id("com.android.application") }
इसे बदलकर यह करें:
Groovy
plugins { id 'com.android.library' }
Kotlin
plugins { id("com.android.library") }
- फ़ाइल सेव करें और File > Sync Project with Gradle Files पर क्लिक करें.
मॉड्यूल का स्ट्रक्चर पहले जैसा ही रहता है, लेकिन अब यह Android लाइब्रेरी के तौर पर काम करता है. यह बिल्ड, APK के बजाय AAR फ़ाइल बनाता है.
जब आपको एएआर फ़ाइल बनानी हो, तब प्रोजेक्ट विंडो में जाकर लाइब्रेरी मॉड्यूल चुनें. इसके बाद, बनाएं > APK बनाएं पर क्लिक करें.
'प्रोजेक्ट स्ट्रक्चर' डायलॉग की मदद से डिपेंडेंसी जोड़ना
अपने प्रोजेक्ट में डिपेंडेंसी जोड़ने के लिए, प्रोजेक्ट स्ट्रक्चर डायलॉग का इस्तेमाल किया जा सकता है. यहां दिए गए सेक्शन में, डिपेंडेंसी जोड़ने के लिए डायलॉग बॉक्स का इस्तेमाल करने का तरीका बताया गया है.
उसी प्रोजेक्ट में अपनी लाइब्रेरी का इस्तेमाल करना
अगर आपको अपने नए Android लाइब्रेरी के कोड का इस्तेमाल, उसी प्रोजेक्ट के किसी दूसरे ऐप्लिकेशन या लाइब्रेरी मॉड्यूल में करना है, तो प्रोजेक्ट-लेवल की डिपेंडेंसी जोड़ें:
- फ़ाइल > प्रोजेक्ट स्ट्रक्चर > डिपेंडेंसी पर जाएं.
- वह मॉड्यूल चुनें जिसे आपको लाइब्रेरी में जोड़ना है.
- डिक्लेयर की गई डिपेंडेंसी टैब में,
पर क्लिक करें. इसके बाद, मेन्यू से मॉड्यूल डिपेंडेंसी चुनें.
Add Module Dependency डायलॉग में, अपनी लाइब्रेरी मॉड्यूल चुनें.
वह कॉन्फ़िगरेशन चुनें जिसके लिए इस डिपेंडेंसी की ज़रूरत है. अगर यह सभी कॉन्फ़िगरेशन पर लागू होती है, तो लागू करें को चुनें. इसके बाद, ठीक है पर क्लिक करें.
Android Studio, आपके मॉड्यूल की build.gradle
या build.gradle.kts
फ़ाइल में बदलाव करके, इस फ़ॉर्म में डिपेंडेंसी जोड़ता है:
Groovy
implementation project(path: ":example-library")
Kotlin
implementation(project(":example-library"))
अपनी लाइब्रेरी को अन्य प्रोजेक्ट में इस्तेमाल करना
डिपेंडेंसी (JAR और AAR) शेयर करने का सबसे सही तरीका है कि उन्हें Maven रिपॉज़िटरी के साथ शेयर किया जाए. यह रिपॉज़िटरी, Maven Central जैसी किसी सेवा पर होस्ट की गई हो या आपकी लोकल डिस्क पर डायरेक्ट्री स्ट्रक्चर के साथ मौजूद हो. Maven रिपॉज़िटरी इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, रिमोट रिपॉज़िटरी देखें.
जब किसी Android लाइब्रेरी को मेवन रिपॉज़िटरी में पब्लिश किया जाता है, तो उसमें मेटाडेटा शामिल होता है. इससे लाइब्रेरी की डिपेंडेंसी को इस्तेमाल किए जा रहे बिल्ड में शामिल किया जाता है. अगर इस लाइब्रेरी का इस्तेमाल कई जगहों पर किया जाता है, तो इससे लाइब्रेरी अपने-आप डुप्लीकेट नहीं होती.
किसी दूसरे प्रोजेक्ट के किसी अन्य ऐप्लिकेशन मॉड्यूल में, अपनी Android लाइब्रेरी के कोड का इस्तेमाल करने के लिए, यह तरीका अपनाएं:
- फ़ाइल > प्रोजेक्ट स्ट्रक्चर > डिपेंडेंसी पर जाएं.
- डिक्लेयर की गई डिपेंडेंसी टैब में,
पर क्लिक करें. इसके बाद, मेन्यू में लाइब्रेरी डिपेंडेंसी चुनें.
Add Library Dependency डायलॉग में, खोज बॉक्स का इस्तेमाल करके, जोड़ने के लिए लाइब्रेरी ढूंढें. यह फ़ॉर्म,
dependencyResolutionManagement { repositories {...}}
ब्लॉक में दी गई रिपॉज़िटरी में खोज करता है. यहsettings.gradle
याsettings.gradle.kts
फ़ाइल में मौजूद होती है.वह कॉन्फ़िगरेशन चुनें जिसके लिए इस डिपेंडेंसी की ज़रूरत है. अगर यह सभी कॉन्फ़िगरेशन पर लागू होती है, तो लागू करें को चुनें. इसके बाद, ठीक है पर क्लिक करें.
अपने ऐप्लिकेशन की build.gradle
या build.gradle.kts
फ़ाइल देखें. इससे पुष्टि करें कि यहां दिए गए उदाहरण के जैसा कोई एलान मौजूद है या नहीं. यह एलान, आपके चुने गए बिल्ड कॉन्फ़िगरेशन के हिसाब से अलग-अलग हो सकता है:
Groovy
implementation 'com.example:examplelibrary:1.0.0'
Kotlin
implementation("com.example:examplelibrary:1.0.0")
अपने AAR या JAR को डिपेंडेंसी के तौर पर जोड़ना
किसी दूसरे ऐप्लिकेशन मॉड्यूल में अपनी Android लाइब्रेरी के कोड का इस्तेमाल करने के लिए, यह तरीका अपनाएं:
- फ़ाइल > प्रोजेक्ट स्ट्रक्चर > डिपेंडेंसी पर जाएं.
- डिक्लेयर्ड डिपेंडेंसी टैब में,
पर क्लिक करें. इसके बाद, मेन्यू में Jar डिपेंडेंसी चुनें.
Add Jar/Aar Dependency डायलॉग में, अपनी AAR या JAR फ़ाइल का पाथ डालें. इसके बाद, वह कॉन्फ़िगरेशन चुनें जिस पर डिपेंडेंसी लागू होती है. अगर लाइब्रेरी को सभी कॉन्फ़िगरेशन के लिए उपलब्ध कराना है, तो लागू करने का कॉन्फ़िगरेशन चुनें.
अपने ऐप्लिकेशन की
build.gradle
याbuild.gradle.kts
फ़ाइल देखें. इससे पुष्टि करें कि आपने जो बिल्ड कॉन्फ़िगरेशन चुना है उसके हिसाब से, यहां दिए गए जैसा कोई एलान दिखता है या नहीं:Groovy
implementation files('my_path/my_lib.aar')
Kotlin
implementation(files("my_path/my_lib.aar"))
Android Studio के बाहर चल रहे Gradle बिल्ड पर डिपेंडेंसी इंपोर्ट करने के लिए, अपने ऐप्लिकेशन की build.gradle
या build.gradle.kts
फ़ाइल में डिपेंडेंसी का पाथ जोड़ें. उदाहरण के लिए:
Groovy
dependencies { implementation fileTree(dir: "libs", include: ["*.jar", "*.aar"]) }
Kotlin
dependencies { implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar", "*.aar")))) }
Gradle डिपेंडेंसी जोड़ने के बारे में ज़्यादा जानने के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
सार्वजनिक संसाधन का एलान करना
संसाधनों में, आपके प्रोजेक्ट की res/
डायरेक्ट्री में मौजूद सभी फ़ाइलें शामिल होती हैं. जैसे, इमेज. लाइब्रेरी में मौजूद सभी संसाधन डिफ़ॉल्ट रूप से सार्वजनिक होते हैं. सभी संसाधनों को डिफ़ॉल्ट रूप से निजी बनाने के लिए, आपको कम से कम एक एट्रिब्यूट को सार्वजनिक के तौर पर सेट करना होगा.
किसी सार्वजनिक संसाधन का एलान करने के लिए, अपनी लाइब्रेरी की public.xml
फ़ाइल में <public>
एलान जोड़ें. अगर आपने पहले कभी सार्वजनिक संसाधन नहीं जोड़े हैं, तो आपको अपनी लाइब्रेरी की public.xml
डायरेक्ट्री में public.xml
फ़ाइल बनानी होगी.res/values/
यहां दिए गए उदाहरण कोड में, mylib_app_name
और mylib_public_string
नाम वाले दो सार्वजनिक स्ट्रिंग संसाधन बनाए गए हैं:
<resources> <public name="mylib_app_name" type="string"/> <public name="mylib_public_string" type="string"/> </resources>
अगर आपको अपनी लाइब्रेरी के उपयोगकर्ताओं को उन संसाधनों को ऐक्सेस करने से रोकना है जो सिर्फ़ अंदरूनी इस्तेमाल के लिए हैं, तो इस ऑटोमैटिक प्राइवेट डेज़िग्नेशन मैकेनिज़्म का इस्तेमाल करें. इसके लिए, एक या उससे ज़्यादा सार्वजनिक संसाधनों का एलान करें. इसके अलावा, खाली <public />
टैग जोड़कर सभी संसाधनों को निजी बनाया जा सकता है. इससे किसी भी संसाधन को सार्वजनिक के तौर पर मार्क नहीं किया जाता है और सभी संसाधनों को निजी बना दिया जाता है.
अगर आपको अपनी लाइब्रेरी का इस्तेमाल करने वाले डेवलपर को कोई संसाधन दिखाना है, तो उसे सार्वजनिक के तौर पर सेट करें.
एट्रिब्यूट को निजी तौर पर सेट करने से, आपकी लाइब्रेरी का इस्तेमाल करने वाले लोगों को लाइब्रेरी के इंटरनल संसाधनों से कोड पूरा करने के सुझाव नहीं मिलते. साथ ही, इससे लोग आपकी लाइब्रेरी के क्लाइंट को नुकसान पहुंचाए बिना, निजी संसाधनों का नाम बदल सकते हैं या उन्हें हटा सकते हैं. निजी रिसॉर्स, कोड पूरा करने की सुविधा के लिए फ़िल्टर किए जाते हैं. साथ ही, निजी रिसॉर्स का रेफ़रंस देने की कोशिश करने पर, लिंट टूल आपको चेतावनी देता है.
लाइब्रेरी बनाते समय, Android Gradle प्लग इन, सार्वजनिक संसाधन की परिभाषाएं पाता है और उन्हें public.txt
फ़ाइल में निकालता है. इसके बाद, इसे AAR फ़ाइल में पैकेज किया जाता है.
लाइब्रेरी मॉड्यूल डेवलप करने के बारे में ध्यान देने वाली बातें
लाइब्रेरी मॉड्यूल और उन पर निर्भर ऐप्लिकेशन डेवलप करते समय, इन बातों और सीमाओं का ध्यान रखें.
लाइब्रेरी को प्राथमिकता के क्रम में मर्ज किया जाता है.
Android ऐप्लिकेशन मॉड्यूल में लाइब्रेरी मॉड्यूल के रेफ़रंस जोड़ने के बाद, उनकी प्राथमिकता सेट की जा सकती है. बिल्ड टाइम में, लाइब्रेरी को ऐप्लिकेशन के साथ एक-एक करके मर्ज किया जाता है. ऐसा सबसे कम प्राथमिकता वाली लाइब्रेरी से शुरू करके सबसे ज़्यादा प्राथमिकता वाली लाइब्रेरी तक किया जाता है.
किसी लाइब्रेरी में मौजूद रिसॉर्स के रेफ़रंस, मर्ज किए गए रिसॉर्स को रेफ़र करेंगे. ऐसा ज़रूरी नहीं है कि वे लाइब्रेरी के रिसॉर्स को रेफ़र करें. जब एक ही नाम के संसाधन मौजूद हों, तो लाइब्रेरी मॉड्यूल, ऐप्लिकेशन या अन्य लाइब्रेरी के संसाधनों के बजाय अपने संसाधनों का इस्तेमाल करने के लिए मजबूर नहीं कर सकता.
संसाधन मर्ज करने से जुड़े टकराव से बचें.
बिल्ड टूल, लाइब्रेरी मॉड्यूल के रिसॉर्स को डिपेंडेंट ऐप्लिकेशन मॉड्यूल के रिसोर्स के साथ मर्ज करते हैं. अगर किसी रिसॉर्स का नाम दोनों मॉड्यूल में तय किया गया है, तो ऐप्लिकेशन के रिसॉर्स का इस्तेमाल किया जाता है.
अगर एक से ज़्यादा एएआर लाइब्रेरी के बीच टकराव होता है, तो डिपेंडेंसी की सूची में सबसे ऊपर दी गई लाइब्रेरी (
dependencies
ब्लॉक में सबसे ऊपर) के रिसॉर्स का इस्तेमाल किया जाता है.संसाधन से जुड़ी समस्याओं से बचने के लिए, किसी प्रीफ़िक्स या नाम रखने के ऐसे तरीके का इस्तेमाल करें जो मॉड्यूल के लिए यूनीक हो. इसके अलावा, ऐसा भी हो सकता है कि वह तरीका सभी प्रोजेक्ट मॉड्यूल के लिए यूनीक हो.
मल्टी-मॉड्यूल बिल्ड में, JAR डिपेंडेंसी को ट्रांज़िटिव डिपेंडेंसी माना जाता है.
जब किसी लाइब्रेरी प्रोजेक्ट में JAR डिपेंडेंसी जोड़ी जाती है, तो वह AAR आउटपुट करता है. ऐसे में, JAR को लाइब्रेरी मॉड्यूल प्रोसेस करता है और उसे AAR के साथ पैकेज किया जाता है.
हालांकि, अगर आपके प्रोजेक्ट में कोई ऐसा लाइब्रेरी मॉड्यूल शामिल है जिसका इस्तेमाल ऐप्लिकेशन मॉड्यूल करता है, तो ऐप्लिकेशन मॉड्यूल, लाइब्रेरी की लोकल JAR डिपेंडेंसी को ट्रांज़िटिव डिपेंडेंसी के तौर पर इस्तेमाल करता है. इस मामले में, लोकल JAR को इस्तेमाल करने वाले ऐप्लिकेशन मॉड्यूल से प्रोसेस किया जाता है, न कि लाइब्रेरी मॉड्यूल से. इससे लाइब्रेरी के कोड में हुए बदलावों की वजह से होने वाले इंक्रीमेंटल बिल्ड की प्रोसेस तेज़ हो जाती है.
स्थानीय JAR डिपेंडेंसी की वजह से होने वाले किसी भी Java संसाधन के टकराव को, लाइब्रेरी का इस्तेमाल करने वाले ऐप्लिकेशन मॉड्यूल में ठीक किया जाना चाहिए.
लाइब्रेरी मॉड्यूल, बाहरी JAR लाइब्रेरी पर निर्भर हो सकता है.
आपके पास ऐसा लाइब्रेरी मॉड्यूल डेवलप करने का विकल्प होता है जो किसी बाहरी लाइब्रेरी पर निर्भर करता है. इस मामले में, डिपेंडेंट मॉड्यूल को ऐसे टारगेट के हिसाब से बनाना होगा जिसमें बाहरी लाइब्रेरी शामिल हो.
ध्यान दें कि लाइब्रेरी मॉड्यूल और उस पर निर्भर ऐप्लिकेशन, दोनों को अपनी मेनिफ़ेस्ट फ़ाइलों में बाहरी लाइब्रेरी का एलान करना होगा. इसके लिए, उन्हें
<uses-library>
एलिमेंट का इस्तेमाल करना होगा.ऐप्लिकेशन मॉड्यूल का
minSdkVersion
, लाइब्रेरी के तय किए गए वर्शन के बराबर या उससे ज़्यादा होना चाहिए.लाइब्रेरी को, डिपेंडेंट ऐप्लिकेशन मॉड्यूल के हिस्से के तौर पर कंपाइल किया जाता है. इसलिए, लाइब्रेरी मॉड्यूल में इस्तेमाल किए गए एपीआई, उस प्लैटफ़ॉर्म वर्शन के साथ काम करने चाहिए जिस पर ऐप्लिकेशन मॉड्यूल काम करता है.
हर लाइब्रेरी मॉड्यूल, अपना
R
क्लास बनाता है.डिपेंडेंट ऐप्लिकेशन मॉड्यूल बनाने पर, लाइब्रेरी मॉड्यूल को AAR फ़ाइल में कंपाइल किया जाता है. इसके बाद, इसे ऐप्लिकेशन मॉड्यूल में जोड़ दिया जाता है. इसलिए, हर लाइब्रेरी में अपना
R
क्लास होता है. इसका नाम लाइब्रेरी के पैकेज के नाम के हिसाब से रखा जाता है.मुख्य मॉड्यूल और लाइब्रेरी मॉड्यूल से जनरेट की गई
R
क्लास को उन सभी पैकेज में बनाया जाता है जिनकी ज़रूरत होती है. इनमें मुख्य मॉड्यूल का पैकेज और लाइब्रेरी के पैकेज शामिल हैं.लाइब्रेरी मॉड्यूल में, ProGuard कॉन्फ़िगरेशन फ़ाइल शामिल हो सकती है.
अगर आपके पास कोई लाइब्रेरी प्रोजेक्ट है जिसका इस्तेमाल AAR बनाने और पब्लिश करने के लिए किया जाता है, तो अपनी लाइब्रेरी के बिल्ड कॉन्फ़िगरेशन में ProGuard कॉन्फ़िगरेशन फ़ाइल जोड़ी जा सकती है. ऐसा करने पर, Android Gradle प्लगिन, ProGuard के उन नियमों को लागू करता है जिन्हें आपने तय किया है. बिल्ड टूल, इस फ़ाइल को लाइब्रेरी मॉड्यूल के लिए जनरेट की गई AAR फ़ाइल में एम्बेड करते हैं. किसी ऐप्लिकेशन मॉड्यूल में लाइब्रेरी जोड़ने पर, लाइब्रेरी की ProGuard फ़ाइल को ऐप्लिकेशन मॉड्यूल की ProGuard कॉन्फ़िगरेशन फ़ाइल (
proguard.txt
) में जोड़ दिया जाता है.अपनी लाइब्रेरी मॉड्यूल में ProGuard फ़ाइल एम्बेड करके, यह पक्का किया जा सकता है कि आपकी लाइब्रेरी पर निर्भर रहने वाले ऐप्लिकेशन मॉड्यूल को, आपकी लाइब्रेरी का इस्तेमाल करने के लिए अपनी ProGuard फ़ाइलों को मैन्युअल तरीके से अपडेट न करना पड़े. Android Studio का बिल्ड सिस्टम, आपके ऐप्लिकेशन को बनाते समय, ऐप्लिकेशन मॉड्यूल और लाइब्रेरी, दोनों के डायरेक्टिव का इस्तेमाल करता है. इसलिए, लाइब्रेरी पर कोड श्रिंकर को अलग से चलाने की ज़रूरत नहीं है.
अपनी लाइब्रेरी प्रोजेक्ट में ProGuard के नियम जोड़ने के लिए, अपनी लाइब्रेरी की
build.gradle
याbuild.gradle.kts
फ़ाइल केdefaultConfig
ब्लॉक में,consumerProguardFiles
प्रॉपर्टी के साथ फ़ाइल का नाम डालें.उदाहरण के लिए, यहां दिए गए स्निपेट में,
lib-proguard-rules.txt
को लाइब्रेरी की ProGuard कॉन्फ़िगरेशन फ़ाइल के तौर पर सेट किया गया है:Groovy
android { defaultConfig { consumerProguardFiles 'lib-proguard-rules.txt' } ... }
Kotlin
android { defaultConfig { consumerProguardFiles("lib-proguard-rules.txt") } ... }
हालांकि, अगर आपका लाइब्रेरी मॉड्यूल, मल्टी-मॉड्यूल बिल्ड का हिस्सा है, जो किसी APK में कंपाइल होता है और AAR जनरेट नहीं करता है, तो सिर्फ़ उस ऐप्लिकेशन मॉड्यूल पर कोड छोटा करने की प्रोसेस चलाएं जो लाइब्रेरी का इस्तेमाल करता है. ProGuard के नियमों और उनके इस्तेमाल के बारे में ज़्यादा जानने के लिए, अपने ऐप्लिकेशन को छोटा करें, उसे धुंधला करें, और ऑप्टिमाइज़ करें लेख पढ़ें.
-
किसी लाइब्रेरी मॉड्यूल की जांच करना, किसी ऐप्लिकेशन की जांच करने के लगभग बराबर होता है.
इनमें मुख्य अंतर यह है कि लाइब्रेरी और उसकी डिपेंडेंसी, टेस्ट APK की डिपेंडेंसी के तौर पर अपने-आप शामिल हो जाती हैं. इसका मतलब है कि टेस्ट APK में, न सिर्फ़ उसका अपना कोड शामिल होता है, बल्कि लाइब्रेरी का AAR और उसकी सभी डिपेंडेंसी भी शामिल होती हैं. टेस्ट किए जा रहे ऐप्लिकेशन के लिए कोई अलग ऐप्लिकेशन नहीं है. इसलिए,
androidTest
टास्क सिर्फ़ टेस्ट APK को इंस्टॉल (और अनइंस्टॉल) करता है.एक से ज़्यादा मेनिफ़ेस्ट फ़ाइलों को मर्ज करते समय, Gradle डिफ़ॉल्ट प्राथमिकता क्रम का पालन करता है. साथ ही, लाइब्रेरी के मेनिफ़ेस्ट को टेस्ट APK के मुख्य मेनिफ़ेस्ट में मर्ज करता है.
एएआर फ़ाइल की बनावट
AAR फ़ाइल का फ़ाइल एक्सटेंशन .aar
होता है. साथ ही, Maven आर्टफ़ैक्ट का टाइप भी aar
होता है. यह फ़ाइल खुद एक ZIP फ़ाइल है. सिर्फ़ /AndroidManifest.xml
फ़ील्ड में वैल्यू डालना ज़रूरी है.
AAR फ़ाइल में, यहां दी गई एक या इससे ज़्यादा वैकल्पिक एंट्री भी शामिल की जा सकती हैं:
/classes.jar
/res/
/R.txt
/public.txt
/assets/
/libs/name.jar
/jni/abi_name/name.so
(जहां abi_name, Android के साथ काम करने वाले एबीआई में से एक है)/proguard.txt
/lint.jar
/api.jar
- नेटिव लाइब्रेरी एक्सपोर्ट करने के लिए
/prefab/