Pakiety SDK usług Google Play czasami zawierają biblioteki open source lub są od nich zależne. Aby spełnić wymagania licencyjne bibliotek open source, deweloper musi odpowiednio wyświetlać informacje o bibliotekach open source, których używa aplikacja.
Usługi Google Play obejmują zestaw narzędzi, które ułatwiają deweloperom wyświetlanie informacji o oprogramowaniu open source (OSS) w bibliotekach używanych w ich aplikacjach. oss-licenses-plugin i pakiet SDK usług Google Play oss-licenses zbierają warunki licencji z dołączonych bibliotek, zgodnie z deklaracją w plikach POM, i tworzą aktywność, która może służyć do wyświetlania tych warunków. Dowiedz się więcej o tym, jak narzędzie znajduje i pakuje informacje o licencji.
Dodawanie wtyczki Gradle
W sekcji pluginManagement w ustawieniach projektu wykonaj te czynności:
- Uwzględnij repozytorium Maven Google.
- Rozwiąż problem z wtyczką
oss-licenseswPluginManagement.
Poniższy fragment kodu pokazuje te kroki:
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") } } } }
W pliku kompilacji na poziomie aplikacji zastosuj wtyczkę, dodając ten wiersz pod istniejącą deklaracją wtyczki com.android.application u góry pliku:
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' }
Kod tej wtyczki możesz wyświetlić na GitHubie.
Dodawanie biblioteki play-services-oss-licenses do aplikacji
W sekcji dependencies pliku kompilacji na poziomie aplikacji dodaj zależność od biblioteki 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'
Wyświetlanie informacji o licencji
Podczas kompilowania aplikacji wtyczka Gradle przetwarza licencje i dodaje je do zasobów aplikacji. Aby łatwo wyświetlić licencję, możesz w odpowiednim momencie uruchomić w aplikacji aktywność udostępnianą przez bibliotekę play-services-oss-licenses, jak pokazano w tym fragmencie kodu:
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));
Po uruchomieniu aktywności wyświetla się lista bibliotek open source, które są skompilowane w aplikacji, w tym bibliotek używanych przez aplikację, jak pokazano na rysunku 1. Użytkownicy mogą kliknąć nazwę biblioteki, aby wyświetlić dodatkowe informacje o licencji.
Rysunek 1. Aktywność menu licencji pokazuje listę bibliotek open source, których używa aplikacja.
Ustaw tytuł aktywności
Domyślnie wyświetlana aktywność ma tytuł „Licencje open source”. Możesz dostosować tytuł aktywności, wywołując metodę setActivityTitle(), jak pokazano w tym fragmencie kodu:
Kotlin
OssLicensesMenuActivity.setActivityTitle(getString(R.string.custom_license_title))
Java
OssLicensesMenuActivity.setActivityTitle(getString(R.string.custom_license_title));
Zastosuj motyw do aktywności
Istnieją różne sposoby stosowania motywu do OssLicensesMenuActivity, w zależności od tego, czy aplikacja używa motywów Material 3 czy motywów opartych na XML.
Aplikacje korzystające z Material 3
W przypadku aplikacji, które używają Material 3, możesz wywołać metodę setTheme(), aby zastosować do aktywności motyw niestandardowy, jak pokazano w tym fragmencie kodu:
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));
Aplikacje korzystające z motywów XML
W przypadku aplikacji, które używają motywów XML, możesz zastosować motyw do aktywności w pliku manifestu, aby dopasować go do motywu używanego w innych aktywnościach aplikacji. Aby to zrobić, dodaj aktywność związaną z licencją open source w elemencie <activity> w pliku manifestu aplikacji, jak pokazano w tym fragmencie kodu:
<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>
Jak jest określana lista licencji
Podczas kompilowania wtyczka Gradle skanuje zależności POM projektu aplikacji. Jeśli dla bezpośredniej zależności aplikacji istnieje plik POM Maven, wtyczka przetwarza każdy element <licenses> i umieszcza link oraz tytuł każdej licencji w zasobie Androida dołączonym do aplikacji.