Android लाइब्रेरी बनाना

Android लाइब्रेरी का स्ट्रक्चर, Android ऐप्लिकेशन मॉड्यूल के जैसा ही होता है. इसमें ऐप्लिकेशन बनाने के लिए ज़रूरी सभी चीज़ें शामिल होती हैं. जैसे, सोर्स कोड, संसाधन फ़ाइलें, और Android मेनिफ़ेस्ट.

हालांकि, किसी डिवाइस पर चलने वाले APK में कंपाइल करने के बजाय, Android लाइब्रेरी को Android Archive (AAR) फ़ाइल में कंपाइल किया जाता है. इसका इस्तेमाल, Android ऐप्लिकेशन मॉड्यूल के लिए डिपेंडेंसी के तौर पर किया जा सकता है. JAR फ़ाइलों के उलट, AAR फ़ाइलें Android ऐप्लिकेशन के लिए ये सुविधाएं देती हैं:

  • AAR फ़ाइलों में Android के संसाधन और मेनिफ़ेस्ट फ़ाइल शामिल हो सकती है. इससे आपको Kotlin या Java क्लास और तरीकों के अलावा, लेआउट और ड्रॉएबल जैसे शेयर किए गए संसाधनों को बंडल करने की सुविधा मिलती है.
  • AAR फ़ाइलों में, ऐप्लिकेशन मॉड्यूल के C/C++ कोड के इस्तेमाल के लिए, C/C++ लाइब्रेरी शामिल हो सकती हैं.

लाइब्रेरी मॉड्यूल इन स्थितियों में काम आता है:

  • जब एक से ज़्यादा ऐसे ऐप्लिकेशन बनाए जा रहे हों जिनमें कुछ कॉम्पोनेंट एक जैसे हों. जैसे, ऐक्टिविटी, सेवाएं या यूज़र इंटरफ़ेस (यूआई) लेआउट
  • जब एक ऐसा ऐप्लिकेशन बनाया जा रहा हो जिसके कई APK वर्शन मौजूद हों. जैसे, मुफ़्त और पैसे चुकाकर इस्तेमाल किया जाने वाला वर्शन. इन वर्शन में मुख्य कॉम्पोनेंट एक जैसे होते हैं

इन दोनों ही मामलों में, जिन फ़ाइलों का फिर से इस्तेमाल करना है उन्हें लाइब्रेरी मॉड्यूल में ले जाएं. इसके बाद, हर ऐप्लिकेशन मॉड्यूल के लिए लाइब्रेरी को डिपेंडेंसी के तौर पर जोड़ें.

इस पेज पर, Android लाइब्रेरी मॉड्यूल बनाने और उसे इस्तेमाल करने का तरीका बताया गया है. लाइब्रेरी को पब्लिश करने के बारे में जानकारी पाने के लिए, अपनी लाइब्रेरी पब्लिश करना लेख पढ़ें

लाइब्रेरी मॉड्यूल बनाना

अपने प्रोजेक्ट में नया लाइब्रेरी मॉड्यूल बनाने के लिए, यह तरीका अपनाएं:

  1. फ़ाइल > नया > नया मॉड्यूल पर क्लिक करें.
  2. दिखने वाले नया मॉड्यूल बनाएं डायलॉग बॉक्स में, Android लाइब्रेरी पर क्लिक करें. इसके बाद, आगे बढ़ें पर क्लिक करें.

    Kotlin या Java लाइब्रेरी बनाने का विकल्प भी है. इससे एक पारंपरिक JAR फ़ाइल बनती है. JAR फ़ाइल कई प्रोजेक्ट के लिए काम की होती है. खास तौर पर, जब आपको कोड को अन्य प्लैटफ़ॉर्म के साथ शेयर करना हो. हालांकि, इससे Android संसाधनों या मेनिफ़ेस्ट फ़ाइलों को शामिल नहीं किया जा सकता. ये फ़ाइलें, Android प्रोजेक्ट में कोड को फिर से इस्तेमाल करने के लिए बहुत काम की होती हैं. इस गाइड में, Android लाइब्रेरी बनाने के बारे में बताया गया है.

  3. अपनी लाइब्रेरी को कोई नाम दें और लाइब्रेरी में मौजूद कोड के लिए, एसडीके का कम से कम लेवल वाला वर्शन चुनें. इसके बाद, हो गया पर क्लिक करें.

