回答:
このエラーは、いくつかの理由で発生する可能性があります。
これは、Google IABテストの要件のリストです。
前提条件:
テスト要件:
PS:リリース証明書を使用したデバッグ:https ://stackoverflow.com/a/15754187/1321401(Thnx @dipp for the link)
PPS:すでにこのリストを長い間作りたかったのです。
数時間試してみて、解決策を見つけました。
公開されたバージョンが携帯電話でテストしているバージョンと同じでない場合も同じことが起こります。
たとえば、アップロードされたバージョンはでandroid:versionCode="1"
、携帯電話でテストしているバージョンはandroid:versionCode="2"
android:versionCode="1"
あり、電話がandroid:versionCode="2"
用量である場合、それが問題ないか、apkのGoogle Playを変更する必要があるか教えてください。
ライブ証明書でAPKに署名する必要があります。次に、それをテストデバイスにインストールします。その後、InAppBillingをテストできます。Eclipseからデバイスへ直接実行してアプリケーションをテストしている場合(デバッグモード)、このエラーが発生します。
android.test.purchased
SKUとして使用している場合、それは完全に機能しますが、最終応答にdeveloperPayloadは含まれません。
アプリアイテムで独自のドラフトを使用している場合は、ずっとテストできますが、料金が発生するため、後で自分で返金する必要があります。
Google Play開発コンソールで使用しているのと同じGmailアカウントでアイテムを購入することはできません。
2018年からここにいる場合は、Playストアから直接APKをダウンロードして、「派生」APKをインストールする必要があります。GoogleのPlayストアに「Google Playによるアプリ署名」という機能があるためかもしれません。
SOや他のサイトでの多くの回答やコメントに反して、Google Playからテストデバイスにダウンロードされた製品のアルファ/ベータバージョンを使用して予備テストを実行する必要はありません(アルファ/ベータ公開プロセスは、多くの場合、負荷がかかります。半日)。また、署名済みリリースAPKをデベロッパースタジオからテストデバイスに読み込んだり、再度読み込んだりする必要もありません。
開発者スタジオからADB経由でテストデバイスに直接読み込まれたデバッグアプリを使用して、アプリの課金サービスで予備のGoogle Playをデバッグできます。これを妨げるエラーが発生している場合は、コードに問題がある可能性があります。SKUのCASE(製品ID)とその形式に特に注意してください(たとえば、APKをcom.mydomain.my_product_idとしてロードする場合は、必ず同じ方法で同じケースとドメインを提供して、この方法で購入してください)。 。また、itemTypeには特に注意を払ってください。これは、アプリの購入またはサブスクリプションでの管理対象/管理対象外のそれぞれに対して、「inapp」または「subs」のいずれかである必要があります。
Chirag Patelが提案したように、請求コードが適切に設定されている場合は、予備テスト中にandroid.test.purchased Sku(製品ID)を使用してすべてのテストを実行します。このデータはGoogleテストシステムから提供されないため、署名、トークン、およびペイロードのチェックを通過するように、課金処理全体でこのIDを確認してください。さらに、テスト製品の1つにこのIDを与えて、スキーマを介して購入、ロック解除/ロード、およびプレゼンテーションをテストします。購入をクリアするには、それを消費し、同じSkuとこのようにフォーマットされたトークン文字列を渡します-他のフィールドは関係ありません:
"inapp:"+appContext.getAppContext().getPackageName()+":android.test.purchased";
テストのこのフェーズが完了したら、アルファ/ベータ製品を使用したセミライブテストに移行します。Googleグループ(基本的にはメーリングリスト)を作成し、テストユーザーのメールをグループに追加し、このグループを追加/招待して、このフェーズでデバイスをテストします(アプリのGoogleデベロッパーリストの「APK」部分で実行されます)。購入はシミュレーションされますが、実際には請求されません。ただし、購入をクリアして再テストするため、Googleウォレットから返金する必要があることを示しています。これは、アルファ/ベータロードを使用してユーザーをテストする時間のかかるプロセスを必要とするテストの唯一のフェーズです。
IABをデバッグする場合、何をしなければなりませんか。
マニフェストに対するIAB権限を持つアプリのバージョンをGoogle Playに送信します。
Google Playでアプリに製品を追加する:アプリ内課金の管理
カスタムデバッグキーストアを署名済みに設定:署名済みキーストアを使用するようにEclipseを設定
最近グーグルは彼らのシステムに変更を実装しました、そしてあなたがコンソールに少なくとも一つのAPKをアップロードしたので、あなたはどんなバージョンコード/番号であなたのアプリでアプリ内リクエストをテストすることができます。
相互参照リンク
gradle
デバッグ用にデバッグビルドに署名するように構成します。
android {
...
defaultConfig { ... }
signingConfigs {
release {
storeFile file("my-release-key.jks")
storePassword "password"
keyAlias "my-alias"
keyPassword "password"
}
}
buildTypes {
debug {
signingConfig signingConfigs.release
...
}
}
}