Flutter构建报错:bouncycastle类重复问题解决咨询
解决Flutter中「Duplicate class found」(BouncyCastle重复依赖)问题
问题重现
添加外部依赖后构建报错,核心错误是BouncyCastle类重复:
Duplicate class org.bouncycastle.LICENSE found in modules jetified-bcprov-jdk15on-1.68 (org.bouncycastle:bcprov-jdk15on:1.68) and jetified-bcprov-jdk18on-1.71 (org.bouncycastle:bcprov-jdk18on:1.71) Duplicate class org.bouncycastle.asn1.ASN1ApplicationSpecific found in modules jetified-bcprov-jdk15on-1.68 (org.bouncycastle:bcprov-jdk15on:1.68) and jetified-bcprov-jdk18on-1.71 (org.bouncycastle:bcprov-jdk18on:1.71) Duplicate class org.bouncycastle.asn1.ASN1ApplicationSpecificParser found in modules jetified-bcprov-jdk15on-1.68 (org.bouncycastle:bcprov-jdk15on:1.68) and jetified-bcprov-jdk18on-1.71 (org.bouncycastle:bcprov-jdk18on:1.71)
之前尝试的android.jetifier.ignorelist = pass等配置无效,因为问题根源是两个不同版本的BouncyCastle包被不同依赖引入,导致类路径冲突,和Jetifier无关。
解决步骤
定位冲突依赖来源
先搞清楚是哪个第三方依赖带进来了重复的BouncyCastle包:flutter pub deps --tree | grep -i bouncycastle执行后会看到依赖树里的bouncycastle条目,找到引入旧版(1.68)或新版(1.71)的上游依赖。
排除冲突的子依赖
在pubspec.yaml中,给对应的上游依赖添加exclude规则,去掉重复的包。比如如果是xxx_sdk引入了旧版的bcprov-jdk15on,就这么写:dependencies: xxx_sdk: ^1.0.0 exclude: - org.bouncycastle:bcprov-jdk15on强制统一依赖版本(备选方案)
如果排除子依赖后出现其他报错,直接在Android端强制指定BouncyCastle的版本:
打开android/build.gradle,在allprojects块里添加版本强制规则:allprojects { repositories { // 保留原有仓库配置(google()、mavenCentral()等) } configurations.all { resolutionStrategy { // 强制使用高版本的jdk18on包,替换所有冲突版本 force 'org.bouncycastle:bcprov-jdk18on:1.71' } } }清理缓存重新构建
做完以上配置后,必须清理缓存避免残留:flutter clean flutter pub get cd android && ./gradlew clean cd .. && flutter run
内容的提问来源于stack exchange,提问作者deepak
相关产品推荐
相关产品推荐

