React Native 0.72.6中gradle-plugin:compileKotlin错误修复求助
Kotlin版本不兼容导致React Native Android构建失败的解决方案
问题描述
此前使用React Native 0.68.2版本时Android运行正常,升级新版本后出现Kotlin版本不兼容的编译错误,构建失败。核心报错为依赖的Kotlin标准库元数据二进制版本为1.9.0,但项目预期版本为1.7.1,具体报错信息如下:
e: 依赖中发现不兼容的类,请从类路径中移除或使用'-Xskip-metadata-version-check'抑制错误 e: C:/Users/khong/.gradle/wrapper/dists/gradle-8.4-all/56r6xik2f6skrm47et0ibifug/gradle-8.4/lib/kotlin-stdlib-1.9.10.jar!/META-INF/kotlin-stdlib-jdk7.kotlin_module: 模块使用不兼容的Kotlin版本编译。其元数据的二进制版本为1.9.0,预期版本为1.7.1。 e: C:/Users/khong/.gradle/wrapper/dists/gradle-8.4-all/56r6xik2f6skrm47et0ibifug/gradle-8.4/lib/kotlin-stdlib-1.9.10.jar!/META-INF/kotlin-stdlib-jdk8.kotlin_module: 模块使用不兼容的Kotlin版本编译。其元数据的二进制版本为1.9.0,预期版本为1.7.1。 e: C:/Users/khong/.gradle/wrapper/dists/gradle-8.4-all/56r6xik2f6skrm47et0ibifug/gradle-8.4/lib/kotlin-stdlib-1.9.10.jar!/META-INF/kotlin-stdlib.kotlin_module: 模块使用不兼容的Kotlin版本编译。其元数据的二进制版本为1.9.0,预期版本为1.7.1。 e: C:/Users/khong/.gradle/wrapper/dists/gradle-8.4-all/56r6xik2f6skrm47et0ibifug/gradle-8.4/lib/kotlin-stdlib-common-1.9.10.jar!/META-INF/kotlin-stdlib-common.kotlin_module: 模块使用不兼容的Kotlin版本编译。其元数据的二进制版本为1.9.0,预期版本为1.7.1。 e: F:\ICANFLY\React_Native\AwesomeProject\node_modules@react-native\gradle-plugin\src\main\kotlin\com\facebook\react\ReactExtension.kt: (57, 42): Class 'kotlin.reflect.KClass'使用不兼容的Kotlin版本编译。其元数据的二进制版本为1.9.0,预期版本为1.7.1。 该类从C:/Users/khong/.gradle/wrapper/dists/gradle-8.4-all/56r6xik2f6skrm47et0ibifug/gradle-8.4/lib/kotlin-stdlib-1.9.10.jar!/kotlin/reflect/KClass.class加载 e: F:\ICANFLY\React_Native\AwesomeProject\node_modules@react-native\gradle-plugin\src\main\kotlin\com\facebook\react\ReactExtension.kt: (57, 42): Class 'kotlin.jvm.JvmClassMappingKt'使用不兼容的Kotlin版本编译。其元数据的二进制版本为1.9.0,预期版本为1.7.1。 该类从C:/Users/khong/.gradle/wrapper/dists/gradle-8.4-all/56r6xik2f6skrm47et0ibifug/gradle-8.4/lib/kotlin-stdlib-1.9.10.jar!/kotlin/jvm/JvmClassMappingKt.class加载 e: F:\ICANFLY\React_Native\AwesomeProject\node_modules@react-native\gradle-plugin\src\main\kotlin\com\facebook\react\ReactExtension.kt: (57, 59): Class 'kotlin.collections.CollectionsKt__CollectionsJVMKt'使用不兼容的Kotlin版本编译。其元数据的二进制版本为1.9.0,预期版本为1.7.1。 该类从C:/Users/khong/.gradle/wrapper/dists/gradle-8.4-all/56r6xik2f6skrm47et0ibifug/gradle-8.4/lib/kotlin-stdlib-1.9.10.jar!/kotlin/collections/CollectionsKt__CollectionsJVMKt.class加载 e: F:\ICANFLY\React_Native\AwesomeProject\node_modules@react-native\gradle-plugin\src\main\kotlin\com\facebook\react\ReactExtension.kt: (60, 72): Class 'kotlin.reflect.KClass'使用不兼容的Kotlin版本编译。其元数据的二进制版本为1.9.0,预期版本为1.7.1。 该类从C:/Users/khong/.gradle/wrapper/dists/gradle-8.4-all/56r6xik2f6skrm47et0ibifug/gradle-8.4/lib/kotlin-stdlib-1.9.10.jar!/kotlin/reflect/KClass.class加载 e: F:\ICANFLY\React_Native\AwesomeProject\node_modules@react-native\gradle-plugin\src\main\kotlin\com\facebook\react\ReactExtension.kt: (60, 72): Class 'kotlin.jvm.JvmClassMappingKt'使用不兼容的Kotlin版本编译。其元数据的二进制版本为1.9.0,预期版本为1.7.1。 该类从C:/Users/khong/.gradle/wrapper/dists/gradle-8.4-all/56r6xik2f6skrm47et0ibifug/gradle-8.4/lib/kotlin-stdlib-1.9.10.jar!/kotlin/jvm/JvmClassMappingKt.class加载 e: F:\ICANFLY\React_Native\AwesomeProject\node_modules@react-native\gradle-plugin\src\main\kotlin\com\facebook\react\ReactExtension.kt: (75, 38): Class 'kotlin.reflect.KClass'使用不兼容的Kotlin版本编译。其元数据的二进制版本为1.9.0,预期版本为1.7.1。 该类从C:/Users/khong/.gradle/wrapper/dists/gradle-8.4-all/56r6xik2f6skrm47et0ibifug/gradle-8.4/lib/kotlin-stdlib-1.9.10.jar!/kotlin/reflect/KClass.class加载 e: F:\ICANFLY\React_Native\AwesomeProject\node_modules@react-native\gradle-plugin\src\main\kotlin\com\facebook\react\ReactExtension.kt: (75, 38): Class 'kotlin.jvm.JvmClassMappingKt'使用不兼容的Kotlin版本编译。其元数据的二进制版本为1.9.0,预期版本为1.7.1。 该类从C:/Users/khong/.gradle/wrapper/dists/gradle-8.4-all/56r6xik2f6skrm47et0ibifug/gradle-8.4/lib/kotlin-stdlib-1.9.10.jar!/kotlin/jvm/JvmClassMappingKt.class加载 e: F:\ICANFLY\React_Native\AwesomeProject\node_modules@react-native\gradle-plugin\src\main\kotlin\com\facebook\react\ReactExtension.kt: (81, 76): Class 'kotlin.reflect.KClass'使用不兼容的Kotlin版本编译。其元数据的二进制版本为1.9.0,预期版本为1.7.1。 该类从C:/Users/khong/.gradle/wrapper/dists/gradle-8.4-all/56r6xik2f6skrm47et0ibifug/gradle-8.4/lib/kotlin-stdlib-1.9.10.jar!/kotlin/reflect/KClass.class加载 e: F:\ICANFLY\React_Native\AwesomeProject\node_modules@react-native\gradle-plugin\src\main\kotlin\com\facebook\react\ReactExtension.kt: (81, 76): Class 'kotlin.jvm.JvmClassMappingKt'使用不兼容的Kotlin版本编译。其元数据的二进制版本为1.9.0,预期版本为1.7.1。 该类从C:/Users/khong/.gradle/wrapper/dists/gradle-8.4-all/56r6xik2f6skrm47et0ibifug/gradle-8.4/lib/kotlin-stdlib-1.9.10.jar!/kotlin/jvm/JvmClassMappingKt.class加载 e: F:\ICANFLY\React_Native\AwesomeProject\node_modules@react-native\gradle-plugin\src\main\kotlin\com\facebook\react\ReactExtension.kt: (85, 42): Class 'kotlin.reflect.KClass'使用不兼容的Kotlin版本编译。其元数据的二进制版本为1.9.0,预期版本为1.7.1。 该类从C:/Users/khong/.gradle/wrapper/dists/gradle-8.4-all/56r6xik2f6skrm47et0ibifug/gradle-8.4/lib/kotlin-stdlib-1.9.10.jar!/kotlin/reflect/KClass.class加载 e: F:\ICANFLY\React_Native\AwesomeProject\node_modules@react-native\gradle-plugin\src\main\kotlin\com\facebook\react\ReactExtension.kt: (85, 42): Class 'kotlin.jvm.JvmClassMappingKt'使用不兼容的Kotlin版本编译。其元数据的二进制版本为1.9.0,预期版本为1.7.1。 该类从C:/Users/khong/.gradle/wrapper/dists/gradle-8.4-all/56r6xik2f6skrm47et0ibifug/gradle-8.4/lib/kotlin-stdlib-1.9.10.jar!/kotlin/jvm/JvmClassMappingKt.class加载
构建失败信息:
FAILURE: 构建因异常失败。 - 出错原因: 任务':gradle-plugin:compileKotlin'执行失败。 执行org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction时发生失败 编译错误,请查看日志获取更多详情 - 建议操作: 使用--stacktrace选项获取堆栈跟踪。 使用--info或--debug选项获取更多日志输出。 使用--scan获取完整洞察。 访问https://help.gradle.org获取更多帮助。 构建耗时9秒失败,应用安装失败。
解决方案
方案1:升级项目的Kotlin版本至兼容版本
- 打开项目根目录下的**项目级
build.gradle**文件,找到ext块中的kotlinVersion配置,将其修改为与依赖匹配的版本(如1.9.10):
buildscript { ext { kotlinVersion = "1.9.10" // 其他配置... } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" // 其他依赖... } }
- 同步Gradle配置,重新构建项目。
方案2:降级Gradle版本以匹配项目的Kotlin版本
如果不想升级Kotlin版本,可以降级Gradle到与Kotlin 1.7.1兼容的版本(如Gradle 7.4.x):
- 修改项目根目录下的
gradle/wrapper/gradle-wrapper.properties文件中的distributionUrl:
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-all.zip
- 同步Gradle配置,执行
./gradlew clean清理项目缓存后重新构建。
方案3:临时跳过元数据版本检查(不推荐长期使用)
如果需要快速验证项目功能,可以添加编译参数跳过版本检查:
- 在项目级
build.gradle文件中添加Kotlin编译参数:
allprojects { tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { kotlinOptions { freeCompilerArgs += ["-Xskip-metadata-version-check"] } } }
- 重新构建项目。注意此方案可能隐藏潜在的兼容性问题,仅作为临时解决方案。
方案4:检查React Native版本的依赖兼容性
新版本React Native可能对Kotlin和Gradle版本有特定要求,确认你使用的React Native版本推荐的Kotlin和Gradle版本,确保项目配置与之匹配。
内容的提问来源于stack exchange,提问作者Hoàng Hạc
相关产品推荐
相关产品推荐

