LVL 導入でつまずいたことメモ


はじめに

Android にて、License 情報を確認するためのライブラリとして、LVL(License Verification Library)があります。 有料アプリを公開した際に、不正利用の防止手段として使用するライブラリの一つです。
詳細については、以下の参考ページを参照ください。

参考にさせていただいたページ

  • http://developer.android.com/intl/ja/guide/google/play/licensing/index.html
  • http://y-anz-m.blogspot.jp/2010/10/androidlvl-securing-android-lvl.html
  • http://y-anz-m.blogspot.jp/2011/03/androidapplication-licensing.html
  • http://kobadroid.web.fc2.com/androidlvl.html
  • https://groups.google.com/forum/#!msg/android-sdk-japan/rDuc-UFsQRw/tR9FCt_IrG8J


  • その LVL を導入するにあたって、つまずいたことをここにメモします。
    (というか、なかなか導入できず、イライラしたので、はけ口としてのメモです(汗)

    ※メモ的な内容ですので、読み易さはあまり考慮しておりません



    1.ADT(Android Development Toolkit)の更新


    LVL を導入するには、ADT を最新の状態に更新する必要があります。


    私の場合、ADT-16.0.1 から ADT-20.0.0 にアップデートしたのですが、これが失敗でした。

    導入自体はスムーズに行き、全てのバージョンが最新になり、LVL の library project(後述します)をインポートをするという場面で、それが出来ませんでした。

    その際に発生した現象は以下です。
  • Android の新規 project 作成にて、「次へ」ボタンを押したが画面が切り替わらない
  • Android SDK マネージャが起動しない
  • 新規→その他→Android 関連の全ての動作がおかしい

  •  

    など、今まで使えていた Android 関連の機能が動かなくなりました。
    android-sdk を削除し、再インストールしてみたり、ADT を zip から導入してみたりしましたが、機能は回復しませんでした。


    最終的な対処としては、eclipse、ADTの両方を全てファイルから削除し、再インストールすることで対処することができました(汗)
    環境によるのかもしれませんが、ADT のアップデートは上書きで更新しないほうがよさそうです。


    eclipse の導入は以下の通り。

    eclipse 導入手順ざっくり版 タイトルクリックで開閉します。



    2.LVL(License Verification Library)の導入



    LVL の導入はいろいろ難解なので、導入時のポイントを以下にまとめます。

    LVL 導入時のポイント

  • LVL Libraryはワークスペースにコピーする
  • LVL を使用するプロジェクトは、コピーしたライブラリーを参照する
  • 動作テスト時は Google Play(Android Developer Console) に非公開で保存する
  • 公開後はちょっと待つ


  • LVL は Google Play に保存されていないプロジェクトでは使用できません。
    (常にエラーコード=3(ERROR_NOT_MARKET_MANAGED)が返ってくる)

    Library のパス、サンプルのパスは以下の通り。

    LVL Library のパス
    ~\android-sdk-windows\extras\google\play_licensing\library

    LVL サンプルプログラムのパス
    ~\android-sdk-windows\extras\google\play_licensing\sample


    LVL サンプル導入(動作確認まで)の手順は以下の通り。

    1.LVL の library project を取り込む
    メニューから、新規→その他を選択し、以下の矢印を選択。
     
    library までのパスを指定して完了を押す。


    2.Android プロジェクトを新規作成する(サンプルのプロジェクト)
    メニューから、新規→その他を選択し、以下の矢印を選択。
     
    Application Name、package Nameを入力。カスタムアイコンの作成はお好きに。
    Activity の設定はそのままで完了。


    3.プロジェクトの設定
    作成したプロジェクトを右クリックして、プロパティー→Androidを選択。
     
    画面下部のライブラリー→追加を押し、1でインポートした library を追加する。
    ※1のプロジェクトには Is Library のチェックがついているはず。チェックをつけると、追加の一覧に現れる

    この操作によってプロジェクト直下の project.properties に以下の内容が加わる。
    android.library.reference.1=../library

    プロジェクトをクリーン→全てビルドをする場合は、ビルドの順序を気にする必要あり。
    library が完全にビルドされたあとに3の手順をふまないとandroid.library.reference.1の内容が変わってしまう。


    4.サンプルプロジェクトの上書き
    以下の MainActivity.java 以外を上書きする。
    ~\android-sdk-windows\extras\google\play_licensing\sample
    MainActivity.java はパッケージ以外を上書きし、BASE64_PUBLIC_KEY の値に、アンドロイドデベロッパーコンソールのプロフィールの編集から取得した公開鍵を上書きする。


    5.署名つき apk の作成
    Google Play に保存するための apk を作成する。
    apk に署名がついていないと、Google Play にてエラーが出てしまうので、署名をつける必要がある。

    署名の内容はキーストア(keystore)に保存される。
    次回apkを作成する際は必ず同じキーストアを使用する必要がある。
    ※キーストアはアップデート時に使用するので、紛失しないよう注意が必要です





    保存するキーストアを指定。保存先、ファイル名はご自由に。パスワードも入力。


    エイリアス(ラベルのようなもの)、パスワードを入力。前の画面と同じ内容でも可能。
    Validity(years)は1000以上を入力。
    個人、会社の情報として、名前、組織単位、組織、市区町村、都道府県、国コード(日本ならJP)を入力。

    保存する apk を指定

    完了を押すと、指定した場所に apk が作成される。


    6.Google Play に保存

    Google Play に保存する。
    LVL は有料アプリのみでしか使用することが出来ないので、価格は有料(100円程度)を設定。
    (無料のアプリを有料に変更した際でも使用は出来ない。初回で有料にする必要がある)

    また、保存するには 320x480(他のサイズでも可)と512x512の画像が必要です。
    間違っても公開はしないように。

    内容は以下の通り。











    apkをアップロードします。apk に署名がついていないとここでエラーになります。




    7.ちょっと待つ
    上記の手順にて、動作確認が出来る状態になったのですが、デベロッパーコンソールの結果反映に時間がかかるので、ちょっと待ちます。

    テストアプリの実行時、いつまでたってもエラーコード=3しか表示されない場合は、これが原因かもしれないです。
    私の場合は、1時間程度経過したらエラーが出ないようになりました。


    8.アプリを実行する
    テストアプリを実行します。
    デベロッパーコンソールのプロフィールの編集から、ライセンステスト応答の値を変えられるので、値を変更する。
    テストアプリでの実行結果が変わります。

    LICENSEDの場合



    NOT_LICENSEDの場合



    手順は以上です。

    推奨できる手順かどうかは別として、上記にてライセンスの確認はとれました。
    考えなしに ADT を更新したのが事の発端なのですが、LVL を導入するには ADT の更新が必要だったので、多少時間はかかりましたが、導入できてよかったです。
    ADT の更新は慎重に。

    ライセンスチェックのロジックは、有料アプリを保護する重要なロジックですので、解析されないよう、解析されてもそれに手間がかかるようにコーディングに工夫する必要があります。
    それについて解説はしませんが、ご考慮ください。


    オワリ


    Clip to Evernote LINEで送る このエントリーをはてなブックマークに追加



    戻る