You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter Android构建报错:Kotlin版本不兼容及Release构建问题求助

Flutter Release构建R8混淆报错解决方案(排除Firebase Analytics模块后)

问题背景

你开发Flutter应用时,使用Kotlin 2.2.0、Gradle 8.14.3、JVM Target 17环境,Debug构建因Kotlin版本不兼容问题,通过排除play-services-measurement-api和play-services-measurement-impl模块解决,但执行flutter build apk --release时触发minifyReleaseWithR8任务失败。

核心原因

排除上述两个模块后,R8混淆过程中无法找到相关类的引用,或Firebase Analytics的隐式依赖被移除,导致混淆逻辑触发报错。

解决方案

1. 添加针对性R8混淆规则

在android/app/proguard-rules.pro文件中添加以下规则,避免R8误删类或抛出引用错误:

# 保留Firebase Analytics核心类
-keep class com.google.firebase.analytics.FirebaseAnalytics { *; }
-keep class com.google.firebase.analytics.ktx.FirebaseAnalyticsKtx { *; }

# 忽略被排除模块的引用警告并保留相关类
-keep class com.google.android.gms.measurement.** { *; }
-dontwarn com.google.android.gms.measurement.**

添加后重新执行Release构建,R8会跳过对这些类的严格检查,避免报错。

2. 升级Firebase Analytics版本(推荐)

从根源解决版本兼容问题,替换为兼容Kotlin 2.2.0的最新Firebase Analytics版本,示例如下:

// 在android/app/build.gradle中更新依赖
implementation 'com.google.firebase:firebase-analytics:23.1.0' // 替换为当前最新兼容版本

随后移除之前的exclude配置,执行flutter clean后重新构建,既无需排除模块,也能避免R8混淆问题。

3. 调整R8模式

在android/app/build.gradle的release构建块中关闭R8全模式,降低严格检查级别:

release {
    minifyEnabled true
    shrinkResources true
    proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    
    // 添加该行关闭R8全模式
    android.enableR8.fullMode = false
}

注意:关闭全模式会减少部分优化,但能快速解决依赖缺失导致的混淆报错。

4. 强制统一依赖版本

执行./gradlew app:dependencies查看依赖树,确认是否有其他依赖引入了旧版play-services-measurement模块,在android/build.gradle中强制统一版本:

configurations.all {
    resolutionStrategy.force 'com.google.android.gms:play-services-measurement-api:23.1.0'
    resolutionStrategy.force 'com.google.android.gms:play-services-measurement-impl:23.1.0'
}

统一版本后可移除之前的exclude配置,重新构建即可。

内容的提问来源于stack exchange,提问作者Dmytro T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 14:51:01