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

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

«خدمات Google Play» شامل مجموعه‌ای از ابزارها است که برای ارائه روشی آسان‌تر به توسعه‌دهندگان برای بیان اعلامیه‌های نرم‌افزار متن‌باز (OSS) کتابخانه‌های استفاده‌شده در برنامه‌هایشان طراحی شده است. «کیت توسعه نرم‌افزار» oss-licenses-plugin و «خدمات Google Play» oss-licenses شرایط پروانه را از کتابخانه‌های گنجانده‌شده جمع‌آوری می‌کنند، همان‌طور که در فایل‌های 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.2")

Groovy DSL

build.gradle

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

نمایش اطلاعات پروانه

وقتی برنامه‌تان ساخته می‌شود، افزایه 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));

اعمال زمینه برای فعالیت

بسته به اینکه برنامه شما از «طرح زمینه‌ای Material 3» یا طرح زمینه‌ای مبتنی بر XML استفاده می‌کند، روش‌های مختلفی برای اعمال طرح زمینه در OssLicensesMenuActivity وجود دارد.

برنامه‌هایی که از 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 که همراه با برنامه شما ارائه می‌شود جاسازی می‌کند.