Flutter打包APK时:app:minifyReleaseWithR8任务执行失败怎么解决?
Flutter R8编译错误解决方案:minifyReleaseWithR8任务失败
问题场景
执行flutter build apk --release时触发minifyReleaseWithR8任务失败,错误指向kotlin-reflect-1.6.21.jar中的BuiltInsResourceLoader.class文件。
关键配置信息
gradle.properties
org.gradle.jvmargs=-Xmx2048M android.enableR8=true android.useAndroidX=true android.enableJetifier=true
项目根目录build.gradle
buildscript { ext.kotlin_version = '1.6.10' repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:7.1.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } allprojects { repositories { google() mavenCentral() } } rootProject.buildDir = '../build' subprojects { project.buildDir = "${rootProject.buildDir}/${project.name}" } subprojects { project.evaluationDependsOn(':app') } task clean(type: Delete) { delete rootProject.buildDir }
解决方案
1. 统一Kotlin版本(优先推荐)
报错中kotlin-reflect-1.6.21与配置指定的kotlin_version=1.6.10版本不一致,这是核心冲突点:
- 修改项目根目录
build.gradle中的ext.kotlin_version为1.6.21 - 执行以下命令清理并重新编译:
flutter clean flutter pub get flutter build apk --release
2. 添加R8混淆规则排除kotlin-reflect类
在android/app/proguard-rules.pro文件中添加规则,避免R8混淆kotlin-reflect核心类:
-keep class kotlin.reflect.jvm.internal.impl.serialization.deserialization.builtins.** { *; } -keep class kotlin.reflect.** { *; }
添加后重新执行编译命令。
3. 临时禁用R8(仅用于排查)
若以上方法无效,可临时关闭R8验证,修改gradle.properties:
android.enableR8=false
注意:此方法仅用于排查问题,不建议长期使用。
4. 清理Gradle缓存
缓存损坏也可能导致此类问题,执行以下命令清理缓存:
flutter clean rm -rf ~/.gradle/caches/ flutter pub get flutter build apk --release
内容的提问来源于stack exchange,提问作者İsmail Berkay Kara
相关产品推荐
相关产品推荐

