تضمين إشعارات البرامج المفتوحة المصدر

تتضمّن حزم تطوير البرامج (SDK) لخدمات Google Play أحيانًا مكتبات مفتوحة المصدر أو تعتمد عليها. للالتزام بمتطلبات ترخيص المكتبات المفتوحة المصدر، تقع عليك كمطوّر مسؤولية عرض الإشعارات بشكل مناسب للمكتبات المفتوحة المصدر التي يستخدمها تطبيقك.

تتضمّن "خدمات Google Play" مجموعة من الأدوات المصمّمة لتزويد المطوّرين بطريقة أسهل للتعبير عن إشعارات البرامج المفتوحة المصدر (OSS) للمكتبات المستخدَمة في تطبيقاتهم. تجمع حزمة تطوير البرامج (SDK) oss-licenses-plugin وحزمة تطوير البرامج (SDK) لتراخيص البرامج المفتوحة المصدر في "خدمات Google Play" بنود الترخيص من المكتبات المضمّنة، كما هو موضّح في ملفات POM، وتنشئ نشاطًا يمكن استخدامه لعرض هذه البنود. مزيد من المعلومات حول كيفية عثور الأداة على معلومات الترخيص وتجميعها

إضافة مكوّن Gradle الإضافي

في pluginManagement من إعدادات مشروعك، اتّبِع الخطوات التالية:

  1. أدرِج مستودع Maven من Google.
  2. حلّ مشكلة المكوّن الإضافي "oss-licenses" في "PluginManagement"

يوضّح مقتطف الرمز التالي هذه الخطوات:

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))

جافا

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. يمكن للمستخدمين النقر على اسم مكتبة لعرض معلومات الترخيص الإضافية لهذه المكتبة.

عرض على شكل قائمة يحتوي كل عنصر فيها على اسم مكتبة مفتوحة المصدر

الشكل 1: يعرض نشاط قائمة التراخيص قائمة قابلة للاختيار من مكتبات البرامج مفتوحة المصدر التي يستخدمها التطبيق.

ضبط عنوان النشاط

بشكل تلقائي، يحمل النشاط المعروض العنوان "تراخيص البرامج المفتوحة المصدر". يمكنك تخصيص عنوان النشاط من خلال استدعاء setActivityTitle()، كما هو موضّح في مقتطف الرمز التالي:

Kotlin

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

جافا

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

تطبيق مظهر على النشاط

تتوفّر طرق مختلفة لتطبيق مظهر على OssLicensesMenuActivity، وذلك حسب ما إذا كان تطبيقك يستخدم Material 3 أو مظاهر مستندة إلى XML.

التطبيقات التي تستخدم 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))

جافا

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

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

التطبيقات التي تستخدم مظاهر XML

بالنسبة إلى التطبيقات التي تستخدم مظاهر XML، يمكنك تطبيق مظهر على النشاط في ملف البيان ليتطابق مع المظهر المستخدَم في أنشطة تطبيقك الأخرى. لإجراء ذلك، أدرِج نشاط ترخيص البرامج المفتوحة المصدر في عنصر <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 المضمّنة في تطبيقك.