Android许可证测试响应-永远不起作用



我一直在开发一款已经发布到Google Play的Android应用程序。对于下一次更新(版本代码=3),我的客户希望包括LVL许可方案。

我做的第一件事是从许可服务器设置一个静态测试响应。我将测试响应设置为许可。阅读文档后:

此许可证测试响应将使用[我的电子邮件地址]发送到设备或上面列出的您已上传到Google Play的应用程序的测试帐户。>此外,此帐户(但不是测试帐户)将收到尚未上传到Google Play的>应用程序的响应。

我想,没问题,因为我的开发者帐户电子邮件与我的测试设备上的Google Play帐户电子邮件相同。因此,我应该在调试应用程序时收到测试响应。

之后,我阅读了所有其他许可文档和示例代码,并将其集成到应用程序中。我使用了一个ServerManagedPolicy,其中包含正确的base64公钥和20个随机生成的字节作为salt。

一旦一切看起来都很好,我就把它上传到设备上进行测试,但我并没有收到预期的许可响应,而是总是收到NOT_LICENSED的响应。我回去确保:

  1. 我连接到了互联网
  2. 我在Google Play上登录了我的开发者帐户
  3. LicenseChecker使用了正确的公钥
  4. 正在清除我的Google Play缓存

起初,我认为这可能与缓存有关,所以我尝试使用StrictPolicy。同样的回应。由于我没有从商店购买该应用程序,我的印象是授权服务器响应正常,而不是发送静态测试响应。以下是我尝试过的其他一些东西:

  1. 等待24小时后重试
  2. 尝试使用android调试密钥以及当前分发密钥构建应用程序
  3. 在Google Play上设置和使用不同的测试用户帐户。我确保将此电子邮件帐户添加到开发人员控制台的"测试帐户"部分
  4. 将APK上传到Google Play,但不发布
  5. 将版本代码从2增加到3。这很有趣,因为它没有响应NOT_LICENSED,而是返回"应用程序错误代码">error_NOT_MARKET_MANAGED

这让我相信许可证服务器总是正常响应,而不是将我设置的静态测试响应发送到我的开发人员帐户。我有一种感觉,这可能是因为应用程序已经发布,但我不能冒险发布调试版本来测试它是否有效。

以前有人遇到过这种情况吗?非常感谢您的帮助。

我遇到了同样的问题,但还是解决了1) 在我的设备上,我删除了除了我配置的测试帐户之外的所有谷歌帐户。显然,play商店仍在尝试使用非测试帐户。

2) 我不得不为我的开发人员帐户激活测试状态,尽管我是主要的开发人员和唯一的测试人员。

版本增量的事情没有帮助,老实说是分散了注意力。。。。。

我花了几个小时甚至几天的时间处理同样的问题,这里和其他地方都有记录,预发布的许可证测试是偶然的,而且我发现的错误比偶然的多。

我发现,让它"更可靠"(但仍然不完全可靠)工作的唯一方法是拥有一个重置为出厂默认值的硬件设备,然后将其PRIMARY谷歌用户设置为与您上传应用程序进行测试的开发帐户相同的用户。

特殊的AVD也不是很可靠。

在使用LVL库进行测试时,我也遇到了同样的问题。无论我在设置页面中将License Test response设置为什么,我都会得到561(0x231 NOT_LICENSED)响应。

我的付费应用程序用户似乎没有抱怨,所以我认为LVL正在为他们工作。

起初,我的一个应用程序出现了这个问题,1天后就消失了(2012年12月30日发布),现在我在该应用程序中得到了有效的测试响应。

然而,我仍然得到了更新应用程序(2013年1月31日发布)的561(0x231 NOT_LICENSED)响应

所以现在我只是在发布APK后注释掉(禁用561弹出的警报对话框代码),并继续为下一个版本进行开发。

我在再次发布之前取消评论(启用警报对话框代码)!

我联系了Google Play,他们推荐我去他们的开发者论坛。我在那里发了同样的问题,但后来我找不到我的帖子了。

很高兴知道我不是唯一一个面临这个问题的人。

我不确定我是否在添加任何新内容,但在应该发生的事情和正在发生的事情上有类似的问题和挫折,我会提供这个似乎有效的方法:1)删除Play控制台的许可证测试用户列表中的所有用户;2) 无论你正在测试什么设备,都会删除所有的谷歌帐户;3) 在同一设备上创建新的、唯一的Google帐户(例如。,iamalicensetester@gmail.com);4) 将该Google帐户添加到Play Console许可证测试用户列表中。

我认为可能发生的情况是,如果你在一台设备上有多个帐户,并且其中一个帐户获得了许可,那么同一台设备(或其他设备)的非许可帐户将继承该特性。我的这个想法只是一个模型(所有的模型都是错误的,但有些是有用的),(主要)让我回到测试工作。。。以及(部分)有办法向自己解释这种无稽之谈。

我确实试过上面提到的大部分东西。。。清除缓存、存储等等——你可能会认为谷歌想要一个更好的带有仪表板的设施,但不知道这是否在他们的雷达上。我的意思是,收入,对吧?

我也遇到了这个问题,我在这里给出了一些可以帮助您解决它的建议:

  1. 清除Google Play缓存->无关紧要
  2. 保管应用程序的签名密钥
  • 如果您将应用程序上传到Play商店,则必须使用密钥对其进行签名-确保这与您正在调试的应用程序也已签名的密钥相同
  1. 在Play控制台中,有两个地方可以配置测试响应-">测试许可证";部分用于所有应用程序和">应用程序完整性";应用程序特定页面下的部分。我的实验使我得出结论;应用程序完整性";设置的优先级高于所有应用程序的常规设置,甚至更高:常规设置根本不起作用。如果未设置完整性测试,则将其设置为licensed/not-licensed总是返回not licensed。然而,如果它们存在,则响应紧随其后(而不是来自一般部分的响应)

注意:应用程序完整性设置来自必须打开的integrity Developer API

最新更新