Android项目接入Firebase与Dialogflow出现类重复冲突求助
解决方案
步骤1:修复重复依赖声明
你当前应用级build.gradle中重复声明了material依赖,先删除其中一个,保留稳定版本即可:
// 删掉这行重复的alpha版依赖 // implementation 'com.google.android.material:material:1.5.0-alpha02' // 保留稳定版即可 implementation 'com.google.android.material:material:1.4.0'
步骤2:替换适配Android平台的Dialogflow依赖
你当前使用的com.google.cloud:google-cloud-dialogflow:2.1.0是Java服务端SDK,内置的grpc、protobuf依赖和Firebase依赖的同库不同版本产生重复类冲突,换成Android端专用的Dialogflow依赖即可规避90%以上的冲突:
// 删掉原服务端Dialogflow依赖和grpc依赖 // implementation 'com.google.cloud:google-cloud-dialogflow:2.1.0' // implementation 'io.grpc:grpc-okhttp:1.30.0' // 换成Android端官方适配的Dialogflow依赖 implementation 'com.google.android.gms:play-services-dialogflow:16.0.0'
替换后再添加Firebase Firestore依赖即可正常编译。
若必须保留原有服务端Dialogflow依赖,添加如下冲突排除规则
在应用级build.gradle的android块上方添加配置段,统一排除冲突组,同时锁定grpc、protobuf版本和Firebase依赖对齐:
configurations { all { exclude group: 'com.google.protobuf', module: 'protobuf-lite' exclude group: 'io.grpc', module: 'grpc-stub' // 统一强制指定版本 resolutionStrategy.force 'io.grpc:grpc-okhttp:1.49.0' resolutionStrategy.force 'com.google.protobuf:protobuf-java:3.21.12' } } android { // 原有android配置保持不变 }
同时修改Dialogflow的依赖声明,排除重复传递依赖:
implementation ('com.google.cloud:google-cloud-dialogflow:2.1.0') { exclude group: 'com.google.guava' exclude group: 'io.grpc' exclude group: 'com.google.protobuf' } implementation 'io.grpc:grpc-okhttp:1.49.0' implementation 'io.grpc:grpc-android:1.49.0' implementation 'com.google.protobuf:protobuf-java:3.21.12'
步骤3:清理编译缓存
执行Android Studio的 File -> Invalidate Caches / Restart ,重启后重新编译即可解决重复类冲突。
内容的提问来源于stack exchange,提问作者Sidharth Guleria
相关产品推荐
相关产品推荐

