Flutter编译Module was compiled with an incompatible version of Kotlin错误解决

文章目录

编译报错如下

e: C:/Users/YUAN/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.9.20/e58b4816ac517e9cc5df1db051120c63d4cde669/kotlin-stdlib-1.9

.20.jar!/META-INF/kotlin-stdlib-jdk8.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.6.0.

e: C:/Users/YUAN/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.9.20/e58b4816ac517e9cc5df1db051120c63d4cde669/kotlin-stdlib-1.9

.20.jar!/META-INF/kotlin-stdlib-jdk7.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.6.0.

解决方法

这个错误说明你的项目中的一些 Kotlin 依赖项(如 wakelockandroidx.lifecycle)是使用较新的 Kotlin 编译器(1.8.0 或 1.9.0)编译的,而你的项目设置使用的是较旧的 Kotlin 编译器版本(1.6.0)。Kotlin 的二进制兼容性在较大的版本差异下可能会导致此类问题。

修复方案

  1. 升级项目的 Kotlin 版本
    升级项目的 Kotlin 版本以匹配依赖库的编译版本。
  • 打开 android/build.gradle,找到 ext.kotlin_version,将其修改为与依赖项兼容的版本,例如 1.9.20

    gradle 复制代码
    ext.kotlin_version = '1.9.20'
  • 确保 gradle-wrapper.properties 中的 Gradle 版本与 Kotlin 版本兼容。例如,使用 Gradle 7.5 或更高版本(推荐 8.x)。在 android/gradle/wrapper/gradle-wrapper.properties 文件中修改:

    properties 复制代码
    distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip

运行以下命令清理并重新编译:

bash 复制代码
flutter clean
flutter pub get
flutter build apk

  1. 降级依赖项到与当前 Kotlin 版本兼容的版本
    如果你不希望升级 Kotlin 版本,可以尝试降级这些依赖项到与 Kotlin 1.6.0 兼容的版本。
  • pubspec.yaml 文件中,指定兼容的版本。例如:

    yaml 复制代码
    wakelock: 0.5.3 # 选择不依赖较新 Kotlin 版本的版本

运行以下命令更新依赖:

bash 复制代码
flutter pub upgrade

  1. 强制所有 Kotlin 依赖使用统一版本
    为了避免库依赖版本混乱,可以在 android/build.gradle 中添加以下代码,强制所有 Kotlin 库使用相同的版本:
gradle 复制代码
configurations.all {
    resolutionStrategy {
        force 'org.jetbrains.kotlin:kotlin-stdlib:1.6.21' // 替换为你的目标 Kotlin 版本
    }
}

  1. 清理缓存和中间文件
    清除所有缓存和构建文件后重新编译:
bash 复制代码
flutter clean
rm -rf ~/.gradle/caches
flutter build apk

  1. 检查 Gradle 插件版本和 Flutter SDK
    某些版本的 Flutter SDK 默认使用较旧的 Gradle 和 Kotlin 插件版本。确保 Flutter SDK 是最新的,并更新 Android Gradle 插件:
bash 复制代码
flutter upgrade

android/build.gradle 中,确保 Gradle 插件版本适合 Kotlin 版本。例如:

gradle 复制代码
classpath 'com.android.tools.build:gradle:8.0.2'

结束语

Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。我将学习和深入研究Flutter的方方面面。从基础知识到高级技巧,从UI设计到性能优化,欢饮关注一起讨论学习,共同进入Flutter的精彩世界!

相关推荐
JohnnyDeng948 小时前
【Android】Room 数据库高级用法与性能调优:从查询瓶颈到毫秒级响应
android·性能优化·kotlin·room
zeqinjie9 小时前
Flutter 折叠屏 iPad / 宽屏适配实践
android·前端·flutter
ab_dg_dp9 小时前
Android 17+ 提取 AIDL 生成 Java 文件的实用脚本
android·java·python
Arrom9 小时前
DLNA 渲染端排障实战:从 20s 卡顿到 stale subscriber 的两周追凶之旅
android·java
_李小白10 小时前
【android opencv学习笔记】Day 32:直线检测之霍夫变换
android·opencv·学习
Refrain_zc11 小时前
Android 英语口语评测:从录音采集到单词级着色反馈的完整技术方案
kotlin
程序员老刘12 小时前
本地跑Gemma 4 12B写Flutter:是惊喜还是崩溃
flutter·ai编程
暗冰ཏོ12 小时前
Flutter 从入门到项目实战:Dart 基础、跨平台开发、App 架构与上线发布完整指南
flutter·架构·app·安卓·应用开发
plainGeekDev14 小时前
文件读写(Java IO)→ Kotlin 扩展函数
android·java·kotlin
s_nshine14 小时前
释放C盘,迁移studio相关数据到其他盘
android·windows·android studio·内存·c盘