گنجاندن اعلان‌های متن‌باز

کیت‌های توسعه نرم‌افزار خدمات Google Play گاهی شامل کتابخانه‌های متن‌باز هستند یا به آن‌ها وابسته‌اند. برای رعایت الزامات پروانه کتابخانه‌های متن‌باز، شما به‌عنوان توسعه‌دهنده مسئول هستید که اعلان‌های مربوط به کتابخانه‌های متن‌بازی را که برنامه‌تان استفاده می‌کند به‌طور مناسب نمایش دهید.

خدمات Google Play شامل مجموعه‌ای از ابزارها است که برای ارائه روشی آسان‌تر به توسعه‌دهندگان برای بیان اعلامیه‌های نرم‌افزار متن‌باز (OSS) کتابخانه‌های استفاده‌شده در برنامه‌هایشان طراحی شده است. oss-licenses-plugin و «کیت توسعه نرم‌افزار» پروانه‌های oss «خدمات Google Play» شرایط پروانه را از کتابخانه‌های گنجانده‌شده، همان‌طور که در فایل‌های POM آن‌ها اعلام شده است، جمع‌آوری می‌کنند و فعالیتی ایجاد می‌کنند که می‌تواند برای نمایش این شرایط استفاده شود. درباره نحوه پیدا کردن و بسته‌بندی اطلاعات پروانه توسط ابزار بیشتر بدانید.

افزودن افزایه Gradle

در pluginManagement تنظیمات پروژه، کارهای زیر را انجام دهید:

  1. مخزن Google Maven را اضافه کنید.
  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));

وقتی فعالیت راه‌اندازی می‌شود، فهرستی از کتابخانه‌های متن‌باز را که در برنامه‌تان کامپایل شده‌اند نمایش می‌دهد، ازجمله کتابخانه‌هایی که برنامه استفاده می‌کند، همان‌طور که در شکل ۱ نشان داده شده است. کاربران می‌توانند روی نام کتابخانه تک‌ضرب بزنند تا اطلاعات پروانه اضافی برای آن کتابخانه را مشاهده کنند.

نمای فهرستی که هر عنصر آن حاوی نام یک کتابخانه متن‌باز است

شکل ۱. فعالیت منو پروانه‌ها فهرست قابل‌انتخابی از کتابخانه‌های متن‌باز را که برنامه استفاده می‌کند نشان می‌دهد.

تنظیم عنوان فعالیت

به‌طور پیش‌فرض، فعالیت نمایش‌داده‌شده عنوان «پروانه‌های متن‌باز» را دارد. می‌توانید عنوان فعالیت را با فراخوانی 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 که در برنامه شما گنجانده شده است جاسازی می‌کند.