Android लाइब्रेरी और Android ऐप्लिकेशन मॉड्यूल, दोनों का स्ट्रक्चर एक जैसा होता है. इसमें ऐप्लिकेशन बनाने के लिए ज़रूरी सभी चीज़ें शामिल होती हैं. जैसे, सोर्स कोड, रिसोर्स फ़ाइलें, और Android मेनिफ़ेस्ट.
हालांकि, Android लाइब्रेरी को डिवाइस पर चलने वाले APK में कंपाइल करने के बजाय, 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 लाइब्रेरी बनाने के बारे में बताया गया है.
- अपनी लाइब्रेरी को कोई नाम दें और लाइब्रेरी में मौजूद कोड के लिए, SDK टूल का कम से कम वर्शन चुनें. इसके बाद, पूरा करें पर क्लिक करें.
Gradle प्रोजेक्ट सिंक होने के बाद, लाइब्रेरी मॉड्यूल प्रोजेक्ट पैनल में दिखता है. अगर आपको नया मॉड्यूल फ़ोल्डर नहीं दिखता है, तो पक्का करें कि पैनल में Android व्यू दिख रहा हो.
ऐप्लिकेशन मॉड्यूल को लाइब्रेरी मॉड्यूल में बदलना
अगर आपके पास कोई मौजूदा ऐप्लिकेशन मॉड्यूल है और आपको उसमें मौजूद कोड का फिर से इस्तेमाल करना है, तो इसे लाइब्रेरी मॉड्यूल में बदलने के लिए, यह तरीका अपनाएं:
- अगर Groovy का इस्तेमाल किया जा रहा है, तो मॉड्यूल-लेवल की
build.gradle
फ़ाइल खोलें. अगर Kotlin स्क्रिप्ट का इस्तेमाल किया जा रहा है, तोbuild.gradle.kts
फ़ाइल खोलें. applicationId
की लाइन मिटाएं. सिर्फ़ Android ऐप्लिकेशन मॉड्यूल ही इसे तय कर सकता है.- फ़ाइल में सबसे ऊपर मौजूद, ऐसा `plugins` ब्लॉक ढूंढें जो इस तरह दिखता हो:
इसे इनमें से किसी एक में बदलें:
- फ़ाइल सेव करें और फ़ाइल > Gradle फ़ाइलों के साथ प्रोजेक्ट सिंक करें पर क्लिक करें.
मॉड्यूल का स्ट्रक्चर पहले जैसा ही है, लेकिन अब यह Android लाइब्रेरी के तौर पर काम करता है. इस बिल्ड से APK के बजाय AAR फ़ाइल बनती है.
AAR फ़ाइल बनाने के लिए, प्रोजेक्ट विंडो में लाइब्रेरी मॉड्यूल चुनें और बिल्ड करें > APK बनाएं पर क्लिक करें.
प्रोजेक्ट के स्ट्रक्चर वाले डायलॉग बॉक्स की मदद से डिपेंडेंसी जोड़ना
अपने प्रोजेक्ट में डिपेंडेंसी जोड़ने के लिए, प्रोजेक्ट स्ट्रक्चर डायलॉग का इस्तेमाल किया जा सकता है. नीचे दिए गए सेक्शन में, डिपेंडेंसी जोड़ने के लिए डायलॉग बॉक्स का इस्तेमाल करने का तरीका बताया गया है.
उसी प्रोजेक्ट में अपनी लाइब्रेरी का इस्तेमाल करना
एक ही प्रोजेक्ट में, किसी दूसरे ऐप्लिकेशन या लाइब्रेरी मॉड्यूल में अपनी नई Android लाइब्रेरी के कोड का इस्तेमाल करने के लिए, प्रोजेक्ट-लेवल की डिपेंडेंसी जोड़ें:
- फ़ाइल > प्रोजेक्ट का स्ट्रक्चर > डिपेंडेंसी पर जाएं.
- वह मॉड्यूल चुनें जिसमें आपको लाइब्रेरी जोड़नी है.
- एलान की गई डिपेंडेंसी टैब में,
पर क्लिक करें. इसके बाद, मेन्यू से मॉड्यूल डिपेंडेंसी चुनें.
मॉड्यूल की डिपेंडेंसी जोड़ें डायलॉग में, अपना लाइब्रेरी मॉड्यूल चुनें.
वह कॉन्फ़िगरेशन चुनें जिसके लिए इस डिपेंडेंसी की ज़रूरत है या अगर यह सभी कॉन्फ़िगरेशन पर लागू होती है, तो लागू करें को चुनें. इसके बाद, ठीक है पर क्लिक करें.
Android Studio, डिपेंडेंसी जोड़ने के लिए आपके मॉड्यूल की build.gradle
या build.gradle.kts
फ़ाइल में बदलाव करता है. यह बदलाव इस फ़ॉर्मैट में होता है:
implementation project(path: ":example-library")
implementation(project(":example-library"))
अपनी लाइब्रेरी का इस्तेमाल दूसरे प्रोजेक्ट में करना
डिपेंडेंसी (JAR और AAR) शेयर करने का सुझाया गया तरीका, Maven रिपॉज़िटरी के साथ है. इसे Maven Central जैसी किसी सेवा पर होस्ट किया जा सकता है या अपनी लोकल डिस्क पर डायरेक्ट्री स्ट्रक्चर के साथ होस्ट किया जा सकता है. Maven रिपॉज़िटरी इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, रिमोट रिपॉज़िटरी लेख पढ़ें.
जब किसी Android लाइब्रेरी को मेवन रिपॉज़िटरी में पब्लिश किया जाता है, तो उसमें मेटाडेटा शामिल किया जाता है, ताकि लाइब्रेरी की डिपेंडेंसी, इस्तेमाल किए जा रहे बिल्ड में शामिल की जा सकें. इसकी मदद से, लाइब्रेरी में मौजूद डुप्लीकेट कॉन्टेंट अपने-आप हट जाता है. ऐसा तब होता है, जब लाइब्रेरी का इस्तेमाल एक से ज़्यादा जगहों पर किया जाता है.
किसी दूसरे प्रोजेक्ट के किसी दूसरे ऐप्लिकेशन मॉड्यूल में, अपनी Android लाइब्रेरी के कोड का इस्तेमाल करने के लिए, ऐसा करें:
- फ़ाइल > प्रोजेक्ट का स्ट्रक्चर > डिपेंडेंसी पर जाएं.
- एलान की गई डिपेंडेंसी टैब में,
पर क्लिक करें. इसके बाद, मेन्यू में लाइब्रेरी डिपेंडेंसी चुनें.
लाइब्रेरी डिपेंडेंसी जोड़ें डायलॉग में, खोज बॉक्स का इस्तेमाल करके वह लाइब्रेरी ढूंढें जिसे जोड़ना है. यह फ़ॉर्म,
settings.gradle
याsettings.gradle.kts
फ़ाइल मेंdependencyResolutionManagement { repositories {...}}
ब्लॉक में बताए गए रिपॉज़िटरी खोजता है.वह कॉन्फ़िगरेशन चुनें जिसके लिए इस डिपेंडेंसी की ज़रूरत है या अगर यह सभी कॉन्फ़िगरेशन पर लागू होती है, तो लागू करें चुनें. इसके बाद, ठीक है पर क्लिक करें.
अपने ऐप्लिकेशन की build.gradle
या build.gradle.kts
फ़ाइल देखें और पुष्टि करें कि यहां दिए गए डिक्लेरेशन जैसा कोई डिक्लेरेशन दिख रहा है या नहीं. यह डिक्लेरेशन, आपके चुने गए बिल्ड कॉन्फ़िगरेशन पर निर्भर करता है:
implementation 'com.example:examplelibrary:1.0.0'
implementation("com.example:examplelibrary:1.0.0")
अपने AAR या JAR को डिपेंडेंसी के तौर पर जोड़ना
किसी दूसरे ऐप्लिकेशन मॉड्यूल में अपनी Android लाइब्रेरी के कोड का इस्तेमाल करने के लिए, यह तरीका अपनाएं:
- फ़ाइल > प्रोजेक्ट का स्ट्रक्चर > डिपेंडेंसी पर जाएं.
- एलान की गई डिपेंडेंसी टैब में,
पर क्लिक करें. इसके बाद, मेन्यू में Jar डिपेंडेंसी चुनें.
Jar/Aar डिपेंडेंसी जोड़ें डायलॉग में, अपनी AAR या JAR फ़ाइल का पाथ डालें. इसके बाद, वह कॉन्फ़िगरेशन चुनें जिस पर डिपेंडेंसी लागू होती है. अगर लाइब्रेरी सभी कॉन्फ़िगरेशन के लिए उपलब्ध होनी चाहिए, तो लागू करने का कॉन्फ़िगरेशन चुनें.
अपने ऐप्लिकेशन की
build.gradle
याbuild.gradle.kts
फ़ाइल की जांच करके पुष्टि करें कि यहां दिए गए डिक्लेरेशन जैसा कोई डिक्लेरेशन दिख रहा है या नहीं. यह डिक्लेरेशन, आपके चुने गए बिल्ड कॉन्फ़िगरेशन के हिसाब से दिखेगा:
Android Studio के बाहर चल रहे Gradle बिल्ड पर डिपेंडेंसी इंपोर्ट करने के लिए, अपने ऐप्लिकेशन की build.gradle
या build.gradle.kts
फ़ाइल में डिपेंडेंसी का पाथ जोड़ें. उदाहरण के लिए:
dependencies { implementation fileTree(dir: "libs", include: ["*.jar", "*.aar"]) }
dependencies { implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar", "*.aar")))) }
Gradle डिपेंडेंसी जोड़ने के बारे में ज़्यादा जानने के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
किसी संसाधन को सार्वजनिक के तौर पर एलान करना
संसाधनों में, आपके प्रोजेक्ट की res/
डायरेक्ट्री में मौजूद सभी फ़ाइलें शामिल होती हैं. जैसे, इमेज. लाइब्रेरी में मौजूद सभी संसाधन डिफ़ॉल्ट रूप से सार्वजनिक होते हैं. सभी संसाधनों को निजी बनाने के लिए, आपको कम से कम एक एट्रिब्यूट को सार्वजनिक के तौर पर सेट करना होगा.
किसी संसाधन को सार्वजनिक के तौर पर एलान करने के लिए, अपनी लाइब्रेरी की public.xml
फ़ाइल में <public>
एलान जोड़ें. अगर आपने पहले कभी सार्वजनिक संसाधन नहीं जोड़े हैं, तो आपको अपनी लाइब्रेरी की res/values/
डायरेक्ट्री में public.xml
फ़ाइल बनानी होगी.
यहां दिए गए उदाहरण में, 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
फ़ाइल में निकालता है. इसके बाद, public.txt
फ़ाइल को AAR फ़ाइल में पैकेज किया जाता है.
लाइब्रेरी मॉड्यूल के डेवलपमेंट के बारे में जानकारी
लाइब्रेरी मॉड्यूल और उन पर निर्भर ऐप्लिकेशन डेवलप करते समय, इन व्यवहारों और सीमाओं का ध्यान रखें.
लाइब्रेरी को प्राथमिकता के क्रम में मर्ज किया जाता है.
अपने Android ऐप्लिकेशन मॉड्यूल में लाइब्रेरी मॉड्यूल के रेफ़रंस जोड़ने के बाद, उनकी प्राथमिकता सेट की जा सकती है. बिल्ड के समय, लाइब्रेरी को ऐप्लिकेशन के साथ एक-एक करके मर्ज किया जाता है. यह प्रोसेस, सबसे कम प्राथमिकता से शुरू होकर सबसे ज़्यादा प्राथमिकता तक होती है.
लाइब्रेरी में मौजूद रिसॉर्स रेफ़रंस, मर्ज किए गए रिसॉर्स का रेफ़रंस देंगे. हालांकि, ऐसा ज़रूरी नहीं है कि वे लाइब्रेरी रिसॉर्स का रेफ़रंस दें. जब एक ही नाम के संसाधन मौजूद हों, तो लाइब्रेरी मॉड्यूल, ऐप्लिकेशन या अन्य लाइब्रेरी के संसाधनों के बजाय, अपने संसाधनों का इस्तेमाल करने के लिए मजबूर नहीं कर सकता.
रिसॉर्स मर्ज करने से जुड़ी समस्याओं से बचें.
बिल्ड टूल, लाइब्रेरी मॉड्यूल के रिसॉर्स को, उससे जुड़े ऐप्लिकेशन मॉड्यूल के रिसॉर्स के साथ मर्ज करते हैं. अगर किसी रिसॉर्स का नाम दोनों मॉड्यूल में तय किया गया है, तो ऐप्लिकेशन के रिसॉर्स का इस्तेमाल किया जाता है.
अगर एक से ज़्यादा AAR लाइब्रेरी के बीच कोई विरोध होता है, तो डिपेंडेंसी की सूची में सबसे पहले सूची में शामिल लाइब्रेरी के रिसॉर्स (
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 कॉन्फ़िगरेशन फ़ाइल के तौर पर सेट करता है:android { defaultConfig { consumerProguardFiles 'lib-proguard-rules.txt' } ... }
android { defaultConfig { consumerProguardFiles("lib-proguard-rules.txt") } ... }
हालांकि, अगर आपका लाइब्रेरी मॉड्यूल, कई मॉड्यूल वाले ऐसे बिल्ड का हिस्सा है जो एपीके में कंपाइल होता है और 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/
नेटिव लाइब्रेरी एक्सपोर्ट करने के लिए