It is up to every developer to appropriately display the notices to comply with the license requirements of open source libraries. Google Play services sometimes includes, or depends upon, open source libraries.
As of version 11.2.0, Google Play services includes a set of tools designed to
give developers an easier way to express the open source software notices of
libraries used in their apps. It includes a Gradle plugin that collects license
terms from included libraries as declared in their POM files and an
Activity
that can be used to display these terms.
Add the Gradle plugin
In your root-level build.gradle
make sure you are using the Google Maven
repository
and add the oss-licenses
plugin to your dependencies:
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.2'
}
In your app-level build.gradle
, apply the plugin by adding the following line
under the existing apply plugin: 'com.android.application'
at the top of the
file:
apply plugin: 'com.google.android.gms.oss-licenses-plugin'
This plugin's code is available on GitHub.
Add the library to your app
In the dependencies
section of your app-level build.gradle
, add a dependency
on the oss-licenses
library:
implementation 'com.google.android.gms:play-services-oss-licenses:17.0.0'
Displaying license information
When the application builds, the Gradle plugin will process the licenses and
add them to the app resources. To easily display them you can trigger an
activity provided by the play-services-oss-licenses
library at an appropriate
point in your app:
import com.google.android.gms.oss.licenses.OssLicensesMenuActivity;
// ...
// When the user selects an option to see the licenses:
startActivity(new Intent(this, OssLicensesMenuActivity.class));
This will display a list of open source libraries that are compiled into the app, whether part of Google Play services or not. Tapping the library name will display additional license information for that library.
Setting the Activity
title
You can also set the title of the displayed activity:
OssLicensesMenuActivity.setActivityTitle(getString(R.string.custom_license_title));
How licenses are determined
The Gradle plugin scans the POM dependencies of the project at compile time.
When a Maven POM exists for a direct dependency of the app, the plugin processes
the <licenses>
element and
embeds the link and title of each license in an Android asset in the final app
APK.