包括开源声明

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

Google Play 服务有时包含或依赖于开源库。为了符合开源库的许可要求,您作为开发者有责任适当地展示您的应用使用的开源库的通知。

Google Play 服务包含一套工具,旨在帮助开发者更轻松地表达其应用中使用的库的开源软件声明。其中一种工具是 Gradle 插件,用于从 POM 文件中声明的包含的库收集许可条款,并创建一个可用于显示这些条款的 activity。详细了解该工具如何查找和打包许可信息

添加 Gradle 插件

在根级 build 文件中,执行以下操作:

  1. 添加 Google Maven 代码库
  2. 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")
  }
}

Groovy 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'
  }
}

在应用级 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 上查看此插件的代码

将该库添加到您的应用

在应用级 build 文件的 dependencies 部分中,添加对 oss-licenses 库的依赖项:

Kotlin DSL

build.gradle.kts

implementation("com.google.android.gms:play-services-oss-licenses:17.0.0")

Groovy DSL

build.gradle

implementation 'com.google.android.gms:play-services-oss-licenses:17.0.0'

显示许可信息

应用构建时,Gradle 插件会处理许可,并将其添加到应用的资源中。为了轻松显示许可,您可以在应用中的适当位置启动由 play-services-oss-licenses 库提供的 activity,如以下代码段所示:

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));

启动时,此 activity 会显示已编译到应用中的开源库的列表,包括属于 Google Play 服务的库,如图 1 所示。用户可以点按某个库的名称,以查看该库的更多许可信息。

每个元素都包含包含开源库名称的列表视图

图 1. “许可”菜单 activity 会显示应用使用的开源库的可选列表。

设置活动标题

默认情况下,显示的活动的标题为“开源许可”。您可以通过调用 setActivityTitle() 来自定义 activity 的标题,如以下代码段所示:

Kotlin

OssLicensesMenuActivity.setActivityTitle(getString(R.string.custom_license_title))

Java

OssLicensesMenuActivity.setActivityTitle(getString(R.string.custom_license_title));

将主题应用于 Activity

您可以为 activity 应用主题,以匹配应用的其他 activity 中使用的主题。为此,请在应用的清单文件内的 <activity> 元素中添加开源许可 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 资产中。