是否可以在 Android Studio 中本地调试 Google Play 的应用内计费?
Posted
技术标签:
【中文标题】是否可以在 Android Studio 中本地调试 Google Play 的应用内计费?【英文标题】:Is it possible to debug locally Google Play's in-app billing in Android Studio? 【发布时间】:2016-07-06 22:01:18 【问题描述】:我在本地测试应用内订阅产品时收到此错误消息。
需要验证。您需要登录您的 Google 帐户
我可以查看产品的库存,但我不应该也可以购买吗?
有很多关于为什么会发生此错误的帖子,我认为这些帖子已得到解决:
产品在 Beta 渠道中发布并启用了应用内结算 我已在设备上使用测试用户许可帐户登录 Play 商店。是通过 beta/alpha 渠道测试实际购买的唯一方法 - 不是直接来自 android studio。这篇文章表明它是可能的(见屏幕截图)
http://developer.android.com/google/play/billing/billing_testing.html#billing-testing-test
【问题讨论】:
【参考方案1】:我假设,当您初始化“计费助手”时,您会从开发者控制台向它提供一个 Base64 公钥。该密钥对应于您的发布证书。
您收到的消息表明您可能正尝试在调试模式下运行您的应用程序。这意味着,您的应用程序使用调试证书(默认证书)进行签名。如果我是对的,这就解释了为什么您没有通过身份验证。
不幸的是,测试应用内结算的唯一方法是在使用发布证书签名的应用中,在设备上登录帐户,该帐户定义为“具有测试访问权限的 Gmail 帐户”,并且您的应用具有发布到 Google Play(alpha/beta/production)。
【讨论】:
所有勾选的框都是调试模式开关。我正在使用从应用程序控制台获取的 api 密钥。在这个调试开关上我错过了一些谷歌信息吗?我发布的链接表明该链接的“静态响应测试”部分不需要这些。 我如何实际切换(使用 android studio)到发布模式以在本地调试? (听起来不对) 在构建类型(调试/发布)之间切换只需单击“构建变体”面板(参见此处的图 2:developer.android.com/tools/building/configuring-gradle.html)。但这并不能保证自动签名。查看此链接:developer.android.com/tools/publishing/app-signing.html 以阅读有关在发布模式下登录的信息。简而言之,如果您有一个现有的密钥库文件,您可以在 Gradle 构建脚本中指定它。否则,请使用小部件(构建 > 生成签名的 APK)。【参考方案2】:编辑:这现在被新接受的答案所取代。
本质上,应用内结算付款只能使用发布签名的 apk(我们上传到 Google Play 管理中心的那个)进行测试。
这里有一些步骤让我连接到带有Android Studio
的签名 apk:
我在 Windows 上。它有助于在 PATH 中添加 adb.exe
,对我来说:
C:\Users你的用户名\AppData\Local\Android\sdk\platform-tools
-
在 Google Play 管理中心中,确保应用在 alpha 或 beta 通道中发布(
具有以下设置:
在
AndroidManifest.xml
下application
节点
android:debuggable="true" tools:ignore="HardcodedDebugMode"
注意:
可能,您需要在清单标签中添加:xmlns:tools="http://schemas.android.com/tools"
属性。它可能看起来像:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="your.package"
xmlns:tools="http://schemas.android.com/tools">
然后在android > buildTypes > release
下的build.gradle
文件中,添加:
debuggable true
从 Android Studio 生成签名的 APK
连接您的设备以进行 USB 调试。删除当前安装:
adb uninstall yourdomain.yourpackagename
-
安装它(从发布路径)
adb install app-release.apk
-
在设备上打开应用程序。在 Android Studio 的
Run
菜单中,最后一个选项是“将调试器附加到 Android 进程” - 选择您的设备。您现在正在调试。
注意对于应用内结算,内部版本号需要与当前在 Play 商店中发布的版本号相匹配
【讨论】:
Play 商店不允许调试 true @SteveMcMeen 您在成功部署到应用商店后在本地进行这些临时更改... 按照您的指示,我实际上可以调试发布签名的 apk,这很棒,但应用内计费不起作用,提示我:Error retrieving information from server. [DF-RPC-01]
。当我直接从 Play 商店(作为 alpha 测试人员)安装 apk 时,它确实有效,但我当然无法调试。版本号是一样的。有什么想法吗?我不知道实现应用内购买会如此令人沮丧:/
谢谢!已验证这是最干净的解决方法。
其实我只是在build.gradle
的发布版本中添加了debuggable true
,并删除了'minifyEnabled
,然后我就可以调试发布版本了【参考方案3】:
也许是另一种方法:
在大多数方面与此处提到的内容类似,只是您只需在调试 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'
并将签名配置添加到您的调试 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
2) 确保您的应用 gradle > defaultConfig
部分中的 versionCode
和 versionName
与您上传到 Play 商店的 apk 中的内容完全匹配:
defaultConfig
applicationId "com.groovypackagename.groovyapp"
minSdkVersion 16
targetSdkVersion 24
versionCode 56
versionName "0.9.6"
multiDexEnabled true
resConfigs "en"
3) 确保将计费权限添加到您的清单中:
<uses-permission android:name="com.android.vending.BILLING" />
4) 不要忘记根据文档添加您的 IAB(应用内结算)产品
5) 设置断点并照常进行调试。
6) 成功欺骗代码后,请不要忘记至少清理 gradle 文件中的更改,例如删除签名配置,这样您的 kestore 密码就不会在空间中浮动。
如果运气好的话,您将能够对您的 IAB 代码进行本地调试。
干杯。
【讨论】:
【参考方案4】:以下内容对我从我的 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 年,这是这个问题的最佳答案。 我第二个@frodo2975。好朋友 它在“帐户详细信息”下,供其他人丢失。然后是副标题“许可证测试”。然后,您可以将电子邮件添加到空白输入文本区域。 这是最好的答案。即使在调试版本中,用户也可以购买,如果测试设备上的 google play store 主要电子邮件在 google play 开发人员控制台中注册为许可证测试人员。谢谢! 如何取消测试购买?【参考方案5】:是的,刚刚试了一下,效果很好,认为它可以帮助某人节省时间。
一旦您上传您的应用程序进行封闭测试,然后您进行更改并再次上传是一项繁琐的任务。在对这种重复感到沮丧之后,我在official documentation
下找到了这个通常,对于未签名并上传到 Google Play 的应用,Google Play 结算库会被屏蔽。许可测试人员可以绕过此检查,这意味着您可以旁加载应用程序进行测试,即使是使用带有调试签名的调试版本的应用程序无需上传到您的应用程序的新版本。请注意,包名称必须与为 Google Play 配置的应用程序名称匹配,并且 Google 帐户必须是 Google Play 控制台帐户的许可证测试员。
Ergo,作为 alpha 测试的结果,我添加了一个电子邮件帐户列表作为测试人员和许可。我使用相同的发布密钥库运行代码,并且计费工作与 alpha 测试完全一样。
只需确保在新的 Play 管理中心 中添加您的测试电子邮件以获取许可。
取决于您的应用内结算的用例,但请确保已设置购买项目
【讨论】:
@2021 朗:颤振。这一步就足够了,无需修改您的 xml 文件或 build.gradle 文件。就我而言,我的手机 playotre 应用程序中有 3 个 gmail 帐户。所以我在设置>许可证测试下添加了所有 3 个帐户。然后错误就消失了。以上是关于是否可以在 Android Studio 中本地调试 Google Play 的应用内计费?的主要内容,如果未能解决你的问题,请参考以下文章