React Native Android构建失败:Kotlin版本冲突与Unimodules问题
问题分析与解决方案
核心问题根源
你的问题是Expo 38.x与React Native 0.62.2的依赖适配冲突,同时伴随Kotlin版本不兼容问题:
- 最初的Kotlin版本冲突:Expo 38.x依赖的部分模块(如expo-splash-screen)使用较低版本的Kotlin,你手动指定的1.6.10版本过高,导致类路径中版本不一致。
- 后续的CookieManagerModule错误:unimodules-react-native-adapter与RN 0.62.2的NativeModule接口不匹配,RN 0.62.x的NativeModule新增了
invalidate()方法要求,但旧版本的unimodules未实现该方法。
分步解决方案
1. 修复Kotlin版本冲突
不要手动指定过高的Kotlin版本,Expo 38.x适配的Kotlin版本为1.3.72,在项目根目录的build.gradle中配置:
buildscript { dependencies { // 替换为适配的Kotlin版本 classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72' } }
2. 解决CookieManagerModule的invalidate()方法问题
由于Expo 38.x的unimodules-react-native-adapter版本与RN 0.62.2不兼容,需强制更新该模块到适配版本:
- 在项目根目录的
build.gradle中添加强制依赖配置:
allprojects { repositories { // ... 保留原有仓库配置 } configurations.all { resolutionStrategy.force 'com.facebook.react:react-native:0.62.2' resolutionStrategy.force 'unimodules:unimodules-react-native-adapter:5.4.0' } }
- 清理缓存并重新安装依赖:
# 删除旧依赖与锁文件 rm -rf node_modules package-lock.json yarn.lock # 重新安装依赖 npm install # 清理Android构建缓存 cd android && ./gradlew clean
3. 验证构建
执行Android构建命令,检查问题是否解决:
cd android && ./gradlew assembleDebug
补充建议
Expo 38.x与RN 0.62.2均已停止维护,长期来看建议逐步升级到更高版本的Expo和React Native,避免后续出现更多依赖兼容问题。
内容的提问来源于stack exchange,提问作者Michael Amadheo
相关产品推荐
相关产品推荐

