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

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

שירותי Google Play כוללים קבוצה של כלים שנועדו לספק למפתחים דרך קלה יותר להציג את ההודעות על תוכנות בקוד פתוח של הספריות שבהן הם משתמשים באפליקציות שלהם. אחד הכלים האלה הוא פלאגין של Gradle שמאגד את תנאי הרישיון מהספריות הכלולות, כפי שהם מפורטים בקובצי ה-POM שלהן, ויוצר פעילות שאפשר להשתמש בה כדי להציג את התנאים האלה. איך הכלי מוצא ומארז את פרטי הרישיון

הוספת הפלאגין של Gradle

בקובץ ה-build ברמת השורש, מבצעים את הפעולות הבאות:

  1. כוללים את מאגר Maven של Google.
  2. מוסיפים את הפלאגין oss-licenses ליחסי התלות.

קטע הקוד הבא מציג את השלבים האלה:

Kotlin DSL

build.gradle.kts

buildscript {
  repositories {
    ...
    google()  // maven { url("https://maven.google.com") } for Gradle <= 3
  }
  dependencies {
    ...
    classpath("com.google.android.gms:oss-licenses-plugin:0.10.6")
  }
}

Groovy DSL

build.gradle

buildscript {
  repositories {
    ...
    google()  // maven { url "https://maven.google.com" } for Gradle <= 3
  }
  dependencies {
    ...
    classpath 'com.google.android.gms:oss-licenses-plugin:0.10.6'
  }
}

בקובץ ה-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.

הוספת הספרייה לאפליקציה

בקטע dependencies בקובץ ה-build ברמת האפליקציה, מוסיפים תלות בספרייה oss-licenses:

Kotlin DSL

build.gradle.kts

implementation("com.google.android.gms:play-services-oss-licenses:17.1.0")

Groovy DSL

build.gradle

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

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

כשאתם בונים את האפליקציה, פלאגין Gradle מעבד את הרישיונות ומוסיף אותם למשאבים של האפליקציה. כדי להציג את הרישיון בקלות, אפשר להפעיל פעילות שמספקת הספרייה play-services-oss-licenses בנקודה מתאימה באפליקציה, כפי שמתואר בקטע הקוד הבא:

Kotlin

import com.google.android.gms.oss.licenses.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.OssLicensesMenuActivity;
...

// When the user selects an option to see the licenses:
startActivity(new Intent(this, OssLicensesMenuActivity.class));

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

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

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

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

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

Kotlin

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

Java

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

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

אתם יכולים להחיל על הפעילות נושא שיהיה תואם לנושאים של הפעילויות האחרות באפליקציה. לשם כך, צריך לכלול את הפעילות של רישיון הקוד הפתוח ברכיב <activity> בקובץ המניפסט של האפליקציה, כפי שמוצג בקטע הקוד הבא:

<application android:theme="@style/AppTheme" ...>
    <activity
        android:name="com.google.android.gms.oss.licenses.OssLicensesMenuActivity"
        android:theme="@style/AppTheme" />
    <activity
        android:name="com.google.android.gms.oss.licenses.OssLicensesActivity"
        android:theme="@style/AppTheme" />
</application>

איך נקבעת רשימת הרישיונות

בזמן הידור, הפלאגין של Gradle סורק את יחסי התלות של POM בפרויקט של האפליקציה. כשקיים Maven POM ליחס תלות ישיר של האפליקציה, הפלאגין מעבד כל רכיב <licenses> ומטמיע את הקישור ואת השם של כל רישיון בנכס Android שכלול באפליקציה.