Google Play 開発者サービス SDK には、オープンソース ライブラリが含まれているか、オープンソース ライブラリに依存している場合があります。オープンソース ライブラリのライセンス要件を遵守するため、デベロッパーは、アプリで使用するオープンソース ライブラリの通知を適切に表示する責任があります。
Google Play 開発者サービスには、アプリで使用されるライブラリのオープンソース ソフトウェア(OSS)の通知をデベロッパーが簡単に表示できるように設計された一連のツールが含まれています。oss-licenses-plugin と Google Play 開発者サービス
oss-licenses SDK は、含まれているライブラリのライセンス条項を
POM ファイルで宣言されているとおりに収集し、これらの条項を表示するために使用できる
アクティビティ
を作成します。ツールのライセンス情報の検索とパッケージ化の方法について詳しくは、
こちらをご覧ください。
Gradle プラグインを追加する
プロジェクト設定の pluginManagement で、次の操作を行います。
次のコード スニペットは、この手順を示したものです。
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") } } } }
アプリレベルのビルドファイルで、ファイルの先頭にある 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.1")
Groovy DSL
build.gradle
implementation 'com.google.android.gms:play-services-oss-licenses:17.5.1'
ライセンス情報を表示する
アプリをビルドすると、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));
アクティビティにテーマを適用する
アプリがマテリアル 3 テーマを使用するか、XML ベースのテーマを使用するかによって、OssLicensesMenuActivity にテーマを適用する方法は異なります。
マテリアル 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 アセットに埋め込みます。