Flutter集成Firebase时遭遇Kotlin版本不兼容编译错误求助
我之前也踩过这个坑,太懂这种卡半天的憋屈了!咱们来一步步解决这个问题:
首先,先理清楚报错的核心原因:你看到的Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.7.1,其实是说你的项目当前用的Kotlin Gradle插件版本是1.7.1,但Firebase依赖的play-services-measurement-api库是用Kotlin 1.9编译的,两者版本不兼容导致的。你说自己的Kotlin版本是最新的,大概率是把本地安装的Kotlin版本和项目中配置的Gradle插件版本搞混了——这俩是分开的,项目实际用的是build.gradle里配置的插件版本。
接下来按这些步骤操作:
确认并升级Kotlin Gradle插件版本
打开你的项目根目录下的android/build.gradle文件,找到这两行:ext.kotlin_version = '1.7.1' // 这里可能是旧版本 // ... dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // 其他依赖... }把
ext.kotlin_version改成和Firebase依赖兼容的最新稳定版(比如1.9.x系列,比如'1.9.20'),确保下面的kotlin-gradle-plugin引用的是这个变量,没有硬编码旧版本。清理缓存,重新构建
执行以下命令彻底清理缓存,避免旧缓存干扰:flutter clean然后删除项目
android目录下的.gradle文件夹(放心删,重新构建会自动生成),接着运行:flutter pub get flutter run确保firebase_core是最新稳定版
打开pubspec.yaml,检查firebase_core的版本号,把它更新到pub上的最新稳定版本(不要用带-dev的预览版),然后执行flutter pub get拉取最新依赖。检查Gradle配置的兼容性
打开android/gradle.properties,确保有这些配置(如果没有就加上),让Gradle和Kotlin版本匹配:kotlin.jvm.target=1.8 android.useAndroidX=true android.enableJetifier=true
如果做完这些还是有问题,可以尝试在android/build.gradle的allprojects块中强制指定Kotlin相关依赖的版本,避免间接依赖拉取旧版本:
allprojects { repositories { // 你的仓库配置... } configurations.all { resolutionStrategy { force "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.20" force "org.jetbrains.kotlin:kotlin-reflect:1.9.20" } } }
一般来说,升级Kotlin Gradle插件版本是解决这个问题的核心,因为Firebase的新依赖已经开始用更高版本的Kotlin编译了,旧插件版本无法兼容新的元数据格式。
备注:内容来源于stack exchange,提问作者Shayan Bijad

