ערכות SDK של Google Play Services כוללות לפעמים ספריות קוד פתוח או שהן תלויות בהן. כדי לעמוד בדרישות הרישיון של ספריות קוד פתוח, אתם כמפתחים אחראים להצגת ההודעות בצורה מתאימה לגבי ספריות הקוד הפתוח שבהן נעשה שימוש באפליקציה שלכם.
Google Play Services כולל קבוצה של כלים שנועדו לספק למפתחים דרך קלה יותר להציג את ההודעות על תוכנות קוד פתוח (OSS) בספריות שבהן נעשה שימוש באפליקציות שלהם. oss-licenses-plugin
ו-Google Play services
oss-licenses SDK אוספים תנאי רישיון מספריות כלולות, כפי שמוצהר בקובצי ה-POM שלהן, ויוצרים פעילות שאפשר להשתמש בה כדי להציג את התנאים האלה. מידע נוסף על האופן שבו הכלי מוצא ומאגד מידע על רישיונות
הוספת הפלאגין Gradle
בקטע pluginManagement
של הגדרות הפרויקט, מבצעים את הפעולות הבאות:
- כוללים את מאגר Google Maven.
- פותרים את הבעיה בפלאגין
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.10.6") } } } }
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.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.
הוספת ספריית 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.2.1")
Groovy DSL
build.gradle
implementation 'com.google.android.gms:play-services-oss-licenses:17.2.1'
הצגת פרטי הרישיון
כשמבצעים build לאפליקציה, הפלאגין 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));
כשמפעילים את הפעילות, מוצגת רשימה של ספריות קוד פתוח שעברו קומפילציה באפליקציה, כולל ספריות שהאפליקציה משתמשת בהן, כמו שמוצג באיור 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 שנכלל באפליקציה.