Google Play 開発者サービスには、オープンソース ライブラリが含まれている場合があります。また、このライブラリに依存している場合もあります。オープンソース ライブラリのライセンス要件を遵守するには、アプリが使用するオープンソース ライブラリの通知を適切に表示する必要があります。
Google Play 開発者サービスには、アプリで使用されているライブラリのオープンソース ソフトウェアに関する通知をデベロッパーがより簡単に表現できるように設計された一連のツールが含まれています。そうしたツールの一つが、含まれているライブラリから POM ファイルで宣言されているライセンス規約を収集し、それらの規約を表示するために使用できるアクティビティを作成する Gradle プラグインです。詳しくは、ライセンス情報の検出とパッケージ化の方法をご覧ください。
Gradle プラグインを追加する
ルートレベルのビルドファイルで、次の操作を行います。
- Google Maven リポジトリをインクルードします。
oss-licenses
プラグインを依存関係に追加します。
次のコード スニペットは、この手順を示したものです。
Kotlin DSL
build.gradle.kts
buildscript { repositories { ... google() // maven { url("https://maven.google.com") } for Gradle <= 3 } dependencies { ... classpath("com.google.android.gms:oss-licenses-plugin:0.10.6") } }
グロービー DSL
build.gradle
buildscript { repositories { ... google() // maven { url "https://maven.google.com" } for Gradle <= 3 } dependencies { ... classpath '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") }
グロービー DSL
app/build.gradle
plugins { id 'com.android.application' id 'com.google.android.gms.oss-licenses-plugin' }
このプラグインのコードは、GitHub で表示できます。
アプリにライブラリを追加する
アプリレベルのビルドファイルの dependencies
セクションで、oss-licenses
ライブラリへの依存関係を追加します。
Kotlin DSL
build.gradle.kts
implementation("com.google.android.gms:play-services-oss-licenses:17.0.1")
グロービー DSL
build.gradle
implementation 'com.google.android.gms:play-services-oss-licenses:17.0.1'
ライセンス情報を表示する
アプリのビルド時に、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 に示すように、アプリにコンパイルされたオープンソース ライブラリのリスト(Google Play 開発者サービスの一部であるライブラリを含む)が表示されます。ユーザーは、ライブラリの名前をタップすると、そのライブラリの追加ライセンス情報を確認できます。
図 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 アセットに各ライセンスのリンクとタイトルを埋め込みます。