React Native Gradle升级后Kotlin版本不兼容及版本来源问询
React Native Android构建Kotlin版本不兼容问题解析
问题原因
- 版本对齐冲突:你使用的Gradle 8.5自带的Kotlin标准库版本为1.9.20,但
@react-native/gradle-plugin默认使用低于1.9.0的Kotlin版本编译。构建时,插件中的kotlin.reflect.KClass类是用1.9.0版本编译的,而项目预期的是1.7.1版本,导致二进制元数据版本不匹配,触发编译错误。 - 手动修改插件内部的
build.gradle.kts能解决问题,是因为强制插件使用1.9.0版本编译,与Gradle自带的标准库版本对齐,消除了版本差异。
插件Kotlin版本的来源
@react-native/gradle-plugin中的Kotlin版本是插件开发者在构建插件时定义的固定值,打包发布到npm时已写入插件包内的build.gradle.kts文件中,默认不会读取你项目本地的Kotlin版本配置,所以你修改项目的build.gradle或gradle.properties无法覆盖这个值。
无需手动修改node_modules的解决方案
你可以通过Gradle的依赖解析策略,强制所有模块(包括第三方插件)统一使用指定的Kotlin版本,避免手动修改依赖包:
Groovy DSL(项目根目录build.gradle)
allprojects { configurations.all { resolutionStrategy { force "org.jetbrains.kotlin:kotlin-stdlib:1.9.20" force "org.jetbrains.kotlin:kotlin-reflect:1.9.20" force "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.20" } } }
Kotlin DSL(项目根目录build.gradle.kts)
allprojects { configurations.all { resolutionStrategy { force("org.jetbrains.kotlin:kotlin-stdlib:1.9.20") force("org.jetbrains.kotlin:kotlin-reflect:1.9.20") force("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.20") } } }
另外,也可以尝试升级React Native到适配Gradle 8.5的最新稳定版本,官方通常会在新版本中修复这类依赖版本兼容问题。
内容的提问来源于stack exchange,提问作者Ross Thain
相关产品推荐
相关产品推荐

