לפעמים ערכות ה-SDK של Google Play Services כוללות ספריות קוד פתוח או תלויות בהן. כדי לעמוד בדרישות הרישיון של ספריות הקוד הפתוח, אתם, המפתחים, אחראים להציג בצורה מתאימה את ההודעות לגבי ספריות הקוד הפתוח שבהן האפליקציה שלכם משתמשת.
Google Play Services כולל קבוצה של כלים שנועדו לספק למפתחים דרך קלה יותר להציג את ההודעות על תוכנות קוד פתוח (OSS) של הספריות שבהן הם משתמשים באפליקציות שלהם. ה-SDK של oss-licenses-plugin
ו-Google Play Services עם רישיונות קוד פתוח אוספים את תנאי הרישיון מהספריות הכלולות, כפי שהוצהר בקובצי ה-POM שלהן, ויוצרים פעילות שאפשר להשתמש בה כדי להציג את התנאים האלה. איך הכלי מוצא ומארז את פרטי הרישיון
הוספת הפלאגין של Gradle
ב-pluginManagement
של הגדרות הפרויקט, מבצעים את הפעולות הבאות:
- כוללים את מאגר Maven של Google.
- פותרים את הפלאגין
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.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));
כשמפעילים את הפעילות, מוצגת רשימה של ספריות קוד פתוח שמקובצות באפליקציה, כולל ספריות שבהן האפליקציה משתמשת, כפי שמוצג באיור 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 שכלול באפליקציה.