अपनी लाइब्रेरी अपलोड करें

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

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

डेटा स्टोर करने की जगह का टाइप चुनें

लाइब्रेरी को एएआर फ़ाइलों के तौर पर पब्लिश किया जाता है. इन फ़ाइलों में कंपाइल किया गया कोड इस तरह शामिल है बाइटकोड और स्थानीय लाइब्रेरी, एक Android मेनिफ़ेस्ट, और संसाधन. पैकेज यह अपने-आप किसी अन्य पहचान, वर्शन या डिपेंडेंसी के बारे में नहीं बताता लाइब्रेरी.

डेटा स्टोर करने की जगह के ज़रिए एएआर देना, आम तौर पर सबसे सही तरीका है. एएआर को सीधे तौर पर बांटने के बजाय, यह इससे उपयोगकर्ताओं को यह जानने में मदद मिलती है कि लाइब्रेरी किस सोर्स से डाउनलोड की जा रही है तो बिना ज़रूरी जानकारी के name.aar फ़ाइल मैनेज करने की ज़रूरत नहीं पड़ती. वर्शन को ध्यान में रखें. लाइब्रेरी के नए वर्शन पर अपग्रेड करते समय, रिपॉज़िटरी का इस्तेमाल करके यह पक्का किया जा सकता है कि नए वर्शन की सिर्फ़ ज़रूरी डिपेंडेंसी उन्हें जोड़ा जाता है, ताकि उपयोगकर्ताओं को मैन्युअल रूप से डिपेंडेंसी अपडेट न करनी पड़े.

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

  • Gradle, आपकी लाइब्रेरी की डिपेंडेंसी को अपने-आप निर्भरता ग्राफ़ देखें.
  • Gradle यह पक्का कर सकता है कि आपकी लाइब्रेरी का एक वर्शन, डिपेंडेंसी में शामिल हो ग्राफ़, अगर आपकी लाइब्रेरी अलग-अलग वर्शन होने चाहिए.
  • Android Gradle प्लग इन (AGP) की मदद से, बेहतर तरीके से शिपिंग की जा सकती है अगर लाइब्रेरी Java 8 या उच्च भाषा सुविधाओं का उपयोग करती है, जिससे आपके उपयोगकर्ता.
  • आपकी लाइब्रेरी में, वैरिएंट पब्लिश करने की सुविधा का इस्तेमाल किया जा सकता है. साथ ही, इसमें टेस्ट जैसी सुविधाएं शामिल की जा सकती हैं फ़िक्स्चर.

एएआर को सीधे तौर पर डिस्ट्रिब्यूट करने से, आपके उपयोगकर्ता को कोई जानकारी नहीं दी जाती है आपकी लाइब्रेरी की पहचान, वर्शन या डिपेंडेंसी के बारे में. टास्क कब शुरू होगा को पब्लिश करने के बाद, डिस्ट्रिब्यूशन को एक अलग फ़ाइल से मैनेज किया जाता है का हिस्सा है. Maven रिपॉज़िटरी के लिए, यह POM फ़ाइल. इसलिए, लाइब्रेरी को पब्लिश करने के लिए, मैन्युअल तरीके से AAR फ़ाइलों को डिस्ट्रिब्यूट करने के बजाय, डेटा स्टोर करने की जगहों पर ज़्यादा ध्यान दें.

डेटा स्टोर करने की जगहों के टाइप

डेटा स्टोर करने की जगहें तीन तरह की होती हैं:

  • Maven सेंट्रल जैसी मुफ़्त ऑनलाइन रिपॉज़िटरी, सभी को डाउनलोड लाइब्रेरी.
  • लॉगिन के ज़रिए ऐक्सेस करने वाले निजी डेटा स्टोर करने की जगहें, निजी लाइब्रेरी पर टैप करें.
  • स्थानीय, फ़ोल्डर-आधारित रिपॉज़िटरी, इसके ज़रिए लाइब्रेरी के डिस्ट्रिब्यूशन की अनुमति देती हैं मैन्युअल डाउनलोड.

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

फ़ोल्डर पर आधारित रिपॉज़िटरी की एक ZIP फ़ाइल डिस्ट्रिब्यूट की जाती है, जिसमें आपका AAR शामिल होता है साथ ही, मेटाडेटा भी. इसके बाद, आपके उपयोगकर्ता फ़ाइल का कॉन्टेंट एक्सट्रैक्ट कर सकते हैं. साथ ही, और Gradle को पॉइंट कर सकता है. इसके बाद, उपयोगकर्ता ये काम कर सकते हैं: मेवन कोऑर्डिनेट का इस्तेमाल करके, लाइब्रेरी पर डिपेंडेंसी का एलान करना, जैसे कि लाइब्रेरी में थी, जो ऑनलाइन रिपॉज़िटरी (डेटा स्टोर करने की जगह) में थे. साथ ही, उन्हें उन सभी सुविधाओं का फ़ायदा मिल सकता था .

