Android StudioでLVL google play Licensing ライブラリを使う

 

LVL google play Licensing ライブラリを使う。

ライブラリのパスの例


E:\AndroidStudioSDK\sdk\extras\google

sdkのextraの中にあるgoogleフォルダ

そこにplay_licensingというフォルダがある。

license_004

フォルダを開くと以下のように表示される。

license_005

libraryフォルダはライブラリのソースです。

sampleフォルダはライブラリを使用したサンプルプログラムです。

・Android Studioにライブラリをインポートするのかな?

新規のライブラリの作成方法もあった。

ビルド済みのライブラリの追加方法も見つかった。

いろいろ試したが、Android Studioでソースからのライブラリのコンパイルのやり方がわからなかった。Android Studioでのaidlの追加方法を探す必要もありそうだ。

 

あまり時間かけられないのでeclipseにインポートしてビルドした。

それをAndroid Studioのほうに追加してみることにした。

 

Eclipseでライブライリをビルド


eclipseでソースからjarファイルを作成する。

まず、以下のようにライブラリのソースをインポートする。

ファイル→インポート→Android Exsiting Android Code Into Workspase

license_010

 

license_011_2
ルートディレクトリにライブラリのプロジェクトを選択する。

libraryにチェックをいれる。

プロジェクトをワークスペースにコピーにチェックする。

完了を押す。

license_012_2

 

パッケージがインポートされたら、プロジェクト名を変更する。

例:google_licenceing_library

そしてビルドする。

※メニューのプロジェクト→自動的にビルドするにチェックをいれておく。

binにライブラリが作成される。

google_licenceing_library.jarをコピーしておく。

 

※Android 5以上はLicenseChecker.javaを編集する必要がある。

 

Android 5.0(Lollipop) で LVL (License Verification Library) が正常動作しない問題への対処方法についてメモ。
本不具合は compileSdkVersion を 21 以上にしている場合に出ます。それ以下の場合は出ません。

http://qiita.com/tmurakam99/items/8eb98c7eb572aa46dd76

わたしも以下のように変更した。

license_028

上のように変更し、Android6のNexus5でlvlのサンプルが動いた。

ライブラリをAndroidStudioのプロジェクトに配置する

license_013
Android StudioのProjectをクリック→Projectを選択します。

Android StudioのProjectをクリック→Projectを選択します。

Projectを選択すると表示がかわり

ディレクトリを作成できるようになります。

 

license_014
プロジェクト名を右クリックしNEW→Directoryを選択しフォルダを作成する。

 

ライブラリをコピーペースト

license_015

フォルダlibsへ

先ほど作成したライブラリのgoogle_licenceing_library.jarを

コピーペーストする。

build.grableを編集する。

license_016

 

license_017

dependenciesに以下の2行を追加する。

compile fileTree(dir: 'libs', include: '*.jar')
compile files('libs/google_licenceing_library.jar')

フォルダとライブラリ名を正しく入力する。

 

・サンプルのプログラムを使う。

license_018

 

extras\google\play_licensing\sample\src\com\example\android\market\licensing

MainActivity.javaがあるので、これをコピーして使う。

クラス名を変更して使用した。

license_019

 

レイアウトのxmlとstring.xmlの内容もコピーしておく。

 

 

ライブラリLVLをアプリで試しにやテストで使えるようにするには

アプリをgoogle playに登録する必要がある。

また、開発用署名でなく

google  pkayに登録したときと同一の署名をしたアプリをインストールする必要がありそうだ。

 

・ライセンスのテストをするにはアルファ版かベーター版で公開しなくてはいけないようだ。

license_024

うごかないなぁとおもっていたら

以下のページにライセンスのテストの条件がのっていた。

https://support.google.com/googleplay/android-developer/answer/6062777?hl=ja

テスターがGoogleグループというのに属しなくてはいけないようだ。

→テストの種類がいくつかある。クローズドベータ版テストにしたら、Googleグループはとくに必要なさそうだ。

license_025

 

アルファ版またはベータ版テストと段階的公開の使用

