Android InAppBilling - 无效的密钥规范例外

时间:2015-03-12 04:26:49

标签: android in-app-billing

我一直致力于一个具有非常基本的InAppBilling需求的应用程序(用户可以购买1次升级到该应用程序)。我在测试期间碰到了一个令我感到困惑的问题。

使用android.test.purchase成功测试后,我继续使用真实项目进行测试(作为控制台中的许可证测试人员)。我成功购买了这件物品。

然后我重新启动了应用程序 - 只有当我调用" queryInventoryAsync"

时才会遇到错误
03-12 14:22:51.795  15607-15632/com.mybodyjourney.mybodyjourney E/IABUtil/Security﹕ Invalid key specification.
03-12 14:22:51.795  15607-15632/com.mybodyjourney.mybodyjourney W/dalvikvm﹕ threadid=11: thread exiting with uncaught exception (group=0x4193dce0)
03-12 14:22:51.825  15607-15632/com.mybodyjourney.mybodyjourney E/AndroidRuntime﹕ FATAL EXCEPTION: Thread-1176
Process: com.mybodyjourney.mybodyjourney, PID: 15607
java.lang.IllegalArgumentException: java.security.spec.InvalidKeySpecException: java.lang.RuntimeException: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
        at com.mybodyjourney.mybodyjourney.util.Security.generatePublicKey(Security.java:91)
        at com.mybodyjourney.mybodyjourney.util.Security.verifyPurchase(Security.java:71)
        at com.mybodyjourney.mybodyjourney.util.IabHelper.queryPurchases(IabHelper.java:869)
        at com.mybodyjourney.mybodyjourney.util.IabHelper.queryInventory(IabHelper.java:544)
        at com.mybodyjourney.mybodyjourney.util.IabHelper.queryInventory(IabHelper.java:522)

这是在没有更改代码库之后。

然后我将相同的代码部署到不同的设备。第一次运行它运行正常(没有错误),并通知我,我已经购买了该项目(这是正确的)。

然后我在第二台设备上关闭并重新打开了应用程序,并立即遇到与原始设备相同的错误。

任何帮助都将非常感谢,因为我无法找到任何在线成功解决此问题的人。

1 个答案:

答案 0 :(得分:2)

事实证明我在我的代码中犯了一个错误(惊喜)。我犯的错误是在我的公钥字符串的定义中(我已经在已编码的字符串上运行了Base64.encode)。

让我感到震惊的事实是,直到我第一次真正推出一个项目 - Google的服务全部采取行动并完美地完成。它从来没有抱怨过钥匙。

这表明在第一次购买之前,开发者帐户尚未最终确定某些内容?

无论哪种方式,现在一切都已解决。