オープンソースの通知を含める

Google Play 開発者サービス SDK には、オープンソース ライブラリが含まれているか、オープンソース ライブラリに依存している場合があります。オープンソース ライブラリのライセンス要件を遵守するため、デベロッパーは、アプリで使用するオープンソース ライブラリの通知を適切に表示する責任があります。

Google Play 開発者サービスには、アプリで使用されるライブラリのオープンソース ソフトウェア(OSS)の通知をデベロッパーが簡単に表示できるように設計された一連のツールが含まれています。oss-licenses-plugin と Google Play 開発者サービス oss-licenses SDK は、含まれているライブラリのライセンス条項を POM ファイルで宣言されているとおりに収集し、これらの条項を表示するために使用できる アクティビティ を作成します。ツールのライセンス情報の検索とパッケージ化の方法について詳しくは、 こちらをご覧ください

Gradle プラグインを追加する

プロジェクト設定の pluginManagement で、次の操作を行います。

  1. Google Maven リポジトリを含めます
  2. PluginManagementoss-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.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 アセットに埋め込みます。