React Native Android编译报错:compileJava与compileKotlin JVM版本不兼容
修复方案
核心问题定位
- 手动把Gradle从7.1.1降级到6.8是所有报错的根源:当前版本React Native内置的
react-native-gradle-plugin是适配Gradle 7.x、Kotlin 1.5+环境的,Gradle 6.8内置的Kotlin插件版本过低,根本不支持replaceFirstChar、新版lowercase()这类Kotlin 1.4+才加入的标准库API,才会出现一堆引用无法解析、类型不匹配的Kotlin编译错误。 - JVM target不匹配是全局编译配置不一致导致的:
compileJava任务指定了1.8的目标版本,compileKotlin任务指定了11,两边版本没对齐。 - 「Gradle 7移除maven插件导致不兼容」是误判,React Native官方早就适配了替代的
maven-publish插件,完全不需要靠降级Gradle解决相关报错。
分步修复操作
- 恢复Gradle版本到官方适配版本
打开android/gradle/wrapper/gradle-wrapper.properties,把distributionUrl配置改回gradle-7.1.1-all.zip,不要使用6.8版本。如果你是0.70以上版本的React Native,可以对应升到Gradle 7.3.3,和官方模板配置保持一致即可,不要自己随意改版本。 - 全局统一JVM编译目标版本
- 打开
android/build.gradle,先确认buildscript块里的Kotlin版本和你用的RN版本匹配:RN 0.68-0.69用Kotlin 1.5.31,RN 0.70+用Kotlin 1.6.x - 找到所有模块的
compileOptions配置块,把sourceCompatibility、targetCompatibility都统一设置为JavaVersion.VERSION_11 - 找到所有模块的
kotlinOptions配置块,把jvmTarget统一设置为"11",和Java编译配置完全对齐 - 如果改完全局配置还是报react-native-gradle-plugin的JVM版本错,就去
node_modules/react-native-gradle-plugin/build.gradle里把该模块的compileOptions、kotlinOptions也改成11,后续可以用patch-package把这个修改固定下来,避免重新安装依赖后修改失效。
- 打开
- 清理缓存重新构建
在项目根目录依次执行以下命令:cd android ./gradlew clean cd .. npx react-native run-android - M1设备适配检查
- 你当前安装的Zulu OpenJDK 11.0.15是arm64适配版本,符合要求,不要更换为x86架构的JDK,避免Rosetta转译带来的随机报错和性能损耗
- 确认Android SDK中安装了30.0.3及以上版本的arm64兼容build-tools组件
避坑提醒
- 不要随意修改React Native官方模板配套的Gradle、Android Gradle Plugin版本,这些版本组合都是官方做过全量兼容性验证的,乱改版本很容易出现连锁编译错误。如果遇到maven插件相关报错,直接把旧的
maven插件替换为官方推荐的maven-publish即可,不需要降级Gradle。 - 多模块Android项目中,所有子模块的Java、Kotlin编译目标版本必须全局统一,只要有一个模块版本不一致,就会触发target compatibility类的报错。
- 遇到Kotlin标准库API(比如你遇到的replaceFirstChar、lowercase)找不到的报错,优先检查项目使用的Kotlin插件版本是否和依赖库要求的版本匹配,不要在业务代码里做无意义的兼容修改。
内容的提问来源于stack exchange,提问作者ssshan
相关产品推荐
相关产品推荐

