Включить уведомления об открытом исходном коде

Пакеты SDK сервисов Google Play иногда включают в себя библиотеки с открытым исходным кодом или зависят от них. Чтобы соответствовать лицензионным требованиям библиотек с открытым исходным кодом, вы, как разработчик, несете ответственность за надлежащее отображение уведомлений об библиотеках с открытым исходным кодом, которые использует ваше приложение.

Сервисы Google Play включают набор инструментов, призванных упростить разработчикам отображение уведомлений о программном обеспечении с открытым исходным кодом (OSS) для библиотек, используемых в их приложениях. Модуль oss-licenses-plugin и SDK сервисов Google Play oss-licenses собирают условия лицензии из включённых библиотек, как указано в их POM-файлах, и создают действие , которое можно использовать для отображения этих условий. Узнайте больше о том , как инструмент находит и упаковывает информацию о лицензии .

Добавьте плагин Gradle

В настройках вашего проекта в разделе pluginManagement выполните следующие действия:

  1. Включить репозиторий Google Maven .
  2. Разрешите плагин oss-licenses в PluginManagement .

В следующем фрагменте кода показаны эти шаги:

Kotlin DSL

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

Groovy DSL

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

В файле сборки на уровне приложения примените плагин, добавив следующую строку под существующим объявлением плагина com.android.application в верхней части файла:

Kotlin DSL

app/build.gradle.kts

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

Groovy DSL

приложение/build.gradle

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

Вы можете просмотреть код этого плагина на GitHub.

Добавьте библиотеку play-services-oss-licenses в свое приложение

В разделе dependencies файла сборки уровня приложения добавьте зависимость от библиотеки play-services-oss-licenses :

Kotlin DSL

build.gradle.kts

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

Groovy DSL

build.gradle

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

Отображение информации о лицензии

При сборке вашего приложения плагин Gradle обрабатывает лицензии и добавляет их в ресурсы приложения. Чтобы легко отобразить лицензию, вы можете запустить действие, предоставляемое библиотекой play-services-oss-licenses в подходящем месте приложения, как показано в следующем фрагменте кода:

Котлин

import com.google.android.gms.oss.licenses.OssLicensesMenuActivity
...

// When the user selects an option to see the licenses:
startActivity(Intent(this, OssLicensesMenuActivity::class.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));

При запуске активности отображается список библиотек с открытым исходным кодом, скомпилированных в ваше приложение, включая библиотеки, используемые приложением, как показано на рисунке 1. Пользователи могут нажать на название библиотеки, чтобы просмотреть дополнительную информацию о лицензии для этой библиотеки.

Вид списка, в котором каждый элемент содержит имя библиотеки с открытым исходным кодом

Рисунок 1. Действие меню лицензий показывает доступный для выбора список библиотек с открытым исходным кодом, которые использует приложение.

Установите название мероприятия

По умолчанию отображаемое действие имеет заголовок «Лицензии с открытым исходным кодом». Вы можете изменить заголовок действия, вызвав метод setActivityTitle() , как показано в следующем фрагменте кода:

Котлин

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

Ява

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

Применить тему к занятию

Вы можете применить тему к активности, чтобы она соответствовала теме, используемой в других активностях вашего приложения. Для этого включите активность с лицензией на открытый исходный код в элемент <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-зависимости проекта вашего приложения. Если для прямой зависимости приложения существует POM Maven, плагин обрабатывает каждый элемент <licenses> и встраивает ссылку и название каждой лицензии в ресурс Android, включённый в ваше приложение.