- 前两天在RN项目中集成原生的firebase,之后报错插件版本冲突,报错信息如下:
尝试
- 这个问题可是折磨了我大半天,按照网上搜索的解决方式各种尝试
1. 方法一:
- 在项目的build.gradle中加入
allprojects {
subprojects {
project.configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.android.support'
&& !details.requested.name.contains('multidex') ) {
details.useVersion "16.1.0"
}
}
}
}
}
2. 方法二:
classpath 'com.google.gms:google-services:4.0.2' // Just updated the version here.
3. 方法三:
- 各个module的dependencies里的compile改为implementation
然而,并没有什么卵用
解决方法
- 之后静下心来好好思考了下,依赖版本冲突,肯定是存在重复依赖的问题。从这个思路着手:
第一步:
- 将firebase的依赖版本更新到最新版,这样能尽可能的降低版本冲突的概率;
参考firebase插件的各个发布版本
第二步:
-
image.png
image.png -
在依赖树结构里搜索出现版本冲突的module,即play-services-basement,
上面应该可以看出来 271行到273行firebase-core引用的play-services-basement版本是16.0.1,
432行-436行看到react-native-device-info引用的play-services-basement版本变成了16.1.0,
才导致了play-services-basement引用版本冲突。 -
那我们去除重复引用play-services-basement不就可以了么。
在引用firebase-core的moudle的build.gradle文件中exclude 掉play-services-basement,
implementation ('com.google.firebase:firebase-core:16.0.6') { // 所加的第三方框架
exclude group: 'com.google.android.gms',module: 'play-services-basement' // 加载时排除框架中的design包
}
- 现在编译,就能成功通过了。