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

升级JDK17与Gradle插件8.5后Android应用BC类找不到崩溃

异常信息
Caused by: java.lang.ClassNotFoundException: Didn't find class "org.bouncycastle.jce.provider.BouncyCastleProvider" on path: DexPathList[***]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
问题场景

将JDK版本升级至17、Gradle插件升级至8.5后,Android应用运行时执行以下代码创建BouncyCastleProvider实例时崩溃,抛出上述异常:

Security.addProvider(new BouncyCastleProvider());
当前依赖配置
dependencies {
     implementation "org.bouncycastle:bcprov-jdk15to18:1.78.1"
}
解决方案
  • 更换适配JDK17的BouncyCastle依赖
    将原依赖替换为兼容高版本JDK的包,bcprov-jdk18on适配JDK17及以上版本,修改依赖配置:

    dependencies {
         implementation "org.bouncycastle:bcprov-jdk18on:1.78.1"
    }
    
  • 启用Core Library Desugaring
    AGP 8.5搭配JDK17时,部分JDK核心类需要通过desugar处理才能在Android设备正常运行,在模块的build.gradle中添加以下配置:

    android {
        compileOptions {
            coreLibraryDesugaringEnabled true
            sourceCompatibility JavaVersion.VERSION_17
            targetCompatibility JavaVersion.VERSION_17
        }
    }
    
    dependencies {
        coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'
    }
    
  • 配置R8混淆规则(若开启混淆)
    如果应用启用了R8代码混淆,需确保BouncyCastle的类不被移除,在proguard-rules.pro中添加:

    -keep class org.bouncycastle.** { *; }
    -dontwarn org.bouncycastle.**
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 18:57:04