Open-Source-Hinweise einschließen

Google Play-Dienste SDKs enthalten manchmal Open-Source-Bibliotheken oder sind von solchen abhängig. Um die Lizenzanforderungen von Open-Source-Bibliotheken zu erfüllen, sind Sie als Entwickler dafür verantwortlich, die Hinweise für die Open-Source-Bibliotheken, die Ihre App verwendet, angemessen anzuzeigen.

Google Play-Dienste enthalten eine Reihe von Tools, mit denen Entwickler die Open-Source-Software-Hinweise (OSS) von Bibliotheken, die in ihren Apps verwendet werden, einfacher angeben können. Das oss-licenses-plugin und das Google Play-Dienste-SDK für Open-Source-Lizenzen erfassen Lizenzbedingungen aus enthaltenen Bibliotheken, wie in ihren POM-Dateien deklariert, und erstellen eine Activity, mit der diese Bedingungen angezeigt werden können. Weitere Informationen dazu, wie das Tool Lizenzinformationen findet und zusammenstellt

Gradle-Plug-in hinzufügen

Gehen Sie in den pluginManagement Ihrer Projekteinstellungen so vor:

  1. Fügen Sie das Maven-Repository von Google ein.
  2. Beheben Sie das Problem mit dem oss-licenses-Plug-in in der PluginManagement.

Das folgende Code-Snippet zeigt diese Schritte:

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.12.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.12.0")
      }
    }
  }
}

Wenden Sie das Plug-in in der Build-Datei auf App-Ebene an, indem Sie die folgende Zeile unter der vorhandenen Deklaration des com.android.application-Plug-ins oben in der Datei hinzufügen:

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'
}

Sie können sich den Code für dieses Plug-in auf GitHub ansehen.

play-services-oss-licenses-Bibliothek zur App hinzufügen

Füge im Abschnitt dependencies der Build-Datei auf App-Ebene eine Abhängigkeit von der play-services-oss-licenses-Bibliothek hinzu:

Kotlin DSL

build.gradle.kts

implementation("com.google.android.gms:play-services-oss-licenses:17.5.1")

Groovy-DSL

build.gradle

implementation 'com.google.android.gms:play-services-oss-licenses:17.5.1'

Lizenzinformationen anzeigen

Wenn Ihre App erstellt wird, verarbeitet das Gradle-Plug-in die Lizenzen und fügt sie den Ressourcen Ihrer App hinzu. Um die Lizenz einfach anzuzeigen, können Sie an einer geeigneten Stelle in Ihrer App eine Aktivität starten, die von der play-services-oss-licenses-Bibliothek bereitgestellt wird, wie im folgenden Code-Snippet gezeigt:

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));

Wenn die Aktivität gestartet wird, wird eine Liste der Open-Source-Bibliotheken angezeigt, die in Ihre App kompiliert wurden, einschließlich der von der App verwendeten Bibliotheken (siehe Abbildung 1). Nutzer können auf den Namen einer Bibliothek tippen, um zusätzliche Lizenzinformationen für diese Bibliothek aufzurufen.

Listenansicht, in der jedes Element den Namen einer Open-Source-Bibliothek enthält

Abbildung 1. Im Menü „Lizenzen“ wird eine auswählbare Liste mit Open-Source-Bibliotheken angezeigt, die von einer App verwendet werden.

Titel der Aktivität festlegen

Standardmäßig hat die angezeigte Aktivität den Titel „Open-Source-Lizenzen“. Sie können den Titel der Aktivität anpassen, indem Sie setActivityTitle() aufrufen, wie im folgenden Code-Snippet gezeigt:

Kotlin

OssLicensesMenuActivity.setActivityTitle(getString(R.string.custom_license_title))

Java

OssLicensesMenuActivity.setActivityTitle(getString(R.string.custom_license_title));

Design auf die Aktivität anwenden

Es gibt verschiedene Möglichkeiten, ein Theme auf OssLicensesMenuActivity anzuwenden, je nachdem, ob Ihre App Material 3- oder XML-basierte Themes verwendet.

Apps, die Material 3 verwenden

Bei Apps, die Material 3 verwenden, können Sie die Methode setTheme() aufrufen, um ein benutzerdefiniertes Design auf die Aktivität anzuwenden, wie im folgenden Code-Snippet gezeigt:

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));

Apps, die XML-Designs verwenden

Bei Apps, die XML-Themes verwenden, können Sie ein Theme auf die Aktivität im Manifest anwenden, damit es dem Theme entspricht, das in den anderen Aktivitäten Ihrer App verwendet wird. Fügen Sie dazu die Open-Source-Lizenzaktivität in ein <activity>-Element in der Manifestdatei Ihrer App ein, wie im folgenden Code-Snippet gezeigt:

<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>

So wird die Liste der Lizenzen ermittelt

Zur Kompilierzeit scannt das Gradle-Plug-in die POM-Abhängigkeiten des Projekts Ihrer App. Wenn für eine direkte Abhängigkeit der App ein Maven-POM vorhanden ist, verarbeitet das Plug-in jedes <licenses>-Element und bettet den Link und den Titel jeder Lizenz in ein Android-Asset ein, das in Ihrer App enthalten ist.