ओपन सोर्स नोटिस शामिल करें

Google Play services के SDK टूल में कभी-कभी ओपन सोर्स लाइब्रेरी शामिल होती हैं या वे इन पर निर्भर होते हैं. ओपन सोर्स लाइब्रेरी के लाइसेंस की ज़रूरी शर्तों का पालन करने के लिए, डेवलपर के तौर पर यह आपकी ज़िम्मेदारी है कि आपके ऐप्लिकेशन में इस्तेमाल की जाने वाली ओपन सोर्स लाइब्रेरी के लिए, सूचनाएं सही तरीके से दिखाई जाएं.

Google Play services में टूल का एक सेट शामिल होता है. इसे इस तरह से डिज़ाइन किया गया है कि डेवलपर अपने ऐप्लिकेशन में इस्तेमाल की गई लाइब्रेरी के ओपन सोर्स सॉफ़्टवेयर (ओएसएस) की सूचनाओं को आसानी से दिखा सकें. oss-licenses-plugin और Google Play services का oss-licenses SDK, शामिल की गई लाइब्रेरी से लाइसेंस की शर्तें इकट्ठा करता है. ऐसा उनकी POM फ़ाइलों में एलान किए गए तरीके से किया जाता है. साथ ही, एक ऐसी गतिविधि बनाई जाती है जिसका इस्तेमाल इन शर्तों को दिखाने के लिए किया जा सकता है. इस बारे में ज़्यादा जानें कि टूल, लाइसेंस की जानकारी कैसे ढूंढता है और उसे कैसे पैकेज करता है.

Gradle प्लगिन जोड़ना

प्रोजेक्ट सेटिंग के pluginManagement में जाकर, ये काम करें:

  1. Google Maven रिपॉज़िटरी को शामिल करें.
  2. PluginManagement में oss-licenses प्लगिन से जुड़ी समस्या को हल करें.

यहां दिए गए कोड स्निपेट में ये चरण दिखाए गए हैं:

Kotlin DSL

settings.gradle.kts

pluginManagement {
  repositories {
    ...
    google()
  }
  resolutionStrategy {
    eachPlugin {
      if (requested.id.id == "com.google.android.gms.oss-licenses-plugin") {
        useModule("com.google.android.gms:oss-licenses-plugin:0.13.0")
      }
    }
  }
}

Groovy DSL

build.gradle

pluginManagement {
  repositories {
    ...
    google()
  }
  resolutionStrategy {
    eachPlugin {
      if (requested.id.id == "com.google.android.gms.oss-licenses-plugin") {
        useModule("com.google.android.gms:oss-licenses-plugin:0.13.0")
      }
    }
  }
}

अपने ऐप्लिकेशन-लेवल की बिल्ड फ़ाइल में, प्लगिन लागू करने के लिए, फ़ाइल के सबसे ऊपर मौजूद com.android.application प्लगिन के एलान के नीचे यह लाइन जोड़ें:

Kotlin DSL

app/build.gradle.kts

plugins {
    id("com.android.application")
    id("com.google.android.gms.oss-licenses-plugin")
}

Groovy DSL

app/build.gradle

plugins {
    id 'com.android.application'
    id 'com.google.android.gms.oss-licenses-plugin'
}

GitHub पर इस प्लग इन का कोड देखा जा सकता है.

अपने ऐप्लिकेशन में play-services-oss-licenses लाइब्रेरी जोड़ना

अपने ऐप्लिकेशन-लेवल की बिल्ड फ़ाइल के dependencies सेक्शन में, play-services-oss-licenses लाइब्रेरी पर डिपेंडेंसी जोड़ें:

Kotlin DSL

build.gradle.kts

implementation("com.google.android.gms:play-services-oss-licenses:17.5.3")

Groovy DSL

build.gradle

implementation 'com.google.android.gms:play-services-oss-licenses:17.5.3'

लाइसेंस की जानकारी दिखाना

जब आपका ऐप्लिकेशन बनता है, तो Gradle प्लग इन लाइसेंस को प्रोसेस करता है और उन्हें आपके ऐप्लिकेशन के संसाधनों में जोड़ता है. लाइसेंस को आसानी से दिखाने के लिए, अपने ऐप्लिकेशन में सही जगह पर play-services-oss-licenses लाइब्रेरी से मिली गतिविधि को लॉन्च किया जा सकता है. इसके बारे में यहां दिए गए कोड स्निपेट में बताया गया है:

Kotlin

import com.google.android.gms.oss.licenses.v2.OssLicensesMenuActivity
...

// When the user selects an option to see the licenses:
startActivity(Intent(this, OssLicensesMenuActivity::class.java))

