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

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

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

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

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

  1. לכלול את המאגר של Google Maven.
  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")
  }
}

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")
}

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")

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