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

Gradle升级至8.1后签名构建缺失类问题求助

Gradle升级至8.x后签名构建缺失类问题

报错信息

Missing class com.google.devtools.build.android.desugar.runtime.ThrowableExtension 
(referenced from: java.lang.String 
io.agora.base.internal.Logging.getStackTraceString(java.lang.Throwable) and 18 other 
contexts)

Missing class reactor.blockhound.integration.BlockHoundIntegration (referenced from: 
reactor.core.scheduler.ReactorBlockHoundIntegration)

已尝试的操作

  • 升级Agora SDK至4.2.6
  • 更新Android Gradle插件到com.android.tools.build:gradle:8.2.0
  • 升级org.jetbrains.kotlinx:kotlinx-coroutines-reactor到1.7.1

当前ProGuard规则

-keepclassmembers,allowobfuscation class * {
    @com.google.gson.annotations.SerializedName <fields>;
}
-keep,allowobfuscation interface com.google.gson.annotations.SerializedName
# for glide
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public class * extends com.bumptech.glide.module.AppGlideModule
-keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
  **[] $VALUES;
  public *;
}


# for eventbus
-keepattributes *Annotation*
-keepclassmembers class * {
    @org.greenrobot.eventbus.Subscribe <methods>;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }

# And if you use AsyncExecutor:
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
    <init>(java.lang.Throwable);
}



-useuniqueclassmembernames

# These options produce useful stacktraces preserving line numbers
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable

# Pdf viewer
-keep class com.shockwave.**
-keep class com.media365ltd.doctime.networking.retrofit_latest.**

#agora
-keep class io.agora.**{*;}


# Amazon Chime
-keep class com.amazonaws.** { *; }# JSR 305 annotations are for embedding nullability information.
-dontwarn javax.annotation.**

                                   # A resource is loaded with a relative path so the package of this class must be preserved.
                                   -adaptresourcefilenames okhttp3/internal/publicsuffix/PublicSuffixDatabase.gz

                                   # Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java.
                                   -dontwarn org.codehaus.mojo.animal_sniffer.*

                                   # OkHttp platform used only on JVM and when Conscrypt and other security providers are available.
                                   -dontwarn okhttp3.internal.platform.**
                                   -dontwarn org.conscrypt.**
                                   -dontwarn org.bouncycastle.**
                                   -dontwarn org.openjsse.**


# Adjust
-keep class com.adjust.sdk.** { *; }
-keep class com.google.android.gms.common.ConnectionResult {
    int SUCCESS;
}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient {
    com.google.android.gms.ads.identifier.AdvertisingIdClient$Info getAdvertisingIdInfo(android.content.Context);
}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info {
    java.lang.String getId();
    boolean isLimitAdTrackingEnabled();
}
-keep public class com.android.installreferrer.** { *; }

解决方案建议

处理ThrowableExtension缺失问题

这个类属于Android Desugar工具链,Gradle 8.x默认启用R8全面优化模式,容易误删Desugar相关类。在ProGuard规则中添加:

-keep class com.google.devtools.build.android.desugar.runtime.** { *; }
-dontwarn com.google.devtools.build.android.desugar.runtime.**

同时检查项目的Desugar配置是否正确,确保启用核心库Desugar:

android {
    compileOptions {
        coreLibraryDesugaringEnabled true
    }
}

dependencies {
    coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'
}

处理BlockHoundIntegration缺失问题

BlockHound主要用于调试阶段检测阻塞调用,release构建中一般不需要。可以添加ProGuard规则忽略该类:

-dontwarn reactor.blockhound.integration.**
-keep class reactor.blockhound.integration.** { *; }

如果确认项目不需要BlockHound功能,也可以直接从依赖中排除:

configurations.all {
    exclude group: 'io.projectreactor.tools', module: 'blockhound'
}

额外排查点

  1. 核对Agora SDK 4.2.6的官方文档,确认其对Gradle 8.x的兼容性
  2. 执行./gradlew app:dependencies生成依赖树,检查是否存在reactor或Desugar相关的依赖冲突,排除旧版本依赖

内容的提问来源于stack exchange,提问作者Shakib Uz-Zaman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 00:36:19