Java

import com.google.android.gms.oss.licenses.v2.OssLicensesMenuActivity;
...

// When the user selects an option to see the licenses:
startActivity(new Intent(this, OssLicensesMenuActivity.class));

गतिविधि लॉन्च होने पर, यह आपके ऐप्लिकेशन में कंपाइल की गई ओपन सोर्स लाइब्रेरी की सूची दिखाती है. इसमें ऐप्लिकेशन में इस्तेमाल की गई लाइब्रेरी भी शामिल होती हैं, जैसा कि इमेज 1 में दिखाया गया है. उपयोगकर्ता किसी लाइब्रेरी के नाम पर टैप करके, उस लाइब्रेरी के लाइसेंस की ज़्यादा जानकारी देख सकते हैं.

सूची वाला व्यू, जिसमें हर एलिमेंट में ओपन सोर्स लाइब्रेरी का नाम शामिल है

पहली इमेज. लाइसेंस मेन्यू की गतिविधि में, ओपन सोर्स लाइब्रेरी की एक सूची दिखती है. इसमें से लाइब्रेरी चुनी जा सकती हैं. इन लाइब्रेरी का इस्तेमाल कोई ऐप्लिकेशन करता है.

गतिविधि का टाइटल सेट करना

डिफ़ॉल्ट रूप से, दिखाई गई गतिविधि का टाइटल "ओपन सोर्स लाइसेंस" होता है. setActivityTitle() को कॉल करके, गतिविधि के टाइटल को पसंद के मुताबिक बनाया जा सकता है. इसके बारे में यहां दिए गए कोड स्निपेट में बताया गया है:

Kotlin

OssLicensesMenuActivity.setActivityTitle(getString(R.string.custom_license_title))

Java

OssLicensesMenuActivity.setActivityTitle(getString(R.string.custom_license_title));

गतिविधि पर कोई थीम लागू करना

OssLicensesMenuActivity पर थीम लागू करने के अलग-अलग तरीके हैं. यह इस बात पर निर्भर करता है कि आपका ऐप्लिकेशन, Material 3 या एक्सएमएल पर आधारित थीम का इस्तेमाल करता है या नहीं.

Material 3 का इस्तेमाल करने वाले ऐप्लिकेशन

Material 3 का इस्तेमाल करने वाले ऐप्लिकेशन के लिए, setTheme() तरीके को कॉल करके, गतिविधि पर कस्टम थीम लागू की जा सकती है. इसके लिए, यहां दिए गए कोड स्निपेट को देखें:

Kotlin

import com.google.android.gms.oss.licenses.v2.OssLicensesMenuActivity
...

OssLicensesMenuActivity.setTheme(lightColorScheme, darkColorScheme, typography)
startActivity(Intent(this, OssLicensesMenuActivity::class.java))

Java

import com.google.android.gms.oss.licenses.v2.OssLicensesMenuActivity;
...

OssLicensesMenuActivity.setTheme(lightColorScheme, darkColorScheme, typography);
startActivity(new Intent(this, OssLicensesMenuActivity.class));

एक्सएमएल थीम का इस्तेमाल करने वाले ऐप्लिकेशन

एक्सएमएल थीम का इस्तेमाल करने वाले ऐप्लिकेशन के लिए, मेनिफ़ेस्ट में मौजूद गतिविधि पर कोई थीम लागू की जा सकती है. इससे, ऐप्लिकेशन की अन्य गतिविधियों में इस्तेमाल की गई थीम से मैच किया जा सकता है. इसके लिए, अपने ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में <activity> एलिमेंट में ओपन सोर्स लाइसेंस की गतिविधि शामिल करें. इसके बारे में यहां दिए गए कोड स्निपेट में बताया गया है:

<application android:theme="@style/AppTheme" ...>
    <activity
        android:name="com.google.android.gms.oss.licenses.v2.OssLicensesMenuActivity"
        tools:replace="android:theme"
        android:theme="@style/AppTheme" />
</application>

लाइसेंस की सूची तय करने का तरीका

कंपाइल के समय, Gradle प्लग इन आपके ऐप्लिकेशन के प्रोजेक्ट की POM डिपेंडेंसी को स्कैन करता है. जब ऐप्लिकेशन की डायरेक्ट डिपेंडेंसी के लिए Maven POM मौजूद होता है, तो प्लगिन हर <licenses> एलिमेंट को प्रोसेस करता है. साथ ही, हर लाइसेंस के लिंक और टाइटल को आपके ऐप्लिकेशन में शामिल Android ऐसेट में एम्बेड करता है.