Google Play-Dienste-SDKs enthalten manchmal Open-Source-Bibliotheken oder sind von diesen abhängig. Als Entwickler sind Sie dafür verantwortlich, die Lizenzanforderungen von Open-Source-Bibliotheken einzuhalten und die Hinweise für die von Ihrer App verwendeten Open-Source-Bibliotheken entsprechend anzuzeigen.
Die Google Play-Dienste enthalten eine Reihe von Tools, mit denen Entwickler die Open-Source-Software-Hinweise (OSS) der in ihren Apps verwendeten Bibliotheken einfacher angeben können. Das oss-licenses-plugin und das Google Play-Dienste-SDK für OSS-Lizenzen erfassen Lizenzbedingungen aus den enthaltenen Bibliotheken, wie in ihren POM-Dateien deklariert, und erstellen eine Aktivität, mit der diese Bedingungen angezeigt werden können. Weitere Informationen dazu, wie das Tool Lizenzinformationen findet und verpackt
Gradle-Plug-in hinzufügen
Gehen Sie in den Projekteinstellungen unter pluginManagement so vor:
- Fügen Sie das Google Maven-Repository hinzu.
- Lösen Sie das
oss-licenses-Plug-in in derPluginManagementauf.
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.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") } } } }
Wenden Sie das Plug-in in der Build-Datei auf Anwendungsebene an, indem Sie die folgende Zeile unter der vorhandenen Deklaration des com.android.application-Plug-ins oben in der Datei einfü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ügen Sie im Abschnitt dependencies der Build-Datei auf Anwendungsebene 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.3")
Groovy DSL
build.gradle
implementation 'com.google.android.gms:play-services-oss-licenses:17.5.3'
Lizenzinformationen anzeigen
Wenn Ihre App erstellt wird, verarbeitet das Gradle-Plug-in die Lizenzen und fügt sie den Ressourcen Ihrer App hinzu. Wenn Sie die Lizenz einfach anzeigen möchten, 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, wie in Abbildung 1 dargestellt. Nutzer können auf den Namen einer Bibliothek tippen, um weitere Lizenzinformationen für diese Bibliothek aufzurufen.
Abbildung 1. Die Aktivität „Lizenzmenü“ zeigt eine auswählbare Liste der von einer App verwendeten Open-Source-Bibliotheken an.
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 Design auf die OssLicensesMenuActivity anzuwenden, je nachdem, ob Ihre App Material 3 oder XML-basierte Designs 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-Designs verwenden, können Sie im Manifest ein Design auf die Aktivität anwenden, das dem Design der anderen Aktivitäten Ihrer App entspricht. Fügen Sie dazu die Aktivität für die Open-Source-Lizenz 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
Beim Kompilieren scannt das Gradle-Plug-in die POM-Abhängigkeiten des Projekts Ihrer App. Wenn für eine direkte Abhängigkeit der App eine 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.