当我使用android.test.purchased进行购买时,Google Play服务停止工作

10
Bundle buyIntentBundle = inappService.getBuyIntent(3, this.getPackageName(), "android.test.purchased", "inapp", "myUserId");
int responseCode = buyIntentBundle.getInt("RESPONSE_CODE");
if (responseCode == 0) {
   PendingIntent pendingIntent = buyIntentBundle.getParcelable("BUY_INTENT");
   this.startIntentSenderForResult(pendingIntent.getIntentSender(), PURCHASE_REQUEST_CODE, new Intent(), 0, 0, 0);
}

当我执行上面的代码时,似乎我的Google Play服务会停止运行(崩溃?)

这在几天前还能工作。但现在已经停止了。

你们知道我可以做什么吗?当我使用真实的产品和测试用户进行测试时,一切仍然正常。

下面是添加的堆栈跟踪。看起来它来自Google Play商店本身。

    07-21 14:28:51.172 18056-18224/? E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #4
                                                       Process: com.android.vending, PID: 18056
                                                       java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:318)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:762)
Caused by: java.lang.NullPointerException: Attempt to read from field 'long com.google.wireless.android.finsky.dfe.nano.an.b' on a null object reference
at com.google.android.finsky.billing.lightpurchase.s.a(SourceFile:5)
at com.google.android.finsky.billing.lightpurchase.h.doInBackground(SourceFile:27)
at android.os.AsyncTask$2.call(AsyncTask.java:304)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 
at java.lang.Thread.run(Thread.java:762) 

1
是的,我现在也有同样的问题。一周前还能用,但今天应用程序崩溃了。我没有找到任何解决方案,如更新谷歌播放等 :/ - MarsPeople
我也有同样的问题。我在两个设备上进行了测试,但没有运气。如果有人找到解决方案,请在这里发布。 - Harin Kaklotar
@HarinKaklotar 我认为我们应该等待“谷歌Play商店”的更新来解决“Play商店应用程序崩溃”问题。 - MarsPeople
@MarsPeople 我在华为平板和 Nexus 平板上测试我的应用程序,但在两者上都导致了 Google Play 商店崩溃 ;) - Harin Kaklotar
1
@Harin Kaklotar,我认为这与“手机型号”无关,而是“Play商店”的错误。我在S7、S3 Mini上进行了测试,当我购买“android.test.purchased”时,Play商店总是崩溃。 - MarsPeople
我也遇到了同样的问题,上个星期在任何 SKU 上都可以正常工作,但是自那时起,Playstore 不断崩溃并给出完全相同的错误消息。 我在 Nexus 5 和 Samsung s6 Edge 以及 HTC 上测试了这段代码,结果所有设备都会崩溃并给出完全相同的堆栈跟踪信息。 - theanilpaudel
2个回答

9

我联系了Google开发支持,他们说这是“Google Play商店的一个bug”。

谷歌回复:

我们已经注意到了这个问题,我们的工程师正在调查中。 我会在第一时间内得到进一步的更新信息。

所以不需要对此崩溃做任何处理。只需等待 Google Play 商店应用程序的错误修复即可。


编辑(08.08.2017)

今天,“android.test.purchased”崩溃问题已经解决。 现在,Google Play商店应用程序版本为8.0.73.R-all [0] [PR] 162689464


1
根据@MarsPeople在评论中所说,这是由于Google Play商店的新更新(版本8.0.26.R-all [0] [PR] 161173660)引起的。我测试了大约3-4个装有此Google Play商店版本的设备,因此在该设备上,Google Play商店会崩溃并出现空指针异常,但是当我卸载更新并使用旧版本(如我的情况下的版本5.1.11)进行测试时,它可以完美运行,但是过一段时间后,Play商店会强制更新(版本8.0.26.R-all [0] [PR] 161173660),然后我再次尝试,然后Google Play商店就会崩溃。所以我们必须等待Google发布新的更新来解决这个问题 :)
但令人惊讶的是,它与从Google控制台提供的真正的SKU完美配合使用,而与测试SKU(android.test.purchased)不兼容。
我希望这能帮助那些在Google Play商店版本8.0.26.R-all [0] [PR] 161173660上遇到此问题的人。

1
我向Google开发者支持发送了一封关于这个bug的电子邮件。如果我们使用“真实SKU”,那么每次代码更改都需要对apk进行签名,这非常浪费时间 :/ 我们想要“android.test.purchased”回来! :) - MarsPeople

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接