包含開放原始碼聲明

Google Play 服務 SDK 有時會包含或依附開放原始碼程式庫。為了遵守開放原始碼程式庫的授權規定,您必須負責適當顯示應用程式使用的開放原始碼程式庫通知。

Google Play 服務包含一組工具,可讓開發人員更輕鬆地在應用程式中使用程式庫的開放原始碼軟體 (OSS) 通知。oss-licenses-plugin 和 Google Play 服務 oss-licenses SDK 會從所包含的程式庫收集授權條款,如其 POM 檔案所聲明,並建立可用於顯示這些條款的活動。進一步瞭解工具如何尋找及封裝授權資訊

新增 Gradle 外掛程式

在專案設定的 pluginManagement 中,執行下列操作:

  1. 加入 Google Maven 存放區
  2. 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.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. 「Licenses」選單活動會顯示可選取的清單,列出應用程式使用的開放原始碼程式庫。

設定活動標題

根據預設,顯示的活動標題為「開放原始碼授權」。您可以呼叫 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 資產中。