【问题标题】:How do I test the purchasing of Play subscriptions?如何测试购买 Play 订阅?
【发布时间】:2021-05-06 05:50:23
【问题描述】:

我一直在尝试在我的设备上测试购买 Play 商店订阅,但尽管遵循了几个分步指南,但我没有成功[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表示a developer error

提供给 API 的参数无效。此错误还可能表明应用未正确签名或未正确设置 Google Play 中的应用内结算,或者在其清单中没有必要的权限。

我的应用以与本地构建的 APK 相同的版本名称和版本代码发布到内部、Alpha 和 Beta 版本轨道。在 Play 控制台中,我创建了一个 License Tester 并将其添加到 Alpha 轨道的测试器中,然后通过链接选择测试器加入 Alpha 轨道。在我的设备上,我使用测试人员的 Google 帐户登录。

我已尝试构建一个使用发布证书签名的 APK,其版本名称和代码与商店中发布的 APK 匹配。我最初在 Android Studio 中使用“运行”和“调试”按钮,但发现无论我如何配置签名配置,它们都构建了一个未签名的[7] APK。相反,我使用 Build->Make Project 菜单项进行构建,并使用 ADB[5] 安装生成的签名 APK。 “Active Build Variant”设置为“Release”。

我突然想到,使用与 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 手机进行测试。

【问题讨论】:

  • 您是否检查过添加在 license testers 中的账号是您手机中唯一登录的账号?
  • 如果你想调试你的发布版本,你可以设置 signinConfigs 并设置 debuggable true 然后你可以调试你的发布版本。

标签: android android-studio google-play in-app-purchase in-app-billing


【解决方案1】:

您需要增加版本并上传该版本作为测试版发布。

主要是重复 请查看This version of the application is not configured for billing through Google Play

【讨论】:

  • 我正在使用与发布为 beta 的 APK 使用相同版本号、版本代码和签名密钥的 APK 进行测试。
  • @diachedeliccan 您还检查 SKU id 是否与产品列表中存在相同的测试?检查测试 sku id medium.com/bleeding-edge/…
【解决方案2】:

如果两个应用的签名密钥或软件包不同,则 Google Play 将它们视为不同的应用

调试版和发布版都应该使用相同的签名密钥,我可以在 Android Studio 上通过 USB 调试时进行测试购买,没有问题

app build.gradle 上的类似内容:

 buildTypes {
        release {                        
            signingConfig signingConfigs.mykey
            debuggable false; 
            ....
        }
        debug {
            debuggable true
            signingConfig signingConfigs.mykey
            ....
        }
    }

【讨论】:

  • 我用jarsigner比较了我本地APK的签名密钥和发布的APK,它们是相同的。
  • 我收回这一点:请参阅我关于 Play 应用签名的问题段落。
【解决方案3】:

有一个名为“lucky patcher”的实用程序,它修改应用程序代码以允许绕过应用程序购买(是的,它用于盗版,但我很确定绕过你自己的应用程序不是盗版)。您可以尝试使用它来测试您的应用。

如果你还没有,一旦你完成了,按照这个来防止它:Lucky patcher, how can I protect from it?

【讨论】:

    猜你喜欢
    • 2011-07-12
    • 2021-01-17
    • 2012-12-01
    • 2013-01-20
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    • 2015-07-10
    • 2013-03-31
    相关资源
    最近更新 更多