Google Play 開発者サービス SDK には、オープンソース ライブラリが含まれている場合や、オープンソース ライブラリに依存している場合があります。オープンソース ライブラリのライセンス要件を遵守するため、デベロッパーは、アプリで使用するオープンソース ライブラリの通知を適切に表示する責任があります。
Google Play 開発者サービスには、アプリで使用されているライブラリのオープンソース ソフトウェア(OSS)通知をデベロッパーが簡単に表示できるように設計された一連のツールが含まれています。oss-licenses-plugin と Google Play 開発者サービス oss-licenses SDK は、含まれているライブラリからライセンス条項を収集し(POM ファイルで宣言されているとおり)、これらの条項を表示するために使用できるアクティビティを作成します。ツールがライセンス情報を見つけてパッケージ化する方法の詳細を確認する。
Gradle プラグインを追加する
プロジェクト設定の pluginManagement で、次の操作を行います。
- Google Maven リポジトリを追加します。
PluginManagementでoss-licensesプラグインを解決します。
次のコード スニペットは、これらの手順を示しています。
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") } } } }
アプリレベルのビルドファイルで、ファイルの先頭にある com.android.application プラグインの既存の宣言の下に次の行を追加して、プラグインを適用します。
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' }
このプラグインのコードは GitHub で確認できます。
アプリに play-services-oss-licenses ライブラリを追加する
アプリレベルのビルドファイルの dependencies セクションに、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'
ライセンス情報を表示する
アプリをビルドすると、Gradle プラグインがライセンスを処理し、アプリのリソースに追加します。ライセンスを簡単に表示するには、次のコード スニペットに示すように、アプリの適切なポイントで play-services-oss-licenses ライブラリによって提供されるアクティビティを起動します。
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));
アクティビティが起動すると、図 1 に示すように、アプリにコンパイルされたオープンソース ライブラリのリスト(アプリで使用されているライブラリを含む)が表示されます。ユーザーはライブラリの名前をタップして、そのライブラリの追加のライセンス情報を表示できます。
図 1. ライセンス メニュー アクティビティには、アプリで使用されているオープンソース ライブラリの選択可能なリストが表示されます。
アクティビティのタイトルを設定する
デフォルトでは、表示されるアクティビティのタイトルは「オープンソース ライセンス」です。次のコード スニペットに示すように、setActivityTitle() を呼び出すことで、アクティビティのタイトルをカスタマイズできます。
Kotlin
OssLicensesMenuActivity.setActivityTitle(getString(R.string.custom_license_title))
Java
OssLicensesMenuActivity.setActivityTitle(getString(R.string.custom_license_title));
アクティビティにテーマを適用する
OssLicensesMenuActivity にテーマを適用する方法は、アプリでマテリアル 3 を使用しているか、XML ベースのテーマを使用しているかによって異なります。
マテリアル 3 を使用するアプリ
マテリアル 3 を使用するアプリの場合、次のコード スニペットに示すように、setTheme() メソッドを呼び出して、アクティビティにカスタムテーマを適用できます。
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));
XML テーマを使用するアプリ
XML テーマを使用するアプリの場合、マニフェストのアクティビティにテーマを適用して、アプリの他のアクティビティで使用されているテーマに合わせることができます。そのためには、次のコード スニペットに示すように、アプリのマニフェスト ファイルの <activity> 要素にオープンソース ライセンス アクティビティを追加します。
<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>
ライセンスのリストが決定される仕組み
コンパイル時に、Gradle プラグインはアプリのプロジェクトの POM 依存関係をスキャンします。アプリの直接依存関係に Maven POM が存在する場合、プラグインは各 <licenses> 要素を処理し、各ライセンスのリンクとタイトルをアプリに含まれる Android アセットに埋め込みます。