件のコメント恐れ多くもへっぽこアプリへ課金で広告解除等の実装しようと思っております。4月頃リリースしたアプリにはうまく実装できていたのですが、今度バージョンアップのリリースしようと思っているアプリへは一筋縄にいかなかったので、つまづいた点などをメモしておきたいと思います。実装する場合は、クレジットカードの番号とか銀行の口座番号とか入力が必要だったと思いますがその辺りの手順は割愛します。実装面こちらのサンプルコードを参考にさせていただきました。Qiitahttp://qiita.com/Night___/items/1ff72d0a926e0ebdf87cサンプルコードの通りに実装するとうまく動くのですが、IabHelperのstartSetup()メソッドを呼んで、処理が終わってから、(購入ボタンを押した時の)launchPurchaseFlow()を呼ぶようにしなければなりません。+新しいアイテムを追加で追加します。ここでは「管理対象のアイテム」で話を進めます。この時入力するアイテムIDをサンプルコードのPRODUCT_IDに設定します。アイテムに必要事項を入力して忘れてはいけないのが、アイテムを有効にすること!そして、右上の「更新を送信」ボタンで保存することも忘れずに。左のメニューから「サービスとAPI」を選択。ページ中程になる「ライセンスとアプリ内課金」にある文字列をコピーして、サンプルコードのbase64EncodedPublicKeyのところへ記述。ConsoleにAPKファイルアップロードしてやる必要がるのですが、やり方は何通りかあります。ベータ版テストクローズドベータ版テストオープンベータ版テストGoogleグループまたはGoogle+コミュニティを使用するベータ版テストアルファ版テストクローズドアルファ版テストオープンアルファ版テストGoogleグループまたはGoogle+コミュニティを使用するアルファ版テストここでは、クローズドベータ版テストで話を進めます。list」をクリックして、適当なリスト名を入力し、テスターのメールアドレスを入力します。Consoleにログインしているメールアドレスはダメです。「ベータ版に新しいAPKをアップロード」ボタンにてAPKをアップロードします。Consoleに反映されてから行えます。そのため、以下のようなマークが表示されている間はテストが行えません。「指定したアイテムは購入できません」と表示されてしまいます。Logcatには以下のように表示されます。subtype=4}この反映が数時間かかる場合があります。上記のような実装面にミスがあると修正して再度APKをアップロードする必要があり更に数時間かかるということをやってしまいました。この時、これはAPKの反映を待てばよいのか別のところが間違ってるのかわかってなかったのでしんどい時間帯でした。APKが反映されたらテスト端末にAPKをインストールします。adbのinstallコマンドでは確認してませんが、以下の2通りがあります。自動アップデート(過去のベータ版APKが端末に入っていたら?テスターの端末として認識されたら?アップデートされる条件を細かく確認してませんが、自動アップデートで入手できる場合があります)オプトインURLから入手オプトインURLをテスト端末のブラウザ等で開きます。テスターとして認識されていれば、下図のように表示されます。これでインストールが完了すると、課金のテストが行えます。購入してもキャンセルされるはずです。追記:購入を消費する上記までだと、1回テストすると購入済みになってしまって、2回目以降の購入テストができません。このスクショは英語ですが購入後に購入処理を走らせると表示されます。日本語だとこのアイテムは既に購入済みがナントカとか表示されてたと思います。2回目以降をテストをするには、この購入したものを消費すればOKです。以下のようにIabHelperのconsumeAsync()を実行してやると消費できます。※このサンプルは動作を確認してません。繰り返せば無限にテストできます。ゲームのアイテムのように何度も購入できるようなものは、購入したタイミングで消費するというような記述を見かけた気がしますが忘れました...。スマホとタブレットというように端末を複数台所持している場合、同じGoogleアカウントを登録していると、スマホで購入したアイテムはタブレット側でも購入済みになる仕様です。そのため、IabHelperのstartSetup()メソッドを実行し、サンプルで言うところの49行目のgetPurchase()の取得を確認してやれば、タブレット側でも購入済みであることを知ることができます。この購入情報はどこかがキャッシュしてるみたいで、複数の端末間で購入と消費を繰り返していると、49行目のgetPurchase()はnullで返ってくるけど、購入処理を実行してみると上図のような購入済みのエラーダイアログが表示されてしまうことがあります。テスト時の対処法(?)としては以下が考えられます。購入情報が反映されるまで待つ(?)端末をリブートしてみる新しいテスト端末を使う(例:Genymotionで新しいデバイスを作る。Play)基本的に1回目は動いているので、例えば広告解除のような1度しか購入できない商品のようなもは運用上は問題ないように思います。この購入済みのエラーダイアログですが、このダイアログが表示された時にプログラム的にそれをを知る術が不明です。IabHelper.OnIabPurchaseFinishedListenerはそのダイアログのOKボタンを押した後でユーザーキャンセルの値が返ってきます。購入済みである7が返ってくると嬉しいのですが....あと、Fragemntで実行するよりはActivityで実行した方がいいような記述を見かけました。人気の記事Eclipseの高速化メモEclipseが重いと一言に言っても、いろいろな工程での話があると思いますが、過去記事のなども含めてこの記事にピックアップしておきたいと思います。以下はWindows環境での話です。JavaでprivateなfieldやmethodにアクセスするJUnitでテストしてると、privateなフィールドにアクセスして、値を参照したりセットしたりしたくなるわけですが、よく使うのでメモしておきます。次のような対象のクラスがあるとします。...Eclipseで一通り基本的なGitを使ってみる備忘録的にまとめておきたいと思います。おかしな点があればご指摘いただければ幸いです。...Androidのlogcatを自動で保存させたいEclipseのlogcatビューは、いらないログはすぐ消してしまうので、さっきのログをもう一度見たいという時に、どこかに残ってないかなと思うことが時々あります。Playアプリ内課金実装でつまづいたメモApplicationを参照するActivity起動のテストをしたい。