Pakiety SDK Usług Google Play czasami zawierają biblioteki open source lub są od nich zależne. Aby zachować zgodność z wymaganiami licencyjnymi bibliotek open source, deweloper musi odpowiednio wyświetlać informacje o bibliotekach open source używanych przez aplikację.
Usługi Google Play zawierają zestaw narzędzi, które ułatwiają deweloperom wyrażanie informacji o oprogramowaniu open source (OSS) w bibliotekach używanych w ich aplikacjach. Pakiet SDK oss-licenses-plugin
i 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 pluginManagement
ustawień projektu wykonaj te czynności:
- Uwzględnij repozytorium Google Maven.
- Rozwiąż problem z wtyczką
oss-licenses
wPluginManagement
.
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.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") } } } }
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 tego wtyczki możesz wyświetlić w 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.2.2")
Groovy DSL
build.gradle
implementation 'com.google.android.gms:play-services-oss-licenses:17.2.2'
Wyświetlanie informacji o licencji
Podczas kompilacji aplikacji wtyczka Gradle przetwarza licencje i dodaje je do zasobów aplikacji. Aby łatwo wyświetlić licencję, możesz uruchomić aktywność udostępnianą przez bibliotekę play-services-oss-licenses
w odpowiednim momencie w aplikacji, jak pokazano w tym fragmencie kodu:
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));
Po uruchomieniu aktywności wyświetla ona listę 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. W menu licencji wyświetla się lista bibliotek open source, z których korzysta aplikacja.
Ustawianie tytułu aktywności
Domyślnie wyświetlana aktywność ma tytuł „Licencje open source”. Możesz dostosować tytuł aktywności, wywołując 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
Możesz zastosować motyw do aktywności, aby pasował do motywu używanego w innych aktywnościach aplikacji. Aby to zrobić, umieść 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.OssLicensesMenuActivity" android:theme="@style/AppTheme" /> <activity android:name="com.google.android.gms.oss.licenses.OssLicensesActivity" android:theme="@style/AppTheme" /> </application>
Sposób określania listy licencji
Podczas kompilacji 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 osadza link oraz tytuł każdej licencji w zasobie Androida, który jest dołączony do aplikacji.