Incluir avisos de código abierto

En ocasiones, los SDKs de los Servicios de Google Play incluyen bibliotecas de código abierto o dependen de ellas. Para cumplir con los requisitos de licencia de las bibliotecas de código abierto, tú, como desarrollador, eres responsable de mostrar de forma adecuada los avisos de las bibliotecas de código abierto que usa tu app.

Los Servicios de Google Play incluyen un conjunto de herramientas diseñadas para brindar a los desarrolladores una forma más sencilla de expresar los avisos de software de código abierto (OSS) de las bibliotecas que se usan en sus apps. El SDK de oss-licenses-plugin y el de licencias de código abierto de los Servicios de Google Play recopilan las condiciones de licencia de las bibliotecas incluidas, según se declaran en sus archivos POM, y crean una actividad que se puede usar para mostrar estas condiciones. Obtén más información sobre cómo la herramienta encuentra y empaqueta la información de licencias.

Agrega el complemento de Gradle

En el pluginManagement de la configuración de tu proyecto, haz lo siguiente:

  1. Incluye el repositorio de Maven de Google.
  2. Resuelve el complemento oss-licenses en PluginManagement.

En el siguiente fragmento de código, se muestran estos pasos:

DSL de Kotlin

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")
      }
    }
  }
}

DSL de Groovy

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")
      }
    }
  }
}

En el archivo de compilación a nivel de la app, aplica el complemento agregando la siguiente línea debajo de la declaración existente del complemento com.android.application en la parte superior del archivo:

DSL de Kotlin

app/build.gradle.kts

plugins {
    id("com.android.application")
    id("com.google.android.gms.oss-licenses-plugin")
}

DSL de Groovy

app/build.gradle

plugins {
    id 'com.android.application'
    id 'com.google.android.gms.oss-licenses-plugin'
}

Puedes ver el código de este complemento en GitHub.

Agrega la biblioteca play-services-oss-licenses a tu app

En la sección dependencies del archivo de compilación a nivel de la app, agrega una dependencia a la biblioteca play-services-oss-licenses:

DSL de Kotlin

build.gradle.kts

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

DSL de Groovy

build.gradle

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

Mostrar información de la licencia

Cuando se compila tu app, el complemento de Gradle procesa las licencias y las agrega a los recursos de la app. Para mostrar la licencia con facilidad, puedes iniciar una actividad que proporciona la biblioteca de play-services-oss-licenses en un punto adecuado de tu app, como se muestra en el siguiente fragmento de código:

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

Cuando se inicia la actividad, se muestra una lista de las bibliotecas de código abierto que se compilan en tu app, incluidas las bibliotecas que usa la app, como se muestra en la figura 1. Los usuarios pueden presionar el nombre de una biblioteca para ver información adicional sobre la licencia de esa biblioteca.

Vista de lista con cada elemento que contiene el nombre de una biblioteca de código abierto

Figura 1: La actividad del menú de licencias muestra una lista seleccionable de bibliotecas de código abierto que usa una app.

Cómo establecer el título de la actividad

De forma predeterminada, la actividad que se muestra tiene el título "Licencias de código abierto". Puedes personalizar el título de la actividad llamando a setActivityTitle(), como se muestra en el siguiente fragmento de código:

Kotlin

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

Java

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

Cómo aplicar un tema a la actividad

Puedes aplicar un tema a la actividad para que coincida con el tema que se usa en las otras actividades de tu app. Para ello, incluye la actividad de la licencia de código abierto en un elemento <activity> dentro del archivo de manifiesto de tu app, como se muestra en el siguiente fragmento de código:

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

Cómo se determina la lista de licencias

En el tiempo de compilación, el complemento de Gradle analiza las dependencias del POM del proyecto de tu app. Cuando existe un POM de Maven para una dependencia directa de la app, el complemento procesa cada elemento <licenses> y, luego, incorpora el vínculo y el título de cada licencia en un recurso de Android que se incluye con tu app.