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.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") } } } }
アプリレベルのビルドファイルで、ファイルの先頭にある 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.2.2")
Groovy DSL
build.gradle
implementation 'com.google.android.gms:play-services-oss-licenses:17.2.2'
ライセンス情報を表示する
アプリをビルドすると、Gradle プラグインがライセンスを処理し、アプリのリソースに追加します。ライセンスを簡単に表示するには、次のコード スニペットに示すように、アプリの適切なタイミングで play-services-oss-licenses
ライブラリが提供するアクティビティを起動します。
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));
アクティビティが起動すると、図 1 に示すように、アプリで使用されるライブラリを含め、アプリにコンパイルされたオープンソース ライブラリのリストが表示されます。ライブラリの名前をタップすると、そのライブラリのライセンスに関する追加情報が表示されます。
図 1. ライセンス メニュー アクティビティには、アプリが使用するオープンソース ライブラリの選択可能なリストが表示されます。
アクティビティのタイトルを設定する
デフォルトでは、表示されるアクティビティのタイトルは「オープンソース ライセンス」です。次のコード スニペットに示すように、setActivityTitle()
を呼び出すことで、アクティビティのタイトルをカスタマイズできます。
Kotlin
OssLicensesMenuActivity.setActivityTitle(getString(R.string.custom_license_title))
Java
OssLicensesMenuActivity.setActivityTitle(getString(R.string.custom_license_title));
アクティビティにテーマを適用する
アクティビティにテーマを適用して、アプリの他のアクティビティで使用されているテーマと一致させることができます。そのためには、次のコード スニペットに示すように、アプリのマニフェスト ファイル内の <activity>
要素にオープンソース ライセンス アクティビティを含めます。
<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>
ライセンスのリストが決定される仕組み
コンパイル時に、Gradle プラグインはアプリのプロジェクトの POM 依存関係をスキャンします。アプリの直接依存関係に Maven POM が存在する場合、プラグインは各 <licenses>
要素を処理し、各ライセンスのリンクとタイトルをアプリに含まれる Android アセットに埋め込みます。