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

ערכות 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.2")

Groovy DSL

build.gradle

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

הצגת פרטי הרישיון

כשמבצעים build לאפליקציה, הפלאגין 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, בהתאם לשאלה אם האפליקציה משתמשת ב-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))

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 שכלול באפליקציה.