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

Google Play 開発者サービスには、オープンソース ライブラリが含まれているか、オープンソース ライブラリに依存することがあります。オープンソース ライブラリのライセンス要件に準拠するには、アプリで使用するオープンソース ライブラリに関する通知を適切に表示する必要があります。

Google Play 開発者サービスには、アプリで使用されているライブラリのオープンソース ソフトウェアに関する通知をデベロッパーが簡単に表現できるツールセットが用意されています。こうしたツールの一つが Gradle プラグインです。Gradle プラグインは、POM ファイルで宣言されているように、含まれているライブラリからライセンス条項を収集し、条項の表示に使用できるアクティビティを作成します。詳しくは、このツールがライセンス情報を検出してパッケージ化する方法をご覧ください。

Gradle プラグインを追加する

ルートレベルのビルドファイルで、次の操作を行います。

  1. Google Maven リポジトリを含めます。
  2. 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.1.0")

グルーヴィー DSL

build.gradle

implementation 'com.google.android.gms:play-services-oss-licenses:17.1.0'

ライセンス情報を表示する

アプリがビルドされると、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 アセットに埋め込みます。