SDK сервисов Google Play иногда включают библиотеки с открытым исходным кодом или зависят от них. Чтобы соблюдать требования лицензий на библиотеки ПО с открытым исходным кодом, вы как разработчик должны показывать уведомления для таких библиотек, используемых в вашем приложении.
В сервисах Google Play есть набор инструментов, которые позволяют разработчикам легко добавлять в приложения уведомления о ПО с открытым исходным кодом. oss-licenses-plugin и SDK oss-licenses сервисов Google Play собирают условия лицензий из включенных библиотек, как указано в их файлах POM, и создают действие, которое можно использовать для отображения этих условий. Подробнее о том, как инструмент находит и упаковывает информацию о лицензиях…
Добавьте плагин Gradle
В разделе pluginManagement настроек проекта выполните следующие действия:
- Добавьте репозиторий Google Maven.
- Устраните проблему с плагином
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.13.0") } } } }
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.13.0") } } } }
В файле сборки на уровне приложения примените плагин, добавив следующую строку под существующим объявлением плагина com.android.application в верхней части файла:
Kotlin DSL
app/build.gradle.kts
plugins { id("com.android.application") id("com.google.android.gms.oss-licenses-plugin") }
Groovy DSL
app/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.5.3")
Groovy DSL
build.gradle
implementation 'com.google.android.gms:play-services-oss-licenses:17.5.3'
Показать информацию о лицензии
При сборке приложения плагин Gradle обрабатывает лицензии и добавляет их в ресурсы приложения. Чтобы показать лицензию, вы можете запустить действие, предоставляемое библиотекой play-services-oss-licenses, в подходящий момент в приложении, как показано в следующем фрагменте кода:
Kotlin
import com.google.android.gms.oss.licenses.v2.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.v2.OssLicensesMenuActivity; ... // When the user selects an option to see the licenses: startActivity(new Intent(this, OssLicensesMenuActivity.class));
При запуске этого действия отображается список библиотек ПО с открытым исходным кодом, скомпилированных в ваше приложение, включая библиотеки, используемые приложением, как показано на рисунке 1. Чтобы посмотреть дополнительную информацию о лицензии, нажмите на название библиотеки.
Рисунок 1. В меню лицензий показан список библиотек с открытым исходным кодом, которые используются в приложении.
Укажите название действия.
По умолчанию у действия будет название "Лицензии на ПО с открытым исходным кодом". Вы можете настроить заголовок действия, вызвав метод setActivityTitle(), как показано в следующем фрагменте кода:
Kotlin
OssLicensesMenuActivity.setActivityTitle(getString(R.string.custom_license_title))
Java
OssLicensesMenuActivity.setActivityTitle(getString(R.string.custom_license_title));
Как применить тему к занятию
Применить тему к OssLicensesMenuActivity можно разными способами в зависимости от того, использует ли ваше приложение Material 3 или темы на основе XML.
Приложения, в которых используется Material 3
Для приложений, использующих Material 3, вы можете вызвать метод setTheme(), чтобы применить к действию пользовательскую тему, как показано в следующем фрагменте кода:
Kotlin
import com.google.android.gms.oss.licenses.v2.OssLicensesMenuActivity ... OssLicensesMenuActivity.setTheme(lightColorScheme, darkColorScheme, typography) startActivity(Intent(this, OssLicensesMenuActivity::class.java))
Java
import com.google.android.gms.oss.licenses.v2.OssLicensesMenuActivity; ... OssLicensesMenuActivity.setTheme(lightColorScheme, darkColorScheme, typography); startActivity(new Intent(this, OssLicensesMenuActivity.class));
Приложения, в которых используются темы XML
Для приложений, использующих темы XML, вы можете применить тему к действию в манифесте, чтобы она соответствовала теме, используемой в других действиях вашего приложения. Для этого добавьте действие лицензии на ПО с открытым исходным кодом в элемент <activity> в файле манифеста приложения, как показано в следующем фрагменте кода:
<application android:theme="@style/AppTheme" ...> <activity android:name="com.google.android.gms.oss.licenses.v2.OssLicensesMenuActivity" tools:replace="android:theme" android:theme="@style/AppTheme" /> </application>
Как определяется список лицензий
Во время компиляции плагин Gradle сканирует зависимости POM проекта вашего приложения. Если для прямой зависимости приложения существует файл POM Maven, плагин обрабатывает каждый элемент <licenses> и встраивает ссылку и название каждой лицензии в объект Android, который входит в состав приложения.