Dołącz powiadomienia open source

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:

  1. Uwzględnij repozytorium Maven Google.
  2. Rozwiąż problem z wtyczką oss-licenses w PluginManagement.

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.

Widok listy, w którym każdy element zawiera nazwę biblioteki open source

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.