Gradle प्रोजेक्ट सिंक होने के बाद, लाइब्रेरी मॉड्यूल Project पैनल में दिखता है. अगर आपको नया मॉड्यूल फ़ोल्डर नहीं दिखता है, तो पक्का करें कि पैन में Android व्यू दिख रहा हो.

किसी ऐप्लिकेशन मॉड्यूल को लाइब्रेरी मॉड्यूल में बदलना

अगर आपके पास कोई ऐसा ऐप्लिकेशन मॉड्यूल है जिसमें मौजूद कोड का आपको फिर से इस्तेमाल करना है, तो उसे लाइब्रेरी मॉड्यूल में बदला जा सकता है. इसके लिए, यह तरीका अपनाएं:

  1. अगर Groovy का इस्तेमाल किया जा रहा है, तो मॉड्यूल-लेवल की build.gradle फ़ाइल खोलें. अगर Kotlin स्क्रिप्ट का इस्तेमाल किया जा रहा है, तो build.gradle.kts फ़ाइल खोलें.
  2. applicationId के लिए लाइन मिटाओ. इसे सिर्फ़ Android ऐप्लिकेशन मॉड्यूल तय कर सकता है.
  3. फ़ाइल में सबसे ऊपर मौजूद `plugins` ब्लॉक ढूंढें. यह इस तरह दिखता है:

    शानदार

      plugins {
          id 'com.android.application'
      }
      

    Kotlin

      plugins {
          id("com.android.application")
      }
      

    इसे बदलकर यह करें:

    शानदार

      plugins {
          id 'com.android.library'
      }
      

    Kotlin

      plugins {
          id("com.android.library")
      }
      
  4. फ़ाइल सेव करें और File > Sync Project with Gradle Files पर क्लिक करें.

मॉड्यूल का स्ट्रक्चर पहले जैसा ही रहता है, लेकिन अब यह Android लाइब्रेरी के तौर पर काम करता है. यह बिल्ड, APK के बजाय AAR फ़ाइल बनाता है.

जब आपको एएआर फ़ाइल बनानी हो, तब प्रोजेक्ट विंडो में जाकर लाइब्रेरी मॉड्यूल चुनें. इसके बाद, बनाएं > APK बनाएं पर क्लिक करें.

'प्रोजेक्ट स्ट्रक्चर' डायलॉग बॉक्स का इस्तेमाल करके डिपेंडेंसी जोड़ना

अपने प्रोजेक्ट में डिपेंडेंसी जोड़ने के लिए, प्रोजेक्ट स्ट्रक्चर डायलॉग बॉक्स का इस्तेमाल किया जा सकता है. यहां दिए गए सेक्शन में, डिपेंडेंसी जोड़ने के लिए डायलॉग बॉक्स का इस्तेमाल करने का तरीका बताया गया है.

उसी प्रोजेक्ट में अपनी लाइब्रेरी का इस्तेमाल करना

अपने नए Android लाइब्रेरी के कोड को उसी प्रोजेक्ट के किसी दूसरे ऐप्लिकेशन या लाइब्रेरी मॉड्यूल में इस्तेमाल करने के लिए, प्रोजेक्ट-लेवल की डिपेंडेंसी जोड़ें:

  1. फ़ाइल > प्रोजेक्ट स्ट्रक्चर > डिपेंडेंसी पर जाएं.
  2. वह मॉड्यूल चुनें जिसे लाइब्रेरी में जोड़ना है.
  3. डिक्लेयर की गई डिपेंडेंसी टैब में, पर क्लिक करें. इसके बाद, मेन्यू से मॉड्यूल डिपेंडेंसी चुनें.

  4. Add Module Dependency डायलॉग में, अपना लाइब्रेरी मॉड्यूल चुनें.

    प्रोजेक्ट स्ट्रक्चर डायलॉग में मॉड्यूल डिपेंडेंसी जोड़ना

  5. वह कॉन्फ़िगरेशन चुनें जिसके लिए इस डिपेंडेंसी की ज़रूरत है. अगर यह सभी कॉन्फ़िगरेशन पर लागू होती है, तो लागू करें को चुनें. इसके बाद, ठीक है पर क्लिक करें.

