我一直在尝试在我的设备上测试购买Play Store订阅,但尽管遵循了几个分步指南[1][2][3],我还是没有成功。
我的终极目标是通过Android Studio构建和安装应用程序,在USB连接的设备上测试订阅。不幸的是,似乎我现在唯一的选择是将应用程序发布到Play商店的Alpha轨道上,等待几个小时,每次我做出更改时下载它。
使用BillingClient.querySkuDetailsAsync
成功查询订阅产品,但当我启动计费流程(通过BillingClient.launchBillingFlow
)时,我在屏幕上看到以下警报:
错误
此版本的应用程序未配置为通过Google Play计费。有关详细信息,请查看帮助中心。
好的
我还在控制台中看到以下内容:
W/ProxyBillingActivity: Activity finished with resultCode 0 and billing's responseCode: 5
W/BillingHelper: Couldn't find purchase lists, trying to find single data.
W/BillingHelper: Received a bad purchase data.
Couldn't find single purchase data as well.
响应代码5表示开发人员错误:
为API提供的参数无效。此错误还可能表示应用未正确签名或未在Google Play中正确设置应用内付费,或者在其清单中没有必要的权限。
我的应用发布到内部、Alpha和Beta发布轨道,版本名称和版本代码与本地构建的APK相同。在Play控制台中,我创建了一个许可证测试程序,并将其添加到Alpha轨道的测试程序中,然后通过链接选择测试程序加入Alpha轨道。在我的设备上,我使用测试程序的Google帐户登录。
我尝试过构建一个使用发布证书签名的APK,版本名称和代码与应用商店中发布的APK相匹配。我最初使用Android Studio中的“运行”和“调试”按钮,但发现无论我如何配置签名配置,他们都构建了一个未签名的[7] APK。相反,我使用“构建”-〉“创建项目"菜单项进行构建,并使用ADB[5]安装得到的签名APK。“活动构建变体”被设置为“发布”。
我突然想到,可能无法使用与Play商店分发的APK相同的密钥对本地构建的APK进行签名,因为我的应用启用了“Play App Signing”(这会导致Google使用不同的密钥对APK进行重新签名,而我无法访问该密钥)。然而,StackOverflow上有一个线程表明,即使使用Play App Signing,其他应用也已成功签名[6]。
我也试过在发布一个新的构建到Alpha轨道和尝试购买订阅之间等待几天,因为我读到Play商店有时需要长达24小时来处理构建。
我正在MacOS 10.15.7上使用Android Studio 4.2,用三星A5手机进行测试。
- [1] Selling subscriptions
- [2] Testing in-app purchases on Android
- [3] Checklist on Stack overflow
- [4] "Run" with signed APK
- [5] Install an APK via ADB
- [6] Testing In-App payments with Play App Signing enabled
- [7] Verifying an APK is signed
更新2022
我从来没有在我的三星A5上找到解决这个问题的方法。但是,我购买了三星A52(运行Android 12),它没有出现这个问题。
3条答案
按热度按时间n9vozmp41#
你需要增加版本并上传该版本作为beta版发布。
大部分重复,请检查This version of the application is not configured for billing through Google Play
b4lqfgs42#
如果两个应用的签名密钥或软件包不同,Google Play会将其视为不同的应用
调试和发布版本都应该使用相同的签名密钥,我可以在Android Studio上通过USB调试时进行测试购买,没有任何问题
在应用程序build.gradle上类似这样的内容:
z9zf31ra3#
有一个叫做“幸运补丁”的工具可以修改应用程序代码,以便绕过应用程序购买(是的,它是用于盗版的,但我很确定绕过你自己的应用程序不是盗版),你可以尝试用它来测试你的应用程序。
如果你还没有,一旦你完成了,通过下面的方法来防止它:Lucky patcher, how can I protect from it?