כולל הודעות לגבי קוד פתוח

ערכות ה-SDK של Google Play Services כוללות לפעמים ספריות קוד פתוח, או תלויות בהן. כדי לעמוד בדרישות הרישיון של ספריות קוד פתוח, אתם כמפתחים אחראים להציג בצורה מתאימה את ההודעות לגבי ספריות הקוד הפתוח שבהן האפליקציה שלכם משתמשת.

‫Google Play Services כוללת קבוצת כלים שנועדו לספק למפתחים דרך קלה יותר להציג את ההודעות בנושא תוכנות בקוד פתוח (OSS) של ספריות שבהן נעשה שימוש באפליקציות שלהם. ‫oss-licenses-plugin ו-Google Play Services oss-licenses SDK אוספים את תנאי הרישיון מהספריות הכלולות, כפי שהוצהר בקובצי ה-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")
      }
    }
  }
}

בקובץ ה-build ברמת האפליקציה, מוסיפים את השורה הבאה מתחת להצהרה הקיימת של הפלאגין 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 של קובץ ה-build ברמת האפליקציה, מוסיפים תלות בספרייה 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. המשתמשים יכולים ללחוץ על שם הספרייה כדי לראות מידע נוסף על הרישיון של הספרייה הזו.

תצוגת רשימה שבה כל רכיב מכיל את השם של ספריית קוד פתוח

איור 1. פעילות תפריט הרישיונות מציגה רשימה של ספריות קוד פתוח שאפליקציה משתמשת בהן, וניתן לבחור מתוכן.

הגדרת שם הפעילות

כברירת מחדל, הפעילות שמוצגת נקראת "רישיונות קוד פתוח". כדי להתאים אישית את שם הפעילות, אפשר להפעיל את setActivityTitle(), כמו שמוצג בקטע הקוד הבא:

Kotlin

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

Java

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

החלת עיצוב על הפעילות

יש דרכים שונות להחיל עיצוב על OssLicensesMenuActivity, בהתאם לעיצובים של האפליקציה – עיצובים מבוססי-XML או עיצובים של 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));

אפליקציות שמשתמשות בעיצובי 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 בפרויקט של האפליקציה. כשיש קובץ POM של Maven לתלות ישירה של האפליקציה, הפלאגין מעבד כל רכיב <licenses> ומטמיע את הקישור והכותרת של כל רישיון בנכס Android שכלול באפליקציה.