Flutter执行build apk时Kotlin runtime JAR版本不兼容如何解决?
问题根因
你添加的workmanager依赖内部默认依赖了1.3.50版本的kotlin标准库,加上之前的gradle配置错误,将kotlin标准库引入到了构建脚本的classpath中,没有做版本锁定,导致构建时同时拉取了两个版本的kotlin依赖,即便删除workmanager后,本地gradle缓存中依然残留旧版本依赖,所以问题持续存在。
解决方案
- 第一步:清理所有缓存
先在项目根目录执行flutter clean,再进入项目的android目录,执行gradlew clean,如果依旧报错可以手动删除C:\Users\用户名\.gradle\caches目录下的所有缓存文件,彻底清除旧版本依赖残留。 - 第二步:修正android/build.gradle配置
你当前的配置存在两处错误:- 重复声明了
classpath 'com.android.tools.build:gradle:4.2.1',删除其中一行重复配置 - 不该在buildscript的dependencies中引入kotlin-stdlib系列依赖,正确应该引入kotlin gradle插件,修改后的dependencies块如下:
dependencies { classpath 'com.android.tools.build:gradle:4.2.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } - 重复声明了
- 第三步:全局强制锁定kotlin依赖版本
在android/build.gradle的allprojects块中添加版本强制规则,覆盖所有第三方依赖的kotlin版本要求,完整配置如下:allprojects { repositories { google() jcenter() } // 新增以下版本锁定配置 configurations.all { resolutionStrategy { force "org.jetbrains.kotlin:kotlin-stdlib:1.5.10" force "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.5.10" force "org.jetbrains.kotlin:kotlin-stdlib-common:1.5.10" } } } - 第四步:简化app/build.gradle依赖
删除app/build.gradle中手动添加的三个kotlin-stdlib系列implementation依赖,全局强制规则会自动引入统一版本的依赖,避免重复声明冲突。 - 第五步:重新构建
回到项目根目录执行flutter pub get,再执行flutter build apk即可正常构建。
内容的提问来源于stack exchange,提问作者Kristin Vernon
相关产品推荐
相关产品推荐