Android Studio, आपके मॉड्यूल की build.gradle या build.gradle.kts फ़ाइल में बदलाव करके, इस फ़ॉर्म में डिपेंडेंसी जोड़ता है:

शानदार

  implementation project(path: ":example-library")

Kotlin

  implementation(project(":example-library"))

अपनी लाइब्रेरी को अन्य प्रोजेक्ट में इस्तेमाल करना

डिपेंडेंसी (JAR और AAR) शेयर करने का सबसे सही तरीका है कि उन्हें Maven रिपॉज़िटरी के साथ शेयर किया जाए. इसे Maven Central जैसी किसी सेवा पर होस्ट किया जाता है. इसके अलावा, इसे आपकी लोकल डिस्क पर मौजूद डायरेक्ट्री स्ट्रक्चर के साथ भी शेयर किया जा सकता है. Maven रिपॉज़िटरी इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, रिमोट रिपॉज़िटरी देखें.

जब किसी Android लाइब्रेरी को मेवन रिपॉज़िटरी में पब्लिश किया जाता है, तो उसमें मेटाडेटा शामिल होता है. इससे लाइब्रेरी की डिपेंडेंसी, इस्तेमाल किए जा रहे बिल्ड में शामिल हो जाती हैं. अगर इस लाइब्रेरी का इस्तेमाल कई जगहों पर किया जाता है, तो इससे लाइब्रेरी अपने-आप डुप्लीकेट नहीं होती.

किसी दूसरे प्रोजेक्ट के ऐप्लिकेशन मॉड्यूल में, अपनी Android लाइब्रेरी के कोड का इस्तेमाल करने के लिए, यह तरीका अपनाएं:

  1. फ़ाइल > प्रोजेक्ट स्ट्रक्चर > डिपेंडेंसी पर जाएं.
  2. डिक्लेयर की गई डिपेंडेंसी टैब में, पर क्लिक करें. इसके बाद, मेन्यू में लाइब्रेरी डिपेंडेंसी चुनें.

  3. Add Library Dependency डायलॉग में, जोड़ने के लिए लाइब्रेरी ढूंढने के लिए खोज बॉक्स का इस्तेमाल करें. यह फ़ॉर्म, settings.gradle या settings.gradle.kts फ़ाइल में मौजूद dependencyResolutionManagement { repositories {...}} ब्लॉक में बताई गई रिपॉज़िटरी में खोज करता है.

    प्रोजेक्ट स्ट्रक्चर डायलॉग में लाइब्रेरी डिपेंडेंसी जोड़ना

  4. वह कॉन्फ़िगरेशन चुनें जिसके लिए इस डिपेंडेंसी की ज़रूरत है. अगर यह सभी कॉन्फ़िगरेशन पर लागू होती है, तो लागू करें को चुनें. इसके बाद, ठीक है पर क्लिक करें.

अपने ऐप्लिकेशन की build.gradle या build.gradle.kts फ़ाइल देखें. इससे पुष्टि करें कि आपने यहां दिए गए उदाहरण के जैसा एलान किया हो. यह एलान, आपके चुने गए बिल्ड कॉन्फ़िगरेशन के हिसाब से अलग-अलग हो सकता है:

शानदार

  implementation 'com.example:examplelibrary:1.0.0'

Kotlin

  implementation("com.example:examplelibrary:1.0.0")

अपनी AAR या JAR को डिपेंडेंसी के तौर पर जोड़ना

