アプリにライセンス確認機能を追加するには、Google Play パブリッシャー アカウント、開発環境、実装の検証に必要なテスト アカウントを事前にセットアップしておく必要があります。
パブリッシャー アカウントのセットアップ
まだ Google Play のパブリッシャー アカウントがない場合は、Google アカウントを使用して登録し、Google Play の利用規約に同意する必要があります。
詳細については、公開のスタートガイドをご覧ください。
すでに Google Play のパブリッシャー アカウントをお持ちの場合は、Play Console を使用してライセンス機能をセットアップします。
Google Play Console を使用して、以下の操作が行えます。
- アプリ固有のライセンス用公開鍵の取得
- アプリの公開前に行う、ライセンス機能実装のデバッグとテスト
- ライセンス サポートを追加したアプリの公開
ライセンスの管理設定
Play Console には、Google Play のライセンスを管理する機能があります。この機能を使用して、以下の操作が行えます。
- 複数の「テスト アカウント」(メールアドレスで識別される)のセットアップ。ライセンス サーバーを使用することで、ユーザーがデバイスやエミュレータのテスト アカウントにログインし、ライセンス チェックを送信して静的テスト応答を受信できます。Play Console の [アカウントの詳細] ページでアカウントをセットアップできます。
- サーバーから送られる静的テスト応答の設定。パブリッシャー アカウントまたはテスト アカウントにログインしたユーザーから、パブリッシャー アカウントにアップロードされたアプリのライセンス チェックを受信したときに、サーバーから送信される静的テスト応答を設定できます。Play Console の [アカウントの詳細] ページでテスト応答を設定できます。
- アプリのライセンス用公開鍵の取得。アプリにライセンス機能を実装する際には、アプリに公開鍵文字列をコピーする必要があります。アプリのライセンス用公開鍵は、[すべてのアプリ] の下の [サービスと API] ページで取得できます。
![](https://cdn.statically.io/img/developer.android.com/static/images/licensing_public_key.png?hl=ja)
図 1. アプリのライセンス用鍵は Play Console の [サービスと API] ページで取得可能
テスト アカウントと静的テスト応答の使用方について詳しくは、下記のテスト環境のセットアップをご覧ください。
開発環境のセットアップ
ライセンス機能追加のための環境のセットアップでは、次の作業を行います。
- 開発用のランタイム環境のセットアップ
- SDK への LVL のダウンロード
- License Verification Library のセットアップ
- アプリへの LVL ライブラリ プロジェクトの追加
下記のセクションでは、これらのタスクについて説明します。セットアップが完了したら、アプリへのライセンス機能の追加を開始できます。
最初に、アプリに実装するライセンス チェックとライセンス適用の機能について実行、デバッグ、テストを行うための、適切なランタイム環境をセットアップする必要があります。
ランタイム環境のセットアップ
前述のとおり、アプリでのライセンス ステータスのチェックは、ライセンス サーバーに直接問い合わせるのではなく、Google Play アプリのサービスにバインドしてライセンス チェック リクエストを行うことから始まります。その後、Google Play 開発者サービスがライセンス サーバーと直接通信し、最終的に応答をアプリに返送します。アプリのライセンス機能のデバッグとテストを行うには、それに必要な Google Play 開発者サービスを含むランタイム環境をセットアップして、アプリからライセンス サーバーにライセンス チェック リクエストを送信できるようにする必要があります。
使用できるランタイム環境には、次の 2 種類があります。
- Google Play アプリを備えた Android デバイス
- Google API アドオン、API レベル 8(リリース 2)以上を実行する Android Emulator
デバイスを使用する場合
Android デバイスでライセンス機能のデバッグとテストを行うには、デバイスは次の条件を満たす必要があります。
- Android 1.5 以降(API レベル 3 以上)のプラットフォームと互換性のあるバージョンを搭載している。
- Google Play クライアント アプリがプリインストールされたシステム イメージが実行されている。
Google Play がシステム イメージにプリインストールされていないと、アプリと Google Play ライセンス サーバーとの通信はできません。
Android アプリの開発に使用するデバイスのセットアップ方法全般については、ハードウェア デバイスの使用方法のページをご覧くださ��。
Android Emulator を使用する場合
利用できるデバイスがない場合は、Android Emulator を使用して、ライセンス機能のデバッグとテストを行えます。
Android SDK で提供される Android プラットフォームには Google Play が含まれていないため、SDK リポジトリから Google API アドオン プラットフォーム(API レベル 8 以上)をダウンロードする必要があります。Google API アドオンをダウンロードしたら、そのシステム イメージを使用する AVD 設定を作成する必要があります。
Google API アドオンには、完全な Google Play クライアントは含まれていません。ただし、次のものが提供されます。
ILicensingService
リモート インターフェースを実装する Google Play バックグラウンド サービス。これにより、アプリからライセンス チェックをネットワーク経由でライセンス サーバーに送信できるようになります。- 基本的なアカウント サービスのセット。これにより、AVD に Google アカウントを追加し、パブリッシャー アカウントまたはテスト アカウントの認証情報を使用してログインできるようになります。
パブリッシャー アカウントまたはテスト アカウントを使用してログインすると、アプリを公開せずにデバッグとテストを行えます。詳細については、下記の承認済みアカウントへのログインをご覧ください。
SDK Manager から入手できる Google API アドオンのバージョンにはいくつかありますが、必要な Google Play 開発者サービスが含まれているのは Android 2.2 以上用のバージョンのみです。
アプリにライセンス機能を追加するためのエミュレータのセットアップ手順は次のとおりです。
- Android Studio の [Tools] メニュー([Tools] > [Android] > [SDK Manager])から、または
<sdk>/tools/android sdk
を実行して、Android SDK Manager を起動します。 - ターゲットにする Android バージョン(Android 2.2 以上にする必要あり)の Google API を選択してダウンロードします。
- ダウンロードが完了したら、Android Studio の [Tools] メニュー([Tools] > [Android] > [AVD Manager])から、または
<sdk>/tools/android avd
を実行して、AVD Manager を開きます。 - [Android Virtual Device Manager] ウィンドウで [+ Create Virtual Device] を選択して、新しい AVD の詳細設定を指定します。
- [Virtual Device Configuration] ウィンドウでデバイスのハードウェアを選択し、[Next] を選択します。
- 新しい AVD で実行するシステム イメージとして [Google API] を選択し、[Next] を選択します。
- AVD にわかりやすい名前を付け、必要に応じてその他の詳細設定を指定します。
- [Finish] を選択すると、新しい AVD 設定が作成され、利用可能な Android Virtual Device のリストに表示されます。
AVD やその使い方について詳しくは、仮想デバイスの管理をご覧ください。
プロジェクト設定の更新
上記の要件を満たすランタイム環境を(実際のデバイスまたはエミュレータで)セットアップしたら、ライセンス機能を使用するコンパイル済みの .apk
ファイルがその環境に確実にデプロイされるよう、必要に応じてアプリ プロジェクトまたはビルド スクリプトを更新します。特に、Android Studio で開発している場合は、適切なデバイスまたは AVD をターゲットとする実行 / デバッグ構成をセットアップしてください。
すでにプロジェクトが標準の Android 1.5(API レベル 3)以上のライブラリでコンパイルされるように設定されている場合は、アプリのビルド構成を変更する必要はありません。アプリにライセンス機能を追加しても、アプリのビルド構成に影響はありません。
LVL のダウンロード
License Verification Library(LVL)は、アプリにライセンス機能を追加するために必要な作業を大幅に簡素化するヘルパークラスのコレクションです。どのような場合でも、LVL をダウンロードして、アプリへのライセンス機能実装の基盤として使用することをおすすめします。
License Verification Library(LVL)は GitHub で開発されています。LVL リ��ジトリのクローンを作成して、ライブラリ プロジェクトとして設定��き���す。リポジトリをクローンを作成するには、コマンドラインで次のように入力します。
git clone https://github.com/google/play-licensing
このリポジトリには次のものが含まれます。
- LVL のソース。Android ライブラリ プロジェクト内に保存されます。
- LVL ライブラリ プロジェクトに依存する「sample」というサンプルアプリ。このサンプルは、アプリでライブラリ ヘルパークラスを使用してライセンスを確認、適用する方法を示しています。
License Verification Library のセットアップ
LVL をパソコンにダウンロードしたら、Android ライブラリ プロジェクトとして、またはライブラリ ソースを既存のアプリ パッケージに直接コピー(またはインポート)して、開発環境にセットアップする必要があります。通常は、LVL をライブラリ プロジェクトとして使用することをおすすめします。これにより、ライセンス コードを複数のアプリで再利用でき、長期間にわたって保守が簡単になるためです。LVL は、個別にコンパイルしたり、静的 .jar ファイルとしてアプリに追加したりするようには設計されていません。
LVL は、新しい Android ライブラリ プロジェクトとしてセットアップすることをおすすめします。ライブラリ プロジェクトとは、開発プロジェクトの一種で、共有の Android ソースコードとリソースを保持するものです。他の Android アプリ プロジェクトで、ライブラリ プロジェクトを参照して、ビルド時にそのコンパイル済みソースを .apk
ファイルに含めることができます。つまり、ライセンス機能に関して言えば、いったんライブラリ プロジェクトでライセンス機能の大部分を開発しておけば、その後さまざまなアプリ プロジェクトでそのライブラリ ソースを利用できることになります。このようにして、すべてのプロジェクトにわたり一貫したライセンス機能を実装でき、管理も一元化できます。ライブラリ プロジェクトやその使い方について詳しくは、プロジェクトの概要をご覧ください。
LVL は、設定済みのライブラリ プロジェクトとして用意されています。ダウンロードすれば、すぐに使い始めることができます。
Android Studio で作業している場合は、プロジェクトに新しいモジュールとして LVL を追加する必要があります。
- [File] > [New] > [Import Module] を選択し、[Import Module from Source] ウィンドウを使用してライブラリ モジュールをインポートします。
- [Import Module from Source] ウィンドウの [Source directory] に LVL の
library
ディレクトリ(ライブラリの AndroidManifest.xml ファイルがあるディレクトリ)をプロジェクト ルート(<sdk>/extras/google/play_licensing/library/AndroidManifest.xml
)として入力し、[Next] を選択します。 - [Finish] を選択して、ライブラリ モジュールをインポートします。
Android Studio でライブラリ モジュールを使用する方法の詳細については、Android ライブラリの作成をご覧ください。
アプリへの LVL ライブラリ プロジェクトの追加
ライブラリ プロジェクトとして LVL ソースを使用する場合は、アプリのプロジェクト プロパティに LVL ライブラリ プロジェクトへの参照を追加する必要があります。これにより、コンパイル時にアプリに LVL ライブラリ プロジェクト ソースを含めるようビルドツールが設定されます。ライブラリ プロジェクトへの参照を追加するプロセスは、下記で説明するように、開発環境によって異なります。
Android Studio で開発している場合は、プロジェクトへのライブラリ モジュール���追加は、前のセクションで説明したとおりすでに行われているはずです。まだ行っていない場合は、先に進む前に済ませてください。
SDK コマンドライン ツールで開発している場合は、アプリ プロジェクトを含むディレクトリに移動して project.properties
ファイルを開きます。このファイルに、android.library.reference.<n>
キーとライブラリへのパスを指定する行を追加します。次に例を示します。
android.library.reference.1=path/to/library_project
または、次のコマンドを使用して、ライブラリ プロジェクトへの参照などのプロジェクト プロパティを更新するという方法もあります。
android update lib-project --target <target_ID> \ --path path/to/my/app_project \ --library path/to/my/library_project
ライブラリ プロジェクトの使用方法の詳細については、ライブラリ プロジェクトのセットアップ方法の説明をご覧ください。
テスト環境のセットアップ
Google Play Console には、公開する前にアプリのライセンス機能をテストできる設定ツールが用意されています。ライセンス機能を実装する際には、この Play Console ツールを使用して、アプリのポリシーをテストしたり、さまざまなライセンス応答とエラー状態の処理をテストしたりできます。
ライセンス機能のテスト環境の主なコンポーネントは次のとおりです。
- パブリッシャー アカウントの「テスト応答」設定。これにより、パブリッシャー アカウントまたはテスト アカウントにログインしたユーザーから、パブリッシャー アカウントにアップロードされたアプリのライセンス チェックを受信したときに、サーバーから送信される静的テスト応答を設定できます。
- テスト アカウントのセット(必要な場合)。これらのアカウントで、パブリッシャーがアップロードしたアプリのライセンス チェックを送信して、静的テスト応答を受信します(アプリが公開済みかどうかは関係ありません)。
- Google Play アプリまたは Google API アドオンを含むアプリのランタイム環境。ユーザーは、この環境でパブリッシャー アカウントまたはテスト アカウントにログインします。
テスト環境を適切に設定するには、次のことを行います。
- ライセンス サーバーから返される静的テスト応答を設定すること。
- 必要に応じて、テスト アカウントをセットアップすること。
- ライセンス チェックのテストを開始する前に、エミュレータまたはデバイスに適切にログインすること。
下記のセクションで、さらに詳しく説明します。
ライセンス チェックのテスト応答の設定
Google Play のパブリッシャー アカウントでは、ライセンス チェックの通常の処理をオーバーライドして、指定した静的応答コードを返すように設定できます。この設定はテスト専用であり、アップロードしたアプリに対するライセンス チェックを、パブリッシャー アカウントまたは登録済みテスト アカウントの認証情報でエミュレータまたはデバイスにログインしたユーザーが行う場合にのみ適用されます。他のユーザーが行うライセンス チェックは、すべてサーバーが通常のルールに従って処理します。
アカウントのテスト応答を設定するには、パブリッシャー アカウントにログインし、[プロフィールの編集] をクリックします。[プロフィールの編集] ページで、下記に示す [ライセンス テスト] パネルの [ライセンス テスト応答] メニューを見つけます。有効��すべてのサーバー応答コードの中から、アプリでテストする応答または条件の制御に合わせて選択できます。
通常は、[ライセンス テスト応答] メニューで使用可能な応答コードをすべて使用して、アプリへのライセンス機能の実装をテストします。コードの説明については、ライセンス リファレンスのサーバー応答コードをご覧ください。
![](https://cdn.statically.io/img/developer.android.com/static/images/licensing_test_response.png?hl=ja)
図 2. [アカウントの詳細] ページの [ライセンス テスト] パネルでテスト アカウントのセットアップとテスト応答の管理が可能
ここで設定するテスト応答は、アカウント全体に適用されることに注意してください。つまり、そのアプリだけではなく、そのパブリッシャー アカウントに関連付けられている「すべて」のアプリに適用されます。一度に複数のアプリをテストしている場合、テスト応答を変更すると、次のライセンス チェックでそれらすべてのアプリに影響します(ライセンス チェックを行うユーザーがパブリッシャー アカウントまたはテスト アカウントでエミュレータまたはデバイスにログインしている場合)。
ライセンス チェックのテスト応答を正常に受信するには、サーバーにクエリを行うアプリがインストールされているデバイスまたはエミュレータにログインしておく必要があります。特に、ログインにはパブリッシャー アカウントまたはセットアップしたテスト アカウントのいずれかを使用する必要があります。テスト アカウントの詳細については、次のセクションをご覧ください。
使用可能なテスト応答とその意味の一覧については、サーバー応答コードをご覧ください。
テスト アカウントのセットアップ
複数のデベロッパー チームでアプリのライセンス機能をテストする場合、そのアプリを最終的に公開するパブリッシャー アカウントのログイン認証情報を使用させたくない場合があります。そのようなニーズに応じて、Google Play Console では、必要に応じてテスト アカウントをセットアップできます。このアカウントでは、ライセンス サーバーにクエリを送信したり、パブリッシャー アカウントから静的テスト応答を受信したりできます。
テスト アカウントは、パブリッシャー アカウント上で登録する標準の Google アカウントであり、パブリッシャーがアップロードしたアプリのテスト応答を受信できます。デベロッパーは、このテスト アカウントの認証情報を使用してデバイスまたはエミュレータにログインし、インストール済みのアプリからのライセンス チェックを開始できます。テスト アカウントのユーザーからライセンス チェックを受信したライセンス サーバーからは、パブリッシャー アカウント用に設定した静的テスト応答が返されます。
必然的に、テスト アカウントでログインしたユーザーのアクセス権と権限には、次のような制限があります。
- テスト アカウントのユーザーがライセンス サーバーにクエリを行えるのは、すでにパブリッシャー アカウントにアップロードされているアプリについてのみです。
- テスト アカウントのユーザーには、パブリッシャー アカウントにアプリをアップロードする権限がありません。
- テスト アカウントのユーザーには、パブリッシャー アカウント用の静的テスト応答を設定する権限がありません。
次の表は、パブリッシャー アカウント、テスト アカウント、その他のアカウントの機能の違いをまとめたものです。
表 1. ライセンス機能のテストに使用するアカウントの種類の違い
アカウントの種類 | アップロード前のライセンス チェック可否 | テスト応答の受信可否 | テスト応答の設定可否 |
---|---|---|---|
パブリッシャー アカウント | ○ | ○ | ○ |
テスト アカウント | × | ○ | × |
その他 | × | × | × |
パブリッシャー アカウント上でのテスト アカウントの登録
ま������ブリッシャー アカウント上で各テスト アカウントを登録する必要があります。図 2 に示すように、パブリッシャー アカウントの [プロフィールの編集] ページにある [ライセンス テスト] パネルでテスト アカウントを登録します。アカウントをカンマ区切りのリストとして入力し、[保存] をクリックして変更したプロフィールを保存します。
テスト アカウントには、任意の Google アカウントを使用できます。テスト アカウントを所有して管理する場合は、自分でアカウントを作成し、デベロッパーまたはテスターに認証情報を配布します。
テスト アカウント ユーザーのためのアプリのアップロードと配布
前述のとおり、テスト アカウントのユーザーは、パブリッシャー アカウントにアップロードされたアプリに関して静的テスト応答の受信のみ行えます。パブリッシャーとしては、アップロードする権限がないこれらのユーザーと協力して、アップロードするアプリを収集したり、テストのためにアップロードしたアプリを配布したりする必要があります。収集と配布の方法は、自由に選択できます。
いったんアプリをアップロードして、それがライセンス サーバーに認識されると、デベロッパーとテスターは、ローカルの開発環境のアプリを引き続き変更できます。新しいバージョンのアップロードは不要です。新しいバージョンをアップロードする必要があるのは、ローカルのアプリでマニフェスト ファイルの versionCode
属性値をインクリメントした場合のみです。
テスト アカウント ユーザーへの公開鍵の配布
ライセンス サーバーによる静的テスト応答の処理は、通常と同じ方法(ライセンス応答データへの署名、付加情報パラメータの追加など)で行われます。パブリッシャー アカウントではなくテスト アカウントを使用してライセンス機能を実装しているデベロッパーには、アプリのライセンス用公開鍵を配布する必要があります。Play Console にアクセスできないデベロッパーはアプリの公開鍵を入手できず、鍵がなければライセンス応答を確認できないためです。
なんらかの理由でアプリのライセンス用鍵ペアを新たに生成し直した場合は、すべてのテスト アカウント ユーザーに通知する必要があります。テスターに対しては、新しい鍵をアプリ パッケージに埋め込んで配布できます。デベロッパーに対しては、新しい鍵をそのまま配布する必要があります。
ランタイム環境での承認済みアカウントへのログイン
ライセンス サービスは、特定のユーザーが特定のアプリを使用する���イセンスを持っているかどうかを判定するためのものです。ライセンス チェック中、Google Play アプリによってシステムのメイン アカウントからユーザー ID が取得され、アプリのパッケージ名などの情報とともにサーバーに送られます。しかし、利用できるユーザー情報がない場合は、ライセンス チェックを行えないため、Google Play アプリによってリクエストの処理は終了し、アプリにはエラーが返されます。
テスト中に、アプリからライセンス サーバーへ確実にクエリできるようにするには、次のいずれかを使用して「デバイスまたはエミュレータ」のアカウントにログインしている必要があります。
- パブリッシャー アカウントの認証情報
- パブリッシャー アカウントに登録されたテスト アカウントの認証情報
エミュレータでの Google アカウントへのログイン
エミュレータでライセンス機能をテストする場合は、エミュレータで Google アカウントにログインする必要があります。新しい Google アカウントを作成するオプションが表示されない場合は、AVD で実行されているイメージが Google API アドオン、API 8(リリース 2)以上ではなく、標準の Android システム イメージである可能性があります。
詳細については、上記のランタイム環境のセットアップをご覧ください。
パブリッシャー アカウントを使用してログインすると、Play Console にアップロードする前のアプリであっても、静的テスト応答を受信できるという利点があります。
大規模な組織に所属している場合や、自サイト経由で公開するアプリを外部のグループと開発している場合は、代わりにテスト アカウントを配布し、テスト時のログインにはそれを使用するようにします。
デバイスまたはエミュレータにログインする手順を下記に示します。ログインは、メイン アカウントで行うことをおすすめします。ただし、デバイスまたはエミュレータですでに他のアカウントを使用している場合は、追加アカウントを作成し、パブリッシャー アカウントまたはテスト アカウントの認証情報を使用してそれにログインすることもできます。
- 設定アプリ > [アカウント] を開きます。
- [アカウントを追加] を選択し、Google アカウントの追加を選択します。
- [次へ] を選択した後、[ログイン] を選択します。
- パブリッシャー アカウント、またはパブリッシャー アカウント上で登録されたテスト アカウントのユーザー名とパスワードを入力します。
- [ログイン] を選択します。これで、新しいアカウントにログインできます。
ログインしたら、アプリのライセンス機能のテストを開始できます(上記の LVL との統合手順を完了している場合)。ライセンス チェックが開始されると、アプリはパブリッシャー アカウント用に設定された静的テスト応答が含まれる応答を受信します。
エミュレータを使用している場合は、エミュレータの再起動時にデータを消去するたびに、パブリッシャー アカウントまたはテスト アカウントにログインし直す必要があります。
セットアップ手順を完了したら、アプリへのライセンス機能の追加に進みます。