React Native集成react-native-fbsdk构建失败求助(RN 0.55.1)
我之前在RN 0.55.x版本集成react-native-fbsdk时也碰到过一模一样的问题,本质是依赖版本不匹配+仓库配置缺失导致的——React Native 0.55.1默认依赖的Android Support Library版本是26.0.1,但react-native-fbsdk可能拉取了更高的27.0.2版本,而你的项目又没配置正确的仓库源来获取这个版本。下面是亲测有效的修复步骤:
1. 先把Google Maven仓库加上
打开android/build.gradle文件,找到allprojects下的repositories块,确保里面包含Google的maven仓库(很多高版本的Android支持库只能从这里拉取):
allprojects { repositories { mavenLocal() jcenter() // 就是这行,没有的话赶紧加上 maven { url "https://maven.google.com" } maven { url "$rootDir/../node_modules/react-native/android" } } }
2. 强制统一所有模块的Support Library版本
RN和第三方库的support版本不一致是这类问题的重灾区,我们可以在全局配置里强制所有模块用同一个版本。打开android/build.gradle的buildscript块,添加一个全局变量:
buildscript { ext { buildToolsVersion = "26.0.3" minSdkVersion = 16 compileSdkVersion = 26 targetSdkVersion = 26 // 统一用RN 0.55.1兼容的26.0.1版本 supportLibVersion = "26.0.1" } repositories { jcenter() maven { url "https://maven.google.com" } } dependencies { classpath 'com.android.tools.build:gradle:2.3.3' } }
然后去android/app/build.gradle里,把所有硬编码的support依赖都换成这个变量,比如:
dependencies { compile "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}" // 其他像design、recyclerview这类support依赖也同理替换 }
这样就能避免fbsdk引入和RN不一致的support版本,彻底解决版本冲突问题。
3. 清理缓存后重新构建
配置改完后一定要清理缓存,不然可能还是会用旧的依赖:
# 进入android目录清理gradle缓存 cd android && ./gradlew clean # 回到根目录重新安装依赖 cd .. && rm -rf node_modules && npm install # 最后重新运行项目 react-native run-android
4. 适配RN版本的fbsdk版本
如果上面的步骤都没用,大概率是你装的react-native-fbsdk版本太高,和RN 0.55.1不兼容。建议降级到适配的版本:
npm install react-native-fbsdk@0.8.0 --save
这个版本是经过验证能和RN 0.55.x稳定配合的,安装完记得手动link一下(RN 0.55.x还需要手动执行react-native link react-native-fbsdk)。
内容的提问来源于stack exchange,提问作者Vissarionas