किसी दूसरे ऐप्लिकेशन मॉड्यूल में अपनी Android लाइब्रेरी के कोड का इस्तेमाल करने के लिए, यह तरीका अपनाएं:

  1. फ़ाइल > प्रोजेक्ट स्ट्रक्चर > डिपेंडेंसी पर जाएं.
  2. डिक्लेयर की गई डिपेंडेंसी टैब में, पर क्लिक करें. इसके बाद, मेन्यू में Jar Dependency चुनें.

  3. Add Jar/Aar Dependency डायलॉग बॉक्स में, अपनी AAR या JAR फ़ाइल का पाथ डालें. इसके बाद, वह कॉन्फ़िगरेशन चुनें जिस पर डिपेंडेंसी लागू होती है. अगर लाइब्रेरी को सभी कॉन्फ़िगरेशन के लिए उपलब्ध होना चाहिए, तो लागू करने का कॉन्फ़िगरेशन चुनें.

    प्रोजेक्ट स्ट्रक्चर डायलॉग में AAR डिपेंडेंसी जोड़ना

    अपने ऐप्लिकेशन की build.gradle या build.gradle.kts फ़ाइल देखें. इससे पुष्टि करें कि यहां दिए गए उदाहरण की तरह कोई एलान मौजूद है. यह एलान, आपके चुने गए बिल्ड कॉन्फ़िगरेशन के हिसाब से अलग-अलग हो सकता है:

    शानदार

      implementation files('my_path/my_lib.aar')

    Kotlin

      implementation(files("my_path/my_lib.aar"))

Android Studio के बाहर चल रहे Gradle बिल्ड पर डिपेंडेंसी इंपोर्ट करने के लिए, अपने ऐप्लिकेशन की build.gradle या build.gradle.kts फ़ाइल में डिपेंडेंसी का पाथ जोड़ें. उदाहरण के लिए:

शानदार

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 प्रॉपर्टी के साथ फ़ाइल का नाम डालें.

    उदाहरण के लिए, यहां दिया गया स्निपेट, लाइब्रेरी के ProGuard कॉन्फ़िगरेशन फ़ाइल के तौर पर lib-proguard-rules.txt को सेट करता है:

    शानदार

    android {
        defaultConfig {
            consumerProguardFiles 'lib-proguard-rules.txt'
        }
        ...
    }

    Kotlin

    android {
        defaultConfig {
            consumerProguardFiles("lib-proguard-rules.txt")
        }
        ...
    }

    हालांकि, अगर आपका लाइब्रेरी मॉड्यूल, कई मॉड्यूल वाले ऐसे बिल्ड का हिस्सा है जो APK में कंपाइल होता है और AAR जनरेट नहीं करता है, तो सिर्फ़ उस ऐप्लिकेशन मॉड्यूल पर कोड छोटा करने की प्रोसेस चलाएं जो लाइब्रेरी का इस्तेमाल करता है. ProGuard के नियमों और उनके इस्तेमाल के बारे में ज़्यादा जानने के लिए, अपने ऐप्लिकेशन को छोटा करें, उसे उलझाएं, और ऑप्टिमाइज़ करें लेख पढ़ें.

  • किसी लाइब्रेरी मॉड्यूल की जांच करना, किसी ऐप्लिकेशन की जांच करने के लगभग बराबर होता है.

    इनमें मुख्य अंतर यह है कि लाइब्रेरी और उसकी डिपेंडेंसी, टेस्ट APK की डिपेंडेंसी के तौर पर अपने-आप शामिल हो जाती हैं. इसका मतलब है कि टेस्ट APK में न सिर्फ़ उसका अपना कोड शामिल होता है, बल्कि लाइब्रेरी का एएआर और उसकी सभी डिपेंडेंसी भी शामिल होती हैं. जांच के लिए कोई अलग ऐप्लिकेशन उपलब्ध नहीं है. इसलिए, androidTest टास्क सिर्फ़ टेस्ट APK को इंस्टॉल (और अनइंस्टॉल) करता है.

    एक से ज़्यादा मेनिफ़ेस्ट फ़ाइलों को मर्ज करते समय, Gradle डिफ़ॉल्ट प्राथमिकता क्रम का पालन करता है. साथ ही, लाइब्रेरी के मेनिफ़ेस्ट को टेस्ट APK के मुख्य मेनिफ़ेस्ट में मर्ज करता है.

किसी AAR फ़ाइल की बनावट

AAR फ़ाइल का फ़ाइल एक्सटेंशन .aar होता है. साथ ही, Maven आर्टफ़ैक्ट का टाइप भी aar होता है. फ़ाइल खुद एक ZIP फ़ाइल है. सिर्फ़ /AndroidManifest.xml फ़ील्ड में वैल्यू डालना ज़रूरी है.

AAR फ़ाइल में, यहां दी गई एक या इससे ज़्यादा वैकल्पिक एंट्री भी शामिल हो सकती हैं: