React Native构建报错:无法访问internal的serviceOf及引用类型不匹配
React Native构建脚本编译错误修复方案
问题详情
构建React Native项目时出现两处脚本编译错误:
/node_modules/@react-native/gradle-plugin/build.gradle.kts:10:49:无法访问serviceOf,它是org.gradle.configurationcache.extensions中的internal(内部)成员/node_modules/@react-native/gradle-plugin/build.gradle.kts:45:11:未解析引用,接收者类型不匹配,候选方法均不适用
异常类型:ScriptCompilationException,包含上述两处ScriptCompilationError
当前环境:react-native 0.72.5、gradle 8.0.1、node V20、jdk 11
原因分析
React Native 0.72.5的gradle-plugin依赖了Gradle的内部APIserviceOf,而Gradle 8.x版本对内部API的访问权限做了严格限制,导致编译时无法访问该方法,引发错误。
解决方案
1. 降级Gradle到兼容版本(推荐)
React Native 0.72.x官方适配的Gradle版本为7.5,降级操作如下:
- 打开
android/gradle/wrapper/gradle-wrapper.properties文件 - 将
distributionUrl修改为:distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip - 同步Android项目后重新执行构建命令
2. 升级React Native到适配Gradle 8.x的版本
React Native 0.73及以上版本已适配Gradle 8.x,可按照官方升级步骤将项目升级到对应版本,从根源解决API兼容问题。
3. 临时补丁修复(应急方案)
若暂时无法降级Gradle或升级RN,可临时修改gradle-plugin的代码:
- 找到
/node_modules/@react-native/gradle-plugin/build.gradle.kts的第10行和第45行 - 将
serviceOf<T>()替换为project.services.get<T>() - 注意:该修改会在执行
npm install后被覆盖,建议使用patch-package工具生成持久化补丁,避免重复修改
内容的提问来源于stack exchange,提问作者Lee
相关产品推荐
相关产品推荐

