Android Studio同步Expo模块找不到:expo-modules-core项目如何解决
问题现象
执行yarn create expo-module命令按官方文档流程创建Expo模块后,在Android Studio中打开模块内的android目录执行Gradle同步,会抛出如下报错:
Project with path ':expo-modules-core' could not be found in root project 'android'
该问题的触发逻辑:
- 模板生成的Gradle脚本默认通过
project(":expo-modules-core")的方式声明依赖 expo-modules-core实际存放在项目的node_modules目录下,但默认生成的模板未配置该依赖的路径关联- 常规React Native原生插件的依赖配置方案不适用于该场景:常规RN插件会在Gradle中显式配置
node_modules内React Native的maven仓库地址,通过maven坐标拉取依赖,参考配置如下:
repositories { maven { url("$rootDir/../../node_modules/react-native/android") } } dependencies { implementation "com.facebook.react:react-native:+" // From node_modules }
但expo-modules-core包内不存在maven-metadata文件,无法通过上述maven仓库方式引用。
解决步骤
通过本地源码模块的方式引入expo-modules-core即可解决,具体配置如下:
- 打开
android目录下的settings.gradle文件,添加expo-modules-core的本地模块映射,将node_modules中对应的源码目录注册为Gradle可识别的项目模块:
// 可根据自身模块的存放层级调整node_modules的相对路径,默认模板生成的目录层级对应如下配置 def nodeModules = new File(rootDir, "../../node_modules") include ':expo-modules-core' project(':expo-modules-core').projectDir = new File(nodeModules, "expo-modules-core/android")
- 保留模块级
build.gradle文件中对expo-modules-core的项目依赖声明即可,无需修改为maven坐标形式:
dependencies { // 其余原有依赖保持原有配置不变 implementation project(':expo-modules-core') }
注意事项
- 配置前先核对路径有效性:确认拼接后的
expo-modules-core/android目录真实存在,若模块存放位置和默认模板层级不同,按需调整nodeModules的相对路径即可 - 不要尝试通过配置maven仓库地址的方式引入
expo-modules-core:该包为源码依赖的原生模块,本地node_modules中未存放可直接拉取的maven产物,仅支持本地项目模块的引入方式 - 配置修改完成后,先在
android目录下执行./gradlew clean清理旧构建缓存,再重新触发Gradle同步,避免缓存导致的同步失败
内容的提问来源于stack exchange,提问作者Mihail Ya
相关产品推荐
相关产品推荐

