Flutter集成firebase_core 3.1.0时Android端编译重复类报错
问题场景
使用Android Studio开发Flutter项目,通过flutter pub add firebase_core安装firebase_core 3.1.0后,Android调试编译失败,触发CheckDuplicateClasses任务错误,提示多个Kotlin类在不同版本的标准库中重复存在(kotlin-stdlib:1.8.22与kotlin-stdlib-jdk7/jdk8:1.7.10),但Chrome调试无异常。
核心原因
项目依赖中同时引入了版本不一致的Kotlin标准库:高版本的kotlin-stdlib和低版本的kotlin-stdlib-jdk7/jdk8扩展库,两者包含重复类,引发编译冲突。Firebase相关依赖可能拉取了高版本Kotlin,而本地项目配置的低版本扩展库与之冲突。
解决方案
1. 强制统一所有依赖的Kotlin标准库版本
在项目根目录的build.gradle(非app模块下的文件)中添加版本强制规则,确保所有依赖使用同一版本的Kotlin库:
subprojects { configurations.all { resolutionStrategy { force "org.jetbrains.kotlin:kotlin-stdlib:1.8.22" force "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.22" force "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22" } } }
2. 同步Kotlin插件版本
打开Android Studio的File > Project Structure > Project,将Kotlin Plugin版本设置为与上述强制版本一致(如1.8.22),点击Apply同步项目。
3. 使用Firebase BOM统一版本(推荐)
通过Firebase BOM统一管理所有Firebase组件版本,避免版本冲突。在android/app/build.gradle的dependencies块中添加:
dependencies { implementation platform('com.google.firebase:firebase-bom:32.7.0') implementation 'com.google.firebase:firebase-core' // 其他Firebase依赖无需指定版本,由BOM自动管理 }
4. 清理缓存并重编译
执行以下命令清理Flutter和Gradle缓存,重新拉取依赖编译:
flutter clean flutter pub get ./gradlew clean build --refresh-dependencies
为什么Chrome调试无异常?
Web端依赖处理逻辑与Android端不同,Web环境不会引入Android平台的Kotlin标准库,因此不存在类重复冲突问题。
内容的提问来源于stack exchange,提问作者Gökhan Erkul

