###はじめに
Androidアプリに課金機能のテストってベータとか内部テストにアップロードしなきゃできないと思っていたんですが、GooglePlayBillingLibraryのバージョン3.0.0以降(?)ではデバッグ署名でもできるみたいです(常識なんですかね?)。
普通に調べても最新の情報が少なくて、みんな変更の度にいちいちアップロードしてるもんだと思っていました。
ただ、課金アイテム自体は一度でもGooglePlayにアップしていないと作成できないので、Googleが用意しているテスト用の課金アイテム(android.test.purchasedなど)を使う(定期購入テストでは使えない)か、ライブラリを追加したAPKを適当にアップロードしとく必要はあります。
###やり方
公式ドキュメントにちゃんと書いてあるので見てみます。
通常、GooglePlayBillingLibraryは、未署名でGoogle Playにアップロードされていないアプリに対してはブロックされます。ライセンステスターはこのチェックを回避できます。**つまり、デバッグ署名を持つデバッグビルドを使用しているアプリであっても、新しいバージョンのアプリをアップロードすることなく、テスト用にアプリをサイドローディングできます。**ただし、パッケージ名は、GooglePlay用に構成されたアプリのパッケージ名と一致する必要があります。また、Googleアカウントは、GooglePlayConsoleアカウントのライセンス テスターでなければなりません。
これによるとPlayConsoleでライセンステスターに登録したGoogleアカウントでデバッグすると課金テストができるようです。
#####ライセンステスターに登録
これはPlayConsoleでやります。PlayConsoleの仕様もコロコロ変わるので2020年12月時点のやり方を書いておきます。
ライセンステスターはアプリごとではなくアカウント単位で設定します。
「設定」→「ライセンステスト」でテストアカウントのGmailアドレスを追加するだけです。
ここも微妙に分かりづらいのですが「ライセンステスターを追加」にメールアドレスを入力したら、エンターを押す必要があります。すると「ライセンステスター」の欄に追加されます。
これだけで運が良ければデバッグビルドでも課金テストができます。くれぐれも**「テスト用の支払い」であることを確認**した上で購入してください。
運が悪ければエラーで購入できません。
運悪くエラーが出てしまった場合は、以下を確認します。
購入を行っているアカウントは、購入のダイアログを展開することで確認できます。次の点にご注意ください。
・テストアカウントは、テスターのAndroidデバイス上に存在する必要があります。
・デバイスに複数のアカウントがある場合、アプリをダウンロードしたアカウントで購入が行われます。
・いずれのアカウントでもアプリをダウンロードしていない場合は、最初のアカウントで購入が行われます。
日本語がなんかよく伝わってこない箇条書き3つは恐らくこういう意味です。
- ライセンステスターに登録したGoogleアカウントをデバッグ端末に追加しておけ(当たり前)
- デバッグビルドではアプリのダウンロードはできないので該当しないはず(多分)
- デバッグビルドで端末に複数アカウントがある場合、端末に最初に登録したアカウントで購入が行われる(は?)
問題は恐らく3つ目で、デバッグ用端末にアカウントを複数登録していて、先のライセンステスターにその内の一つ(開発用アカウントなど)しか登録しなかった方は、引っ掛かってしまう可能性大です。
私はこの「最初のアカウントで購入が行われます」の意味が分からず混乱してました。
端末に一番最初に登録したアカウントが分かっていれば、それをライセンステスターに登録する必要があります。
どうしても別のアカウントでテストしたい場合は他のアカウントを端末から削除するか、ベータテストなどを利用するほかありません。
一番手っ取り早いのはデバッグ端末にあるアカウントを全てライセンステスターに登録してしまうことです。
###おわり
条件を満たせばデバッグビルドでも課金テストができることがわかりました。