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!
我怎么了??
我希望我能回答这个问题,并且能够为您提供帮助,但是如果此回答不能帮助您,请显示一些代码,也许这是一个简单的编码问题。
我很长时间以来都遇到过类似的问题,我所有的许可应用程序都无法正常工作(对我来说,但从未得到用户的负面回应)。我发现了两件事:首先,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注意到了这些更改,它才起作用。
我也经常经常出乎意料的ERROR_NOT_MARKET_MANAGED
。我的问题是我使用主要的开发人员Gmail地址作为测试帐户,而我的应用是付费应用。
要解决我的问题:-我必须创建第二个Gmail帐户,-将其添加到我的测试人员列表中((单击Google Play开发者帐户上的“设置”以显示正确的屏幕),-将新的Gmail帐户添加到您要测试的移动设备上的帐户列表中,-然后删除您在设备上拥有的应用程序的任何版本,-然后使用通过Google Play下载进行加载。
[当您点击Google Play来启动它(触摸“玩游戏”)]时,您会在屏幕左上方看到您在Google Play中拥有的Gmail帐户。将其更改为您的新测试帐户。现在,您可以下载付费应用程序((您在完成所有操作之前都不会让您)]和(希望),您将不再获得ERROR_MARKET_MANAGED
。
您怎么可能遇到此错误?大致有3种方式。
LicenseChecker
的checkAccess
中,该行之后:if (bindResult) {
你已经把线:System.println("good bind");
并在方法的LicenseValidator
中验证您已放置:System.out.println("signature verified");
在该行之前:} catch (NoSuchAlgorithException e) {
确保您已使用新版本号,上传到Alpha版,稍等片刻,然后运行。如果你看到:良好的绑定签名已验证
在跟踪输出中,您得到的错误是ERROR_NOT_MARKET_MANAGED
,那么我想您已经触发了这个特殊问题。
LicenseValidator
中进行验证,则输入:System.out.println("begin verify call:" + responseCode);
在ResponseData data = null;
之后>然后运行,然后您会看到:
开始验证电话:561
那么您可能会遇到这个问题。
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
然后准备运行然后查看
结果:应用程序错误:3
那么您可能会遇到这个问题。
导致遇到的一件特别令人讨厌的事情是,当您将此应用的测试响应设置为"respond normally"
以外的任何其他值时,您的应用的行为就像是完美响应,以匹配当前设置的许可证响应。但是..当您将测试响应设置为"respond normally"
时,您将始终得到ERROR_NOT_MARKET_MANAGED
((如果该应用程序已付费,并且您正尝试在测试设备上使用您的主要Gmail帐户) 。