是否可以在Android Studio中本地调试Google Play的应用内结算?

jen*_*ent 20 android in-app-purchase in-app-billing google-play android-studio

我在本地测试应用内订阅产品时遇到此错误.

验证是必需的.您需要登录您的Google帐户

我能够检查产品的库存但不应该也能购买它吗?

有很多帖子说明为什么会出现这个错误,我认为这个问题得到解决:

  • 该产品已在测试版渠道发布,并启用了应用内结算功能
  • 我使用设备上的测试用户许可帐户登录Play商店.

是通过beta/alpha频道测试实际购买的唯一方法 - 不是直接来自android studio.这篇文章表明它有可能(见屏幕截图)

http://developer.android.com/google/play/billing/billing_testing.html#billing-testing-test

jen*_*ent 46

实质上,应用内结算付款只能使用已发布签名的apk(我们上传到Google Play控制台的apk)进行测试.

以下是一些让我附加到已签名的apk的步骤Android Studio:

我在Windows上.它有助于adb.exe在PATH中,对我而言:

C:\用户{您的户名} \应用程序数据\本地\ Android的\ SDK \平台工具

  1. 在Google Play控制台中,确保在Alpha或测试版渠道中发布应用程序(<初始处理后的一次性手动步骤),并且您还拥有一个许可的测试gmail帐户(来自"帐户设置"部分),该帐户也在列表中alpha/beta测试者并且不是应用帐户的所有者.此帐户是设备上唯一的帐户.释放apk并确保它全部来自Play商店的已安装版本.
  2. 有这些设置:在AndroidManifest.xml以下application节点
android:debuggable="true"
tools:ignore="HardcodedDebugMode"
Run Code Online (Sandbox Code Playgroud)

在您的xmlns:tools="http://schemas.android.com/tools"文件下build.gradle,添加:

android > buildTypes > release

  1. 从Android Studio生成已签名的APK

  2. 连接设备进行USB调试.删除当前安装:

debuggable true

  1. 安装它(从发布路径)

adb uninstall {yourdomain}.{yourpackagename}

  1. 在设备上打开应用程序.从Android Studio的adb install app-release.apk菜单中,最后一个选项是"将调试器附加到Android进程" - 选择您的设备.你现在正在调试.

对于应用内结算的NB,内部版本号需要与Play商店中当前发布的版本号相匹配

  • Play 商店不允许 debuggable true (3认同)
  • 我实际上只在`build.gradle`中的发布版本中添加了`debuggable true`并删除了'`minifyEnabled`,然后我就能够调试发布版本 (3认同)
  • 按照您的说明进行操作后,我实际上可以调试发布签名的 apk,这很棒,但是应用内计费不起作用,提示我:`从服务器检索信息时出错。[DF-RPC-01]`。当我直接从 Play 商店(作为 alpha 测试人员)安装 apk 时,它确实有效,但当然我无法调试。版本号是一样的。有什么想法吗?我不知道实施应用内购买会如此令人沮丧:/ (2认同)

Mit*_*ton 31

以下为我从我的 IDE (Android Studio) 启动

1) 转到您的https://play.google.com/apps/publish/ 在“开发者”帐户/设置/帐户详细信息/许可证测试下

2) 添加与您正在测试的设备对应的“默认 Google Play”电子邮件地址

资料来源:https : //engineering.memrise.com/faster-in-app-billing-subscriptions-testing-8e68551b4e2f

  • 2020年,这是这个问题的最佳答案。 (13认同)

Mir*_*han 9

是的,刚刚尝试过,它有效,认为它可以帮助别人节省时间。

一旦您上传应用程序进行封闭测试,然后进行更改并再次上传是一项繁琐的任务。经过这次重复的挫败之后,我在官方文档下找到了这个

通常情况下,Google Play 结算库会阻止未签名并上传到 Google Play 的应用程序。许可证测试人员可以绕过此检查,这意味着您可以旁加载应用程序进行测试,即使对于使用带有调试签名的调试版本的应用程序,也无需上传到应用程序的新版本。请注意,程序包名称必须与为 Google Play 配置的应用程序的名称匹配,并且 Google 帐户必须是 Google Play Console 帐户的许可证测试人员。

因此,作为 alpha 测试的结果,我添加了一个作为测试人员和许可的电子邮件帐户列表。我使用相同的版本密钥库运行代码,计费方式与 alpha 测试中完全相同。

只需确保在新的Play Console中添加用于许可的测试电子邮件即可。

Play 控制台屏幕截图

取决于您的应用内结算的用例,但确保有设置的购买项目播放控制台应用内产品


小智 8

也许另一种方法:

在大多数情况下,这里的内容与此处提到的内容相似,只是您仅指向调试buildType中的发布密钥库。

确切步骤:1)在您的应用Gradle文件中的android标记中,添加发布签名配置:

signingConfigs {
        release {
            storeFile file("Path_to_your_Production_release_Keystore.jks")
            storePassword 'your_keystore_password'
            keyAlias 'your_key_alias'
            keyPassword 'your_key_password'
        }
    }
Run Code Online (Sandbox Code Playgroud)

并将签名配置添加到调试buildType中:

buildTypes {
    release {
        shrinkResources true
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-project.txt', 'proguard-google-api-client.txt'
    }
    debug {
        signingConfig signingConfigs.release
        debuggable true
    }
}
Run Code Online (Sandbox Code Playgroud)

2)确认versionCodeversionName在您的应用程序gradle这个> defaultConfig部分完全匹配什么在你上传到Play商店APK:

defaultConfig {
    applicationId "com.groovypackagename.groovyapp"
    minSdkVersion 16
    targetSdkVersion 24
    versionCode 56
    versionName "0.9.6"
    multiDexEnabled true
    resConfigs "en"
}
Run Code Online (Sandbox Code Playgroud)

3)确保将清单权限添加到清单中:

<uses-permission android:name="com.android.vending.BILLING" />

4)不要忘记根据文档添加您的IAB(应用内结算)产品

5)设置断点并按常规进行调试。

6)成功欺骗代码后,请不要忘记至少清理gradle文件中的更改,例如删除签名配置,以使kestore密码不会在空间中浮动。

运气好的话,您将可以对IAB代码进行本地调试。

干杯。