You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 6/5用户升级Google Play Billing Library7.1.1后计费流程崩溃求助

问题分析与解决方案

问题根源

这个崩溃的核心原因是Java 8的Stream API仅在Android 7.0(API 24)及以上系统原生支持,而Google Play Billing Library 7.1.1内部使用了stream()方法,Android 5/6(API 21-23)系统的java.util.AbstractCollection类不存在该方法,直接触发NoSuchMethodError。

解决方案

1. 启用Core Library Desugar(推荐方案)

通过Android的Desugar工具,可将Java 8核心库API转换为低版本Android兼容的字节码,从根本上解决API缺失问题。在Module级的build.gradle(或build.gradle.kts)中添加以下配置:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
        // 开启Desugar支持
        coreLibraryDesugaringEnabled true
    }

    // 若项目使用Kotlin,需同步配置JVM目标
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

dependencies {
    // 添加Desugar依赖库
    coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'
}

2. 更新ProGuard混淆规则

你之前配置的-keep class com.android.vending.billing.**是旧版Billing Library的包名,新版库的核心包为com.android.billingclient.api,需替换为:

-keep class com.android.billingclient.api.** { *; }
-keep interface com.android.billingclient.api.** { *; }

确保Billing Library的核心类与方法不会被混淆或移除。

3. 临时降级Billing Library版本(备选方案)

如果Desugar配置遇到阻碍,可暂时将Billing Library降级至6.x系列(例如6.1.0),该版本未使用Java 8 Stream API,天然兼容Android 5/6系统:

dependencies {
    implementation 'com.android.billingclient:billing:6.1.0'
}

内容的提问来源于stack exchange,提问作者porlicus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 11:21:08