如何修复React Native安卓编译时Could not find method compile()报错
错误根因
这个报错和Android开发环境配置无关,是项目依赖的第三方库react-native-orientation适配问题:
高版本Gradle(7.0及以上)已经完全移除了旧版的
compile依赖声明方法,仅保留implementation、api等替代配置,但react-native-orientation已经长期停止维护,库内的Gradle配置还在使用已被删除的compile语法,导致构建阶段直接抛出方法不存在的错误。
解决方案
按推荐优先级从高到低排列:
方案1:替换为维护中的替代库(最稳妥)
react-native-orientation已经停止维护多年,直接替换为社区持续维护的同功能库是长期最优解:
- 卸载旧依赖:
# npm用户执行 npm uninstall react-native-orientation # yarn用户执行 yarn remove react-native-orientation - 安装适配新版Gradle、新版React Native的替代库
react-native-orientation-locker:# npm用户执行 npm install react-native-orientation-locker # yarn用户执行 yarn add react-native-orientation-locker - 对照新库的使用说明,修改你项目中原先引用
react-native-orientation的导入、调用代码,之后重新执行react-native run-android即可正常构建。
方案2:给旧依赖打兼容补丁(不想换库时使用)
如果暂时不想替换现有库,可以手动修改旧库的构建配置,通过补丁永久生效:
- 打开路径
node_modules/react-native-orientation/android/build.gradle文件,找到所有使用compile声明依赖的代码行,将compile关键字全部替换为implementation,比如报错对应的原代码:
修改后为:compile com.facebook.react:react-native:+implementation com.facebook.react:react-native:+ - 由于直接修改
node_modules目录的内容会在下次执行依赖安装时被覆盖,需要用patch-package生成永久补丁:- 安装patch-package开发依赖:
npm install patch-package -D # 或 yarn add patch-package -D - 执行命令生成对应补丁:
npx patch-package react-native-orientation - 打开项目根目录的
package.json,在scripts配置项中添加一行:"postinstall": "patch-package"
- 安装patch-package开发依赖:
方案3:降级Gradle版本(不推荐)
你也可以将项目使用的Gradle版本降级到6.x及更早版本,这些版本还保留了对compile语法的兼容,但这个方案会导致你无法使用高版本React Native以及其他更新后的第三方依赖,后续会出现更多兼容问题,仅作为临时应急方案使用。
内容的提问来源于stack exchange,提问作者Jack Venevankham
相关产品推荐
相关产品推荐

