Flutter构建APK失败:Gradle报错(升级Kotlin插件仍未解决)
问题:Flutter项目构建APK失败(iOS运行正常)
我的项目在iOS模拟器中运行完全正常,但构建APK时失败,错误信息如下:
FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:minifyReleaseWithR8'. > A failure occurred while executing com.android.build.gradle.internal.tasks.R8Task$R8Runnable > Compilation failed to complete, origin: /Users/mac/Documents/flutter/myvidcall/build/record_android/intermediates/runtime_library_classes_jar/release/classes.jar:com/llfbandit/record/record/format/Format.class * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 4m 45s Running Gradle task 'assembleRelease'... 286.5s ┌─ Flutter Fix ──────────────────────────────────────────────────────────┐ │ [!] Your project requires a newer version of the Kotlin Gradle plugin. │ │ Find the latest version on │ │ https://kotlinlang.org/docs/releases.html#release-details, then update │ │ /Users/mac/Documents/flutter/myvidcall/android/build.gradle: │ │ ext.kotlin_version = '<latest-version>' │ └────────────────────────────────────────────────────────────────────────┘ Gradle task assembleRelease failed with exit code 1
我已多次将Gradle升级到最新版本,也尝试过2.0.0及稍低版本,但问题依然存在。以下是我的Gradle配置片段:
... buildTypes { release { signingConfig signingConfigs.debug // Enable shrinking, obfuscation, and code optimization for the release build minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' // Add this block to exclude problematic classes from minification proguardFiles 'proguard-rules.pro' } } ...
解决方案
更新Kotlin Gradle插件版本:修改
android/build.gradle中的ext.kotlin_version为与当前Gradle版本匹配的最新稳定版(例如Gradle 7.x对应Kotlin 1.7+,Gradle 8.x对应Kotlin 1.8+)。修复重复的ProGuard配置:你的release构建配置中重复声明了
proguardFiles,会覆盖默认配置,需合并为一行:proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'添加针对record_android库的混淆规则:在
proguard-rules.pro文件中加入以下规则,防止R8混淆该库的关键类:-keep class com.llfbandit.record.record.format.Format { *; } -keep class com.llfbandit.record.** { *; }临时排查方案:如果以上方法无效,可先关闭代码混淆和资源压缩,确认是否是混淆导致的问题:
minifyEnabled false shrinkResources false
内容的提问来源于stack exchange,提问作者flochristos
相关产品推荐
相关产品推荐

