Android许可测试响应始终响应ERROR_NOT_MARKET_MANAGED

问题描述 投票:-2回答:2

1。我在Google Play上创建了应用标题。

我使用Google的LVL库创建了一个应用程序。我使用用于登录Google Play开发者控制台的帐户登录Android设备。

LicenseChecker使用的是正确的公钥(来自Google Play应用的许可证密钥)。清除我的Google Play缓存。没有上载应用程序,但是许可证服务器需要在许可证测试设置页面上回答我的设置,不是吗?

当我运行应用程序时,许可证服务器始终响应3(ERROR_NOT_MARKET_MANAGED)。

我等待24小时,但什么都没发生,响应为3。

我将应用程序(相同的版本代码)上传到Google Play,但未发布。

我再次等待24小时,但什么都没有发生,响应为3。

WTF:)

好的,刚开始,然后逐步:

我根据android sdk许可示例创建了一个应用。LVL版本为2。

我在Google Play上创建了标头。

一个BASE64_PUBLIC_KEY来自Google Play应用许可的示例重写。我使用发布者帐户登录了Android设备(恢复出厂设置后)

此示例返回3!

我怎么了??

java android android-lvl
2个回答
0
投票

我希望我能回答这个问题,并且能够为您提供帮助,但是如果此回答不能帮助您,请显示一些代码,也许这是一个简单的编码问题。

我很长时间以来都遇到过类似的问题,我所有的许可应用程序都无法正常工作(对我来说,但从未得到用户的负面回应)。我发现了两件事:首先,eclipse总是在我的库项目中显示错误。这在我许可的apk上引起警告,该库的引用无效。过去,我只是清除了“问题”的历史,然后才起作用。我所看到的是,在库清单中包含了targetSdk:

    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="17"/>

但是库项目不支持标签targetSdkVersion,因此我将其删除:

    <uses-sdk android:minSdkVersion="3" />

此后,错误消失了,所有许可的项目似乎都不错。第二个问题是,由于一段时间以来,不再支持将应用程序另存为草稿,如此处所述:

http://developer.android.com/google/play/billing/billing_testing.html#draft_apps

因此,您要做的是,将您的apk上传到控制台内的alpha或beta测试并发布。只要您将权限授予某些Google小组进行测试,就无法从其他人中看到此应用。我将控制台内的响应再次设置为LICENSED并保存了。等了一段时间(最多24小时),直到Google Play注意到了这些更改,它才起作用。


0
投票

我也经常经常出乎意料的ERROR_NOT_MARKET_MANAGED。我的问题是我使用主要的开发人员Gmail地址作为测试帐户,而我的应用是付费应用。

要解决我的问题:-我必须创建第二个Gmail帐户,-将其添加到我的测试人员列表中((单击Google Play开发者帐户上的“设置”以显示正确的屏幕),-将新的Gmail帐户添加到您要测试的移动设备上的帐户列表中,-然后删除您在设备上拥有的应用程序的任何版本,-然后使用通过Google Play下载进行加载。

[当您点击Google Play来启动它(触摸“玩游戏”)]时,您会在屏幕左上方看到您在Google Play中拥有的Gmail帐户。将其更改为您的新测试帐户。现在,您可以下载付费应用程序((您在完成所有操作之前都不会让您)]和(希望),您将不再获得ERROR_MARKET_MANAGED

您怎么可能遇到此错误?大致有3种方式。

  1. 让我们假设在方法LicenseCheckercheckAccess中,该行之后:if (bindResult) {你已经把线:System.println("good bind");并在方法的LicenseValidator中验证您已放置:System.out.println("signature verified");在该行之前:} catch (NoSuchAlgorithException e) {确保您已使用新版本号,上传到Alpha版,稍等片刻,然后运行。如果你看到:

    良好的绑定签名已验证

  2. 在跟踪输出中,您得到的错误是ERROR_NOT_MARKET_MANAGED,那么我想您已经触发了这个特殊问题。


  1. 如果在方法LicenseValidator中进行验证,则输入:System.out.println("begin verify call:" + responseCode);ResponseData data = null;之后>

    然后运行,然后您会看到:

  2. 开始验证电话:561

那么您可能会遇到这个问题。


  1. 如果在DEBUG_LICENSE_ERROR中将LicenseChecker设置为true,并且无论在何处将applicationError放入LVL初始化代码中,您都可以放置:String result = String.format("Application error: %1$s", errorCode); System.out.println("result:" + result); //or display it on screen using a Toast

    然后准备运行然后查看

  2. 结果:应用程序错误:3

那么您可能会遇到这个问题。


导致遇到的一件特别令人讨厌的事情是,当您将此应用的测试响应设置为"respond normally"以外的任何其他值时,您的应用的行为就像是完美响应,以匹配当前设置的许可证响应。但是..当您将测试响应设置为"respond normally"时,您将始终得到ERROR_NOT_MARKET_MANAGED ((如果该应用程序已付费,并且您正尝试在测试设备上使用您的主要Gmail帐户) 。

© www.soinside.com 2019 - 2024. All rights reserved.