当我尝试使用应用内结算运行我的应用时,我收到错误消息:“此版本的应用程序未配置为通过Google Play结算。请查看帮助中心以获取更多信息”。
我已在清单文件中获得了结算权限,并且我已将已签名的.apk作为草稿上传到Google Play上,并且我已将同样已签名的apk安装到我的手机上。
有关如何解决此问题的任何帮助?
答案 0 :(得分:297)
此错误可能由多种原因引起。
以下是Google IAB测试的要求列表。
先决条件:
测试要求:
答案 1 :(得分:184)
Ahh在尝试了几个小时后找到了解决方案。
答案 2 :(得分:130)
如果您发布的版本与您在手机上测试的版本不同,则会发生同样的情况。
例如,上传的版本为android:versionCode="1"
,您在手机上测试的版本为android:versionCode="2"
答案 3 :(得分:45)
您需要使用实时证书对APK进行签名。然后将其安装到您的测试设备上。然后,您可以测试InAppBilling。如果您通过eclipse直接运行到设备来测试应用程序(在调试模式下),那么您将收到此错误。
如果您使用android.test.purchased
作为SKU,它将一直有效,但您不会在最终回复中使用developerPayload。
如果你在app项目中使用自己的草稿,你可以一直测试但是你会被收费,所以必须自己退还。
您无法使用与Google Play开发控制台相同的Gmail帐户购买商品。
答案 4 :(得分:14)
2021 年的结论
对于所有关心调试的人 - 您可以在调试模式下运行、调试和测试代码
以下是测试过程的方法:
(这当然取决于您已经添加并激活了您的产品,并且您的代码已准备好与这些产品集成)
我做了上面的事情,它工作得很好。
答案 5 :(得分:14)
在开发者控制台中:
Settings
-> Account details
-> License Testing
->具有测试访问权限的Gmail帐户
然后在此处输入您的帐户
答案 6 :(得分:10)
如果您从2018年开始在这里,则需要直接从Play商店下载APK并安装“衍生”APK。也许是因为Google的Play商店有一项功能“Google Play for Google Play”。
答案 7 :(得分:3)
让我加上发生在我身上的事情,可能会帮助一些人。
这主要是由于签约。
由于我在项目结构中添加了签名详细信息,我以为每次运行时,都会安装预期签名的apk。但是选择了构建类型“debug”。
下面的修复解决了我的问题。
答案 8 :(得分:2)
如果你使用的是不同版本的apk,那么就会发生这种情况。
答案 9 :(得分:1)
与SO和其他网站上的许多答案和评论相反,您不必使用已从Google Play下载到您的测试设备上的产品的alpha / beta版本进行初步测试(alpha / beta发布流程经常吃半天)。您也不必从开发人员工作室加载并重新加载签名版本apk到您的测试设备。
您可以使用从开发人员工作室直接通过ADB加载到测试设备的调试应用,在应用结算服务中调试初步Google Play。如果您遇到阻止此问题的错误,可能是您在代码中出错了。请特别注意您的SKU(产品ID)及其格式的CASE(例如,如果您将APK加载为com.mydomain.my_product_id,请确保您尝试以这种方式购买 - 提供相同的案例和域名)。另外,要特别注意你的itemType - 这应该是" inapp"或者" subs"适用于应用内购买或订阅中的托管/非托管。
正如Chirag Patel建议的那样,如果您已正确建立了帐单代码,请在初步测试期间使用android.test.purchased Sku(产品ID)执行所有测试。在整个结算操作中检查此ID,以通过签名,令牌和有效负载检查,因为Google测试系统不提供此数据。此外,请为您的某个测试产品提供此ID,以便在您的架构中测试其购买,解锁/加载和演示。要清除购买,只需使用它,传递相同的Sku和以这种方式格式化的标记字符串 - 没有其他字段是相关的:
"inapp:"+appContext.getAppContext().getPackageName()+":android.test.purchased";
完成此阶段的测试后,请使用您的alpha / beta产品进行半实时测试。创建一个Google群组(实际上是一个邮件列表),将测试用户的电子邮件添加到其中,然后添加/邀请此群组在此阶段测试您的设备(在应用的" APK"部分执行' ;谷歌开发者列表)。购买将被模拟但实际上没有收费 - 但是为了清除和重新测试购买,Google表示您必须从Google钱包中退款。这是测试的唯一阶段,需要耗时的使用alpha / beta负载和测试用户的过程。
答案 10 :(得分:1)
如果你想调试IAB,你需要做的是:
使用清单上的IAB权限提交谷歌播放应用版本:
在Google Play上向您的应用添加产品:Administering In-app Billing
设置已签名的自定义调试密钥库:Configure Eclipse to use signed keystore
答案 11 :(得分:1)
有同样的问题,在我阅读DZDomi的帖子之前没有解决。突然想到您需要启用Google Developer Console中的设置。在"在应用内购买"部分,您的产品有一条线,而最右边则是它的状态。它应该是ACTIVE!
答案 12 :(得分:1)
在我的情况下,由于已安装的apk的不同签名和上传到市场的apk,我看到了相同的消息。
答案 13 :(得分:0)
我的问题是我试图用debug.keystore检查它,我的意思是通过eclipse运行它。我用我在alpha模式下发布的密钥库导出它(它必须在你测试之前发布)。将它安装在我的手机中,我可以正常测试。
答案 14 :(得分:0)
当您在上传apk后添加了应用内购买但未在Play商店(alpha,beta和production)中发布应用程序时,也会出现此问题。
这基本上意味着,您必须在Play商店中发布apk后添加应用程序内购买(alpha,beta和production)。否则,您将无法购买或查询应用程序内购买。
答案 15 :(得分:0)
此处未提及的另一个原因是您需要在真实设备上进行测试。 随着模拟器变得非常好,这是一个容易犯的错误。
答案 16 :(得分:0)
<强>解强>
在Play商店上传你的应用程序后暂时坚持一段时间,因为谷歌需要一些时间来更新应用程序版本。它会工作!
答案 17 :(得分:0)
我在moto c2 +中遇到同样的问题,一旦我重新启动,它就是设备问题,那么它将非常完美...
答案 18 :(得分:-1)
最近谷歌已对其系统进行了更改,并且由于您已将至少一个APK上传到您的控制台,因此您可以使用任何版本代码/编号来测试您的应用内请求。
交叉引用LINK
配置
gradle
以对调试版本进行签名以进行调试。
android {
...
defaultConfig { ... }
signingConfigs {
release {
storeFile file("my-release-key.jks")
storePassword "password"
keyAlias "my-alias"
keyPassword "password"
}
}
buildTypes {
debug {
signingConfig signingConfigs.release
...
}
}
}