Flutter Android APK构建问题:Kotlin版本不兼容致应用无法启动
Flutter构建成功但分发后无法打开的问题解决
问题描述
构建Flutter应用并通过Firebase App Distribution分发时,构建过程出现版本警告但最终提示构建完成,但测试人员下载应用后无法打开。控制台输出如下:
w: 类路径中的运行时JAR文件版本应保持一致。在类路径中发现以下文件: C:/Users/AbdoulayeB/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.5.30/5fd47535cc85f9e24996f939c2de6583991481b0/kotlin-stdlib-jdk8-1.5.30.jar (版本1.5) C:/Users/AbdoulayeB/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.6.10/e1c380673654a089c4f0c9f83d0ddfdc1efdb498/kotlin-stdlib-jdk7-1.6.10.jar (版本1.6) C:/Users/AbdoulayeB/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.7.10/d2abf9e77736acc4450dc4a3f707fa2c10f5099d/kotlin-stdlib-1.7.10.jar (版本1.7) C:/Users/AbdoulayeB/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.7.10/bac80c520d0a9e3f3673bc2658c6ed02ef45a76a/kotlin-stdlib-common-1.7.10.jar (版本1.7) w: 类路径中的部分运行时JAR版本不兼容,建议从类路径中移除它们 e: C:/Users/AbdoulayeB/.gradle/caches/modules-2/files-2.1/androidx.annotation/annotation/1.5.0/857678d6b4ca7b28571ef7935c668bdb57e15027/annotation-1.5.0.jar!/META-INF/annotation.kotlin_module: 该模块是用不兼容的Kotlin版本编译的。元数据的二进制版本为1.7.1,预期版本为1.5.1。 e: C:/Users/AbdoulayeB/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.7.10/d2abf9e77736acc4450dc4a3f707fa2c10f5099d/kotlin-stdlib-1.7.10.jar!/META-INF/kotlin-stdlib.kotlin_module: 该模块是用不兼容的Kotlin版本编译的。元数据的二进制版本为1.7.1,预期版本为1.5.1。 e: C:/Users/AbdoulayeB/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.7.10/bac80c520d0a9e3f3673bc2658c6ed02ef45a76a/kotlin-stdlib-common-1.7.10.jar!/META-INF/kotlin-stdlib-common.kotlin_module: 该模块是用不兼容的Kotlin版本编译的。元数据的二进制版本为1.7.1,预期版本为1.5.1。 w: 类路径中的运行时JAR文件版本应保持一致。在类路径中发现以下文件: C:/Users/AbdoulayeB/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.5.30/5fd47535cc85f9e24996f939c2de6583991481b0/kotlin-stdlib-jdk8-1.5.30.jar (版本1.5) C:/Users/AbdoulayeB/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.6.10/e1c380673654a089c4f0c9f83d0ddfdc1efdb498/kotlin-stdlib-jdk7-1.6.10.jar (版本1.6) C:/Users/AbdoulayeB/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.7.10/d2abf9e77736acc4450dc4a3f707fa2c10f5099d/kotlin-stdlib-1.7.10.jar (版本1.7) C:/Users/AbdoulayeB/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.7.10/bac80c520d0a9e3f3673bc2658c6ed02ef45a76a/kotlin-stdlib-common-1.7.10.jar (版本1.7) w: 类路径中的部分运行时JAR版本不兼容,建议从类路径中移除它们 正在运行Gradle任务'assembleRelease'... 504.3秒 √ 已构建 build\app\outputs\flutter-apk\app-release.apk (17.4MB)。
核心原因
从日志能明确看到Kotlin版本冲突:
- 项目依赖中同时混入了Kotlin 1.5、1.6、1.7三个版本的标准库,版本不兼容
- 部分第三方依赖(如androidx.annotation)是用Kotlin 1.7编译的,但项目当前配置的Kotlin版本是1.5.1,导致元数据不匹配
虽然Gradle没有中断构建,但这种版本不一致会引发运行时崩溃,就是测试人员打不开应用的直接原因。
解决步骤
1. 统一项目Kotlin版本
打开项目根目录下的build.gradle(项目级配置文件),找到Kotlin版本配置项,统一设置为1.7.10(和依赖的编译版本匹配):
buildscript { ext.kotlin_version = '1.7.10' repositories { google() mavenCentral() } dependencies { classpath "com.android.tools.build:gradle:7.4.2" // 确保Gradle版本与Kotlin兼容 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } }
2. 清理Gradle缓存
旧缓存可能残留冲突的依赖,执行以下命令清理:
flutter clean # Windows系统执行下面这条 gradlew.bat cleanBuildCache # macOS/Linux系统执行下面这条 ./gradlew cleanBuildCache
3. 强制统一所有Kotlin依赖版本
在app目录下的build.gradle中添加强制配置,确保所有依赖都使用指定的Kotlin版本:
configurations.all { resolutionStrategy { force "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.10" force "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10" force "org.jetbrains.kotlin:kotlin-stdlib:1.7.10" force "org.jetbrains.kotlin:kotlin-stdlib-common:1.7.10" } }
4. 重新构建并分发
执行命令重新生成Release版APK,之后再通过Firebase App Distribution分发:
flutter build apk --release
内容的提问来源于stack exchange,提问作者Abdoulaye
相关产品推荐
相关产品推荐

