从Mac M1迁移至M4后Flutter Gradle编译失败求助
问题分析与修复方案
核心问题根源
- SDK组件版本不兼容:更新Android Studio后,SDK Command-line Tools被自动升级至使用XML v4的版本,但当前Studio内置工具仅支持解析XML v3的SDK配置文件,导致SDK处理异常。
- Gradle缓存损坏:迁移设备或更新Studio后,Gradle的全局缓存(尤其是transforms目录)中残留了不兼容的缓存文件,导致JdkImageTransform任务执行失败。
- Android Platform文件版本差异:M4 Pro上的Android 34平台组件可能被自动升级,与M1上的版本不一致,进而和JBR 17的模块结构不匹配,触发jlink命令执行错误。
分步修复方案
1. 统一SDK组件版本(匹配M1环境)
- 打开Android Studio的SDK Manager,切换到「SDK Tools」标签,勾选「Show Package Details」
- 找到「Android SDK Command-line Tools」,降级到与M1上一致的版本(如33.0.2,对应XML v3)
- 检查「Android 14 (API 34)」的Platform组件,确保版本与M1上完全一致,避免自动升级带来的不兼容
2. 清理所有相关缓存
- 执行Flutter项目清理:
flutter clean - 删除Gradle全局缓存(错误提示中涉及的transforms-3目录):
rm -rf ~/.gradle/caches/transforms-3 - 删除项目本地Gradle缓存:
rm -rf android/.gradle
3. 强制指定项目JDK与Gradle版本
- 打开项目的
android/gradle.properties文件,添加以下配置确保Gradle使用Android Studio内置的JBR 17:org.gradle.java.home=/Applications/Android Studio.app/Contents/jbr/Contents/Home - 检查
android/gradle/wrapper/gradle-wrapper.properties,确认Gradle版本与M1一致:distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip
4. 验证Flutter环境配置
- 执行以下命令确认Flutter识别的SDK和JDK路径正确:
flutter doctor -v - 确保输出中「Java binary at」指向的是Android Studio的JBR 17,「Android SDK at」路径正确无误
验证修复
完成上述步骤后,重新执行:
flutter pub get flutter run
内容的提问来源于stack exchange,提问作者Bill Sanderson
相关产品推荐
相关产品推荐

