Flutter Android项目构建失败,遇重复类及资源文件冲突求解决
解决Flutter Android项目BouncyCastle依赖冲突构建失败问题
问题描述
- 任务
:app:checkDebugDuplicateClasses执行失败:在模块jetified-bcprov-jdk15on-1.65(org.bouncycastle:bcprov-jdk15on:1.65)和jetified-bcprov-jdk15to18-1.69(org.bouncycastle:bcprov-jdk15to18:1.69)中发现重复类org.bouncycastle.LICENSE - 任务
:app:mergeDebugJavaResource执行失败:发现多个文件具有独立于操作系统的路径org/bouncycastle/x509/CertPathReviewerMessages_de.properties
当前配置信息
Gradle全局配置(gradle.properties)
org.gradle.jvmargs=-Xmx1536M android.useAndroidX=true android.enableJetifier=true
Android构建参数
- 目标SDK版本:31
- 编译SDK版本:31
- Gradle插件版本:
com.android.tools.build:gradle:4.1.3
Flutter环境信息
Flutter 3.3.0 • channel stable • https://github.com/flutter/flutter.git Framework • revision ffccd96b62(4周前)• 2022-08-29 17:28:57 -0700 Engine • revision 5e9e0e0aa8 Tools • Dart 2.18.0 • DevTools 2.15.0
解决方案
这类问题是BouncyCastle不同版本依赖冲突导致的,可通过以下方式解决:
方法1:强制统一BouncyCastle依赖版本
打开android/app/build.gradle,在android代码块外部添加如下配置,强制所有依赖使用同一版本的BouncyCastle库:
configurations.all { resolutionStrategy { force 'org.bouncycastle:bcprov-jdk15to18:1.69' // 若存在其他关联依赖冲突,可补充对应force规则 force 'org.bouncycastle:bcpkix-jdk15to18:1.69' } }
方法2:排查并排除冲突依赖
先执行命令查看项目依赖树,定位引入旧版本BouncyCastle的模块:
./gradlew app:dependencies
找到依赖bcprov-jdk15on:1.65的来源模块后,在该模块的依赖声明中排除冲突库。例如若为某Flutter插件引入,在android/app/build.gradle的dependencies块中修改:
implementation('插件对应的依赖路径') { exclude group: 'org.bouncycastle', module: 'bcprov-jdk15on' }
方法3:清理构建缓存后重试
执行以下命令清理缓存,再重新构建项目:
flutter clean ./gradlew clean flutter pub get flutter run
内容的提问来源于stack exchange,提问作者Surya Teja
相关产品推荐
相关产品推荐

