Flutter生成的Kotlin应用编译报错:Kotlin版本不兼容如何解决?
解决Flutter编译Kotlin应用时的版本不兼容错误
错误信息
/annotation.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.7.1, expected version is 1.4.2.
问题原因
你项目依赖的flutter_pdf_viewer插件是用Kotlin 1.7编译的,但主项目根目录配置的Kotlin版本是1.4.32,版本不匹配导致编译失败。同时插件的Gradle配置较旧,和主项目配置不一致,进一步加剧了兼容性问题。
解决步骤
1. 升级主项目的Kotlin和Gradle插件版本
修改项目根目录的build.gradle,将Kotlin版本升级到兼容1.7.1元数据的版本,同时升级Gradle插件到对应兼容版本,替换已废弃的jcenter仓库:
ext { compileSdkVersion = 31 } buildscript { ext.kotlin_version = '1.7.20' // 升级到兼容1.7.1元数据的Kotlin版本 repositories { google() mavenCentral() // 替换已废弃的jcenter maven { url 'https://maven.fabric.io/public' } } dependencies { classpath 'com.android.tools.build:gradle:7.2.0' // 升级Gradle插件以支持Kotlin 1.7 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.google.gms:google-services:4.3.14' // 升级到较新版本提升兼容性 classpath 'io.fabric.tools:gradle:1.30.0' } subprojects { afterEvaluate { project -> if (project.hasProperty("android")) { android { compileSdkVersion 31 } } } } } allprojects { repositories { google() mavenCentral() // 替换已废弃的jcenter } } rootProject.buildDir = '../build' subprojects { project.buildDir = "${rootProject.buildDir}/${project.name}" } subprojects { project.evaluationDependsOn(':app') } configurations.all { resolutionStrategy { force 'androidx.core:core-ktx:1.7.0' // 升级到兼容版本 } } task clean(type: Delete) { delete rootProject.buildDir }
2. 统一插件的Gradle配置
修改flutter_pdf_viewer插件的build.gradle,让它的Gradle插件版本、compileSdkVersion和主项目保持一致,同时替换jcenter仓库:
group 'pt.tribeiro.flutter_pdf_viewer' version '1.0-SNAPSHOT' buildscript { repositories { google() mavenCentral() // 替换已废弃的jcenter } dependencies { classpath 'com.android.tools.build:gradle:7.2.0' // 和主项目统一Gradle插件版本 } } rootProject.allprojects { repositories { google() mavenCentral() // 替换已废弃的jcenter } } apply plugin: 'com.android.library' android { compileSdkVersion 31 // 和主项目统一compileSdkVersion defaultConfig { minSdkVersion 21 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } lintOptions { disable 'InvalidPackage' } }
3. 清理缓存并重新编译
执行以下命令清理项目缓存,避免旧配置残留:
flutter clean rm -rf android/.gradle
之后重新运行flutter run编译项目即可。
内容的提问来源于stack exchange,提问作者riki
相关产品推荐
相关产品推荐