https://support.google.com/googleplay/android-developer/answer/3131213?hl=ja

 

 

 

license_022

 

アルファ版テストにAPKを置いた。

テスト用にgoogleアカウントのメールアドレスを入力した。

 

Google play ライセンスサービス

コピー防止におすすめのようです。

https://support.google.com/googleplay/android-developer/answer/186113?hl=ja&ref_topic=3450989

 

・LV Lのサンプルのアプリをつかったときにerror 6というのがでた

しらべてみたら、どうやらパーミッションがないためにerror 6となっているようです。

AndroidManifext.xmlにパーミッションを追加する。


・LVLのサンプルのアプリを使ったらChecking licese..のままになった。

Screenshot_20151231-082052

うごかないなぁと思った。
どうやらgoogle playにアプリをおく必要があるようだ。

APKをアルファ版に登録した。

license_022

数時間、時間がかかるようです。

夜登録して朝にでも確認することにしました。

license_020

license_021

テスター登録済みである。

 

更新が終了すると

テスター用のページが作成される。

テスター以外は見れないページである。

license_023

テスター以外だと”アプリは利用できません”と表示する。

有料アプリの場合、テスターがアプリをインストールするときも有料のようである。

→テストで使う場合はテストユーザでなくてもいいようですね。

→アカウントの所有者の端末にリリース用の署名のAPKをPCからUSB経由で直接インストールしてもライセンスをサンプルは動きました。

上記のすべてのアカウントはライセンス テスト応答を受け取ります。アカウントの所有者(テスト アカウントを除く)は、まだ Google Play にアップロードされていないアプリのライセンス テスト応答も受け取ります。

license_026

 

テストユーザでなくてアカウントの所有者でもテスト応答を受け取れるようです。

 

ライセンス テスト応答にはいくつかある。

license_027

 

 

・LVLのライブラリを使用したサンプルをインストール

Screenshot_20160101-160126

 

ライセンスがないと上のようにダイアログが表示されるサンプルですね。

 

・ライブラリのメソッド名などを変更する。

ライブラリのメソッド呼び出しなどをサンプルと違うものにすることにした。

LicenseCheckerCallback インターフェース名を変更した。

LicenseChecker クラス名の変更した。

ライブラリのパッケージ名を変更した。

 

 

 

アプリをインストールしたら、ライセンスがないと表示された。

テストユーザーを使ってアプリを有料で買ったんだけれども。

検索したら以下のページがあった。

 

・ライセンス サービスのトラブルシューティング

ユーザーのインターネット接続が不安定であるためにアプリをダウンロードできないことが 1 度あっても再試行できる点です。旧バージョンのライセンス サーバーでは、ユーザーが 1 度ダウンロードに失敗した後に再試行することはできません。

さらに、接続が不安定であるためにライセンス サーバーにエラーが発生するケースを減らすには、サーバー設定時に [] 設定を選択しないようにします。[厳格] 設定を選択すると、アプリを開こうとするたびにサーバーから認証を求められるようになります。そのような設定にしていると、ユーザーが使用しているインターネット接続が不安定である場合にライセンス確認ができなくなることがあります。

https://support.google.com/googleplay/android-developer/answer/186378?hl=ja

 

 

 

接続不安定でエラーになっているのかもしれない。

ダイアログにそんなようなことが表示されている。

Screenshot_20160102-194237

 

Application not licensed > ライセンス(許諾)されていないアプリケーション

Unable to validate license. > ライセンスを確認することができない

Chaeck to see if a network connection is available. > ネットワーク接続が利用できるかどうか確認してください。

 

 

自宅のWi-Fiで接続されているのでOKだと思った。

ログキャットを見ると以下のように表示されていた。

I/LicenseChecker: Binding to licensing service.
I/LicenseChecker: Calling checkLicense on service for
I/LicenseChecker: Start monitoring timeout.
I/LicenseChecker: Received response.
I/LicenseChecker: Clearing timeout.
W/LicenseValidator: Error contacting licensing server.