每个开发人员都有责任适当地显示须知,以符合开源库的许可要求。 Google Play服务有时包括或依赖开源库。
从11.2.0版开始,Google Play服务包含一组工具,旨在为开发人员提供一种更轻松的方式来表达其应用程序中使用的库的开源软件声明。 它包括一个Gradle插件,该插件从其POM文件中声明的所包含库中收集许可条款,以及一个可用于显示这些条款的Activity。
在根级别的build.gradle中,确保您正在使用Google Maven存储库,并将oss-licenses插件添加到依赖项中:
buildscript {
repositories {
// ...
google() // maven { url "https://maven.google.com" } for Gradle <= 3
}
dependencies {
// ...
// Add this line:
classpath 'com.google.android.gms:oss-licenses-plugin:0.10.1'
}
在您的应用app/build.gradle中,在这个文件的顶部添加下面代码来使用插件:
apply plugin: 'com.google.android.gms.oss-licenses-plugin'
插件的代码可以在github上查看。
在app/build.gradle的dependencies部分,添加oss-licenses库的依赖:
implementation 'com.google.android.gms:play-services-oss-licenses:17.0.0'
在构建应用程序时,Gradle插件将处理许可证并将其添加到应用程序资源中。 为了轻松显示它们,您可以在应用程序的适当位置触发play-services-oss-licenses库提供的Activity:
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服务。 轻触库名称将显示该库的其他许可证信息。
您还可以设置显示的Activity的标题:
OssLicensesMenuActivity.setActivityTitle(getString(R.string.custom_license_title));
Gradle插件在编译时扫描项目的POM依赖项。 当存在与应用程序直接相关的Maven POM时,插件将处理<licenses>元素,并将每个许可证的链接和标题嵌入最终应用程序APK中的Android资产中。
Note: The list of licenses also includes the full license text of any library that is depended upon by the transitive closure of Google Play services libraries used by the app, i.e. any open source libraries used to create the Google Play services libraries compiled into the app.