पब्लिकेशन बनाना

Gradle Maven पब्लिश प्लगिन का इस्तेमाल करके पब्लिश करें. Maven पब्लिश प्लगिन की मदद से, पब्लिकेशन और डेटा स्टोर करने की जगह तय करता है और इन प्रकाशनों को डेटा स्टोर करने की जगहें. ये पब्लिकेशन, ऐसे SoftwareComponent इंस्टेंस का इस्तेमाल करते हैं जो वह प्लगिन जो बिल्ड को बनाता है, जो AGP या java-library प्लगिन.

ध्यान दें कि AGP के साथ Maven Public प्लगिन चलाते समय सॉफ़्टवेयर प्लगिन के लागू होने पर, कॉम्पोनेंट सीधे तौर पर नहीं बनाए जाते हैं. इसके बजाय, वे इस दौरान बनाए गए afterEvaluate() कॉलबैक चरण. इसलिए, सॉफ़्टवेयर कॉम्पोनेंट चुनने वाला पब्लिकेशन afterEvaluate() चरण के दौरान भी कॉन्फ़िगर किया जाना चाहिए.

मॉड्यूल-लेवल build.gradle फ़ाइल का यह कोड स्निपेट एक singleVariant() की मदद से बनाए गए किसी वैरिएंट के लिए पब्लिकेशन या multipleVariants():

ग्रूवी

publishing {
  publications {
    release(MavenPublication) {
      groupId = 'com.my-company'
      artifactId = 'my-library'
      version = '1.0'

      afterEvaluate {
        from components.release
      }
    }
  }
}

Kotlin

publishing {
  publications {
    register<MavenPublication>("release") {
      groupId = "com.my-company"
      artifactId = "my-library"
      version = "1.0"

      afterEvaluate {
        from(components["release"])
      }
    }
  }
}

पिछले उदाहरण में, कॉम्पोनेंट का नाम (components.release) है singleVariant() को दिए गए नाम के आधार पर या multipleVariants().

किसी पब्लिकेशन का एलान करने के बाद, आपको टारगेट रिपॉज़िटरी बनाना होगा.

डेटा स्टोर करने की स्थानीय जगह में पब्लिश करें

किसी लोकल डेटा स्टोर करने की जगह में पब्लिश करना, किसी रिमोट पर पब्लिश करने जैसा ही है इसमें रिपॉज़िटरी की जानकारी शामिल नहीं है. पिछला सेक्शन पढ़कर रिमोट रिपॉज़िटरी में पब्लिश करने का तरीका जानें, ताकि पब्लिकेशन जो पसंदीदा वैरिएंट या वैरिएंट पब्लिश करता हो. इसके बाद, एक स्थानीय ऑडियंस बनाएं डेटा स्टोर करने की जगह:

ग्रूवी

publishing {
  publications {
    release(MavenPublication) {
      ...
    }
  }
  repositories {
    maven {
      name = 'myrepo'
      url = layout.buildDirectory.dir("repo")
    }
  }
}

Kotlin

publishing {
  publications {
    register<MavenPublication>("release") {
      ...
    }
  }
  repositories {
    maven {
      name = "myrepo"
      url = uri(layout.buildDirectory.dir("repo"))
    }
  }
}

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

अगर आपको रिपॉज़िटरी की ZIP फ़ाइल अपने-आप जनरेट करनी है, तो ऐसा करें इसलिए, नीचे दिए गए कोड का इस्तेमाल करें:

ग्रूवी

tasks.register('generateRepo', Zip) {
  def publishTask = tasks.named('publishReleasePublicationToMyrepoRepository')
  from publishTask.map { it.getRepository().getUrl() }
  into 'mylibrary'
  archiveFileName.set('mylibrary.zip')
}

Kotlin

tasks.register<Zip>("generateRepo") {
  val publishTask = tasks.named(
    "publishReleasePublicationToMyrepoRepository",
    PublishToMavenRepository::class.java)
  from(publishTask.map { it.repository.url })
  into("mylibrary")
  archiveFileName.set("mylibrary.zip")
}

यह कोड, generateRepo नाम का एक Zip टास्क बनाता है, जो कॉन्टेंट का इस्तेमाल करता है पब्लिश करने के टास्क को पूरा करता है और उसे यह पक्का करते हुए कंप्रेस करता है कि ZIP एंट्री mylibrary नाम का टॉप-लेवल फ़ोल्डर. आउटपुट यहां दिखेगा: build/distributions.