Google Play 服務 SDK 有時會包含或依附開放原始碼程式庫。為遵守開放原始碼程式庫的授權規定,開發人員有責任適當顯示應用程式所用開放原始碼程式庫的通知。
Google Play 服務提供一系列工具,方便開發人員在應用程式中,顯示所用程式庫的開放原始碼軟體 (OSS) 通知。oss-licenses-plugin
和 Google Play 服務 oss-licenses SDK 會從內含的程式庫收集授權條款 (如 POM 檔案中所聲明),並建立可用來顯示這些條款的活動。進一步瞭解工具如何尋找及封裝授權資訊。
新增 Gradle 外掛程式
在專案設定的 pluginManagement
中,執行下列操作:
- 加入 Google Maven 存放區。
- 在
PluginManagement
中解決oss-licenses
外掛程式。
以下程式碼片段顯示這些步驟:
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") } } } }
在應用程式層級的建構檔中,於檔案頂端的 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
區段中,新增 play-services-oss-licenses
程式庫的依附元件:
Kotlin DSL
build.gradle.kts
implementation("com.google.android.gms:play-services-oss-licenses:17.3.0")
Groovy DSL
build.gradle
implementation 'com.google.android.gms:play-services-oss-licenses:17.3.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 資產,與應用程式一併納入。