M1 Mac运行React Native Android报错:Unsupported class file major version 64及Kotlin版本问题
解决React Native Android项目运行报错的步骤
一、解决「Unsupported class file major version 64」报错
这个错误是因为JDK版本与Gradle版本不兼容:JDK20的class文件版本为64,而Gradle7.5.1最高仅支持到JDK17(class版本61)。可选择以下两种方式解决:
方式1:降级JDK到17
- 用
brew安装JDK17:brew install openjdk@17 - 临时配置终端使用JDK17:
export PATH="/usr/local/opt/openjdk@17/bin:$PATH" - 如需全局生效,将上述命令添加到
~/.zshrc或~/.bash_profile,再执行source ~/.zshrc(对应自己的配置文件)。
方式2:升级Gradle到兼容JDK20的版本
Gradle7.6及以上版本支持JDK20,修改gradle-wrapper.properties里的distributionUrl:
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip
二、解决「Kotlin metadata版本不匹配」报错
升级Gradle后出现的该问题,是因为项目依赖的Kotlin库版本(1.8.0)与Gradle插件期望的版本(1.6.0)不一致,需统一Kotlin版本:
修改项目根目录的
build.gradle文件:
在buildscript块中指定统一的Kotlin版本,确保所有模块使用同一版本:buildscript { ext { kotlinVersion = "1.8.0" // 与报错中的元数据版本保持一致 // 保留其他RN默认配置 } dependencies { classpath "com.android.tools.build:gradle:7.4.2" // Gradle7.6对应AGP7.4.x版本 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" // 保留其他依赖 } }检查模块级
build.gradle:
确保app模块的build.gradle中没有硬编码低版本Kotlin依赖,替换为根目录定义的变量:dependencies { // 替换硬编码版本的依赖,比如把 implementation "org.jetbrains.kotlin:kotlin-stdlib:1.6.0" 改成下面的写法 implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion" // 保留其他依赖 }清理缓存并重新构建:
./gradlew clean yarn android
三、版本兼容性参考(关键)
React Native 71.8的稳定版本组合推荐:
- Gradle:7.5 ~ 7.6.x
- Android Gradle Plugin(AGP):7.4.x
- Kotlin:1.7.20 ~ 1.8.x
- JDK:11 ~ 17(稳定性最优,建议优先选择该区间版本,避免使用JDK20这类较新的版本)
内容的提问来源于stack exchange,提问作者Olexandr Akhtyrskyi
相关产品推荐
相关产品推荐

