Dołącz powiadomienia open source

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

pluginManagement ustawień projektu wykonaj te czynności:

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

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.

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

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.