Flutter版本升级后Android项目构建失败(Mac环境,涉及flutter-plugin-loader)
我完全理解你升级Flutter版本后遭遇Android构建失败的挫败感——明明iOS和Web端都运行正常,唯独Android掉链子,甚至降级Flutter到3.32.8也没能解决问题,这确实让人摸不着头脑。结合你提供的所有配置信息和环境细节,我整理了几个针对性的排查与修复步骤,你可以跟着一步步操作试试看:
1. 对齐Kotlin、Gradle与Flutter的版本兼容性
从你的配置来看,settings.gradle中指定的Kotlin版本是2.1.0,而你当前使用的Flutter 3.32.8稳定版对Kotlin 2.x系列的适配还不够完善,过高的Kotlin版本会和Flutter自带的Gradle插件产生冲突。建议将Kotlin版本降级到Flutter官方推荐的兼容版本:
修改android/settings.gradle中的Kotlin插件版本:
plugins { id "dev.flutter.flutter-plugin-loader" version "1.0.0" apply false // 加上apply false,避免提前加载 id "com.android.application" version "8.5.0" apply false id "org.jetbrains.kotlin.android" version "1.9.21" apply false // 替换为1.9.21 }
说明:Flutter 3.32.x稳定版与Kotlin 1.9.21、Gradle 8.5的兼容性经过验证,能有效避免版本不匹配导致的构建错误。
2. 统一Android编译配置,消除强制覆盖冲突
你的android/build.gradle中通过subprojects强制所有Android模块使用compileSdkVersion 34,但同时你本地已经安装了android-35平台,且Flutter的Gradle插件会自动管理编译版本,这种强制设置可能引发冲突。建议调整这部分配置:
修改android/build.gradle的subprojects区块:
subprojects { afterEvaluate { project -> if (project.plugins.hasPlugin("com.android.application") || project.plugins.hasPlugin("com.android.library")) { project.android { // 统一为你已安装的平台版本,或移除让Flutter自动适配 compileSdkVersion 35 buildToolsVersion "35.0.0" } } } }
同时,确保android/app/build.gradle中保留Flutter版本同步配置:
android { compileSdkVersion flutter.compileSdkVersion // 保持这个配置,让Flutter同步版本 ndkVersion flutter.ndkVersion // ... 其他配置不变 }
3. 优化flutter-plugin-loader的引用方式
你在settings.gradle中手动声明了flutter-plugin-loader,但通过includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")已经引入了Flutter官方的Gradle工具包,手动声明可能导致重复加载冲突。建议调整为:
pluginManagement { // ... 其他配置不变 includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") repositories { google() mavenCentral() gradlePluginPortal() } } plugins { id "dev.flutter.flutter-plugin-loader" version "1.0.0" apply false // 仅声明,不提前应用 id "com.android.application" version "8.5.0" apply false id "org.jetbrains.kotlin.android" version "1.9.21" apply false }
这样可以让Flutter在需要时自动加载插件,避免版本或加载时机的冲突。
4. 彻底清理缓存并重新构建
Mac环境下的缓存残留是构建失败的常见元凶,建议执行以下完整清理步骤:
- 清理项目本地缓存:
flutter clean rm -rf android/.gradle ios/.gradle rm -rf build .dart_tool - (可选)清理全局Gradle缓存(若问题仍存在):
rm -rf ~/.gradle/caches - 在Android Studio中执行「File → Invalidate Caches... → Invalidate and Restart」,重启IDE。
- 重新同步依赖并构建:
flutter pub get flutter build apk --debug
5. 验证JDK版本一致性
你的环境中使用的是Android Studio bundled的JDK 21,虽然Gradle 8.5支持JDK 17+,但部分旧Flutter插件可能对JDK 21的兼容性不佳。可以尝试确认Flutter使用的JDK路径正确:
flutter config --jdk-dir="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
然后重新运行flutter doctor确认JDK配置正常。
如果以上步骤都尝试后仍未解决问题,建议你在构建时加上--verbose参数获取完整错误日志:
flutter build apk --verbose
根据日志中的具体错误提示(比如依赖冲突、插件兼容问题)再进一步排查。
内容来源于stack exchange

