react-native expo eject为react-native cli后安卓模拟器无法运行如何解决
这个报错的根因是 React Native 0.71 及以上版本配套的 Android Gradle Plugin (AGP) 7+ 已正式移除旧的maven插件,统一使用maven-publish插件实现发布能力,而 eject 后残留的低版本expo-application依赖仍在使用已废弃的maven插件配置,导致构建失败。
解决方案
方案一:升级expo相关依赖(优先推荐)
直接升级expo-application到适配AGP 7+的最新版本即可,操作步骤:
- 执行安装命令:
npm用户:npm install expo-application@latest
yarn用户:yarn add expo-application@latest - 若其他
expo-前缀的依赖也报同类错误,统一升级到对应最新稳定版即可。 - 升级完成后清理gradle缓存重新构建:
- 进入安卓目录:
cd android - 执行清理命令:Mac/Linux运行
./gradlew clean,Windows运行gradlew clean - 回到项目根目录启动项目:
npx react-native run-android
- 进入安卓目录:
方案二:手动兼容(仅用于无法升级依赖的场景)
如果项目受兼容限制不能升级expo-application版本,可以手动修改配置兼容:
- 找到
node_modules/expo-application/android/build.gradle文件 - 将文件头部的
apply plugin: 'maven'替换为apply plugin: 'maven-publish' - 找到文件中
uploadArchives对应的maven配置块,替换为publishing规则:
原配置示例:
uploadArchives { repositories { mavenDeployer { pom.groupId = 'expo.modules.application' pom.artifactId = 'application' pom.version = '4.1.0' } } }替换后配置示例:
publishing { publications { maven(MavenPublication) { groupId = 'expo.modules.application' artifactId = 'application' version = '4.1.0' from components.release } } }
- 清理gradle缓存重新构建即可。如果需要持久化该修改,可使用
patch-package工具生成补丁包,避免重新安装依赖后修改失效。
内容的提问来源于stack exchange,提问作者Aditya Sonawane
相关产品推荐
相关产品推荐

