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