Google Play 服务有时包含或依赖开源库。 为遵守开源库的许可要求,您作为 开发者应负责在 源代码库
Google Play 服务包括一套旨在为开发者提供 用于以更简便的方式表达 应用。其中一种工具是用来收集许可条款的 Gradle 插件 (如其 POM 文件中所声明的那样),并创建一个 活动 可以用来显示这些字词。详细了解该工具如何查找 和软件包许可信息。
添加 Gradle 插件
在根级 build 文件中,执行以下操作:
- 添加 Google Maven 代码库。
- 将
oss-licenses
插件添加到您的依赖项中。
以下代码段展示了这些步骤:
Kotlin DSL
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
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
plugins { id("com.android.application") id("com.google.android.gms.oss-licenses-plugin") }
时尚 DSL
plugins { id 'com.android.application' id 'com.google.android.gms.oss-licenses-plugin' }
您可以查看 代码 GitHub 上的插件。
将库添加到您的应用
在应用级 build 文件的 dependencies
部分中,添加 oss-licenses
库的依赖项:
Kotlin DSL
implementation("com.google.android.gms:play-services-oss-licenses:17.1.0")
时尚 DSL
implementation 'com.google.android.gms:play-services-oss-licenses:17.1.0'
显示许可信息
在构建应用时,Gradle 插件会处理许可并将其添加到
应用的资源为了轻松显示许可,您可以启动一个 activity
由 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));
启动后,此 activity 会显示一个开源库列表,这些 已编译到您的应用中,包括作为 Google Play 一部分的库 如图 1 所示。用户点按图书馆名称即可查看 该库的其他许可信息。
图 1. 许可菜单活动显示了一个包含已打开内容的可选列表 源代码库
设置活动标题
默认情况下,显示的 activity 的标题为“开源许可”。您可以
通过调用
setActivityTitle()
、
如以下代码段所示:
Kotlin
OssLicensesMenuActivity.setActivityTitle(getString(R.string.custom_license_title))
Java
OssLicensesMenuActivity.setActivityTitle(getString(R.string.custom_license_title));
将主题应用于 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>
并将每个许可的链接和标题嵌入到
。