Google Play 服務有時會包含或依賴開放原始碼程式庫。 為了遵守開放原始碼程式庫的授權規定,開發人員必須負責正確顯示應用程式所用開放原始碼程式庫的通知。
Google Play 服務提供一套工具,可讓開發人員輕鬆表達應用程式所用程式庫的開放原始碼軟體通知。這些工具之一是 Gradle 外掛程式,可從 POM 檔案中宣告的內含程式庫收集授權條款,並建立可用於顯示這些字詞的活動。進一步瞭解這項工具如何找到及封裝授權資訊。
新增 Gradle 外掛程式
在根目錄層級建構檔案中,執行下列步驟:
- 納入 Google Maven 存放區。
- 將
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' } }
請在應用程式層級的建構檔案中,透過檔案頂端 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
區段中,為 oss-licenses
程式庫新增依附元件:
Kotlin DSL
build.gradle.kts
implementation("com.google.android.gms:play-services-oss-licenses:17.0.0")
迷人 DSL
build.gradle
implementation 'com.google.android.gms:play-services-oss-licenses:17.0.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 服務的程式庫,如圖 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 資產中。