升级React Native依赖后执行run-android报错:react-native-location编译失败
核心原因
npm install --force 强制安装说明依赖间存在版本冲突,而 react-native-location 模块的 Java 代码编译失败,通常是因为该模块与升级后的 React Native 版本、Android Gradle 插件版本不兼容导致的。
分步解决方案
锁定 react-native-location 兼容版本
先执行react-native --version查看当前 React Native 版本,然后找到与该版本匹配的react-native-location版本(比如 RN 0.70+ 通常需要模块的 3.x 及以上版本)。修改package.json中的依赖项,例如:"react-native-location": "^3.2.0"删掉
node_modules、package-lock.json,重新执行npm install(尽量不用--force,如果仍有冲突,逐个排查冲突的依赖包)。清理 Android 构建缓存
进入项目的android目录,执行以下命令清理缓存:./gradlew clean ./gradlew cleanBuildCache返回项目根目录后重新运行
npx react-native run-android。检查 Android Gradle 配置
确认android/build.gradle中的 Gradle 插件版本,以及gradle/wrapper/gradle-wrapper.properties中的 Gradle 版本,是否与react-native-location的要求一致。比如插件版本可能需要7.2.0+,对应的 Gradle 版本为7.3.3+。排查依赖冲突详情
执行npm ls查看完整依赖树,找出和react-native-location冲突的包,手动调整这些包的版本,避免强制安装留下的隐性问题。更新 react-native-location 到最新兼容版
如果当前用的模块版本过旧,直接执行npm install react-native-location@latest(注意提前验证该版本是否适配你的 RN 版本),重新安装后再尝试编译。
内容的提问来源于stack exchange,提问作者showtime

