更新到最新版本 Google Play Billing Library (7.1.1) 后 Android 6/5 用户的例外情况

问题描述 投票:0回答:1

最近我已将我的应用程序更新到最新的 Google Play 计费库 (7.1.1)。之后,当使用 Android 6 和 5 的用户尝试启动计费流程时,我在 Firebase crashlytics 中看到多次崩溃: 致命异常:java.lang.NoSuchMethodError 无虚方法stream()Ljava/util/stream/Stream;在类 Ljava/util/AbstractCollection 中;或其超类(“java.util.AbstractCollection”的声明出现在 /system/framework/core-libart.jar 中)

com.android.billingclient.api.BillingFlowParams.zzq (com.android.billingclient:billing@@7.1.1:21) com.android.billingclient.api.BillingClientImpl.launchBillingFlow (com.android.billingclient:billing@@7.1.1:133)

enter image description here /** * Launch the billing flow */ public void launchBillingFlow(SkuDetails skuDetails) { Log.d(TAG, "launchBillingFlow()"); if (null != skuDetails) { BillingFlowParams.Builder billingFlowParamsBuilder = BillingFlowParams.newBuilder(); billingFlowParamsBuilder.setSkuDetails(skuDetails); BillingResult br = mBillingClient.launchBillingFlow(this, billingFlowParamsBuilder.build()); if (br.getResponseCode() == BillingClient.BillingResponseCode.OK) { mBillingFlowInProcess = true; } else { Log.d(TAG, "Billing failed: + " + br.getDebugMessage()); } } }

有人有同样的问题吗?也许这个问题有什么解决办法吗?

附注我在 proguard 文件中添加了以下内容,但没有帮助:

-保留类 com.android.vending.billing.**

android billing
1个回答
0
投票

问题追踪器中也报告了此问题,但尚未得到官方回应。

[Play Billing Library 7.1.1] launchBillingFlow() 不适用于 Android 6 (Marshmallow)
正如 @Robert 提到的,Play Billing Library 7.1.1 似乎使用从 Android 7 (Java 8) 开始可用的类。

幸运的是,我们有一台 Android 6 测试设备。我们通过打开 build.gradle.kts 中的脱糖选项进行了测试,如下所示,并确认问题已解决。

我认为这应该记录在 Play Billing Library 7.1.1 发行说明中。

build.gradle.kts

android { ... compileOptions { isCoreLibraryDesugaringEnabled = true } } dependencies { ... implementation( "com.android.billingclient:billing:7.1.1" ) coreLibraryDesugaring( "com.android.tools:desugar_jdk_libs:2.1.2" ) }

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