Windows Flutter项目迁移M1 Mac遇Gradle及依赖问题求助
Flutter项目迁移到M1 Mac的两个核心问题解决思路
一、Gradle构建失败:Unsupported class file major version 65 + cp_settings缓存无法打开
核心原因
- Java版本不兼容:你当前使用的Java 23超出了Gradle 8.x的支持范围(Gradle 8.x最高支持Java 21),导致无法识别对应版本的类文件。
- AGP版本冲突:
settings.gradle中com.android.application版本为8.10,而build.gradle中classpath的AGP版本为8.1.2,版本不一致引发构建异常。 - Gradle缓存损坏:cp_settings通用类缓存文件损坏,导致加载失败。
解决步骤
降级Java到兼容版本
- 安装Java 21(通过Homebrew执行:
brew install openjdk@21) - 修改
~/.zshrc中的JAVA_HOME配置:export JAVA_HOME=$(/usr/libexec/java_home -v 21) export PATH=$JAVA_HOME/bin:$PATH - 执行
source ~/.zshrc使配置生效,用java -version确认版本为21.x。
- 安装Java 21(通过Homebrew执行:
统一AGP版本
- 修改
android/settings.gradle中的AGP版本,与build.gradle保持一致:plugins { id "dev.flutter.flutter-plugin-loader" version "1.0.0" id "com.android.application" version "8.1.2" apply false id "org.jetbrains.kotlin.android" version "1.7.10" apply false id 'com.google.gms.google-services' version '4.3.15' apply false }
- 修改
清理Gradle缓存
- 删除项目根目录下的
.gradle文件夹 - 删除全局Gradle缓存:
rm -rf ~/.gradle/caches - 重启Android Studio后重新执行构建。
- 删除项目根目录下的
二、flutter pub get提示「OS Error: File name too long, errno = 63」
核心原因
MacOS默认限制文件路径长度,从Windows迁移的项目中,部分Flutter依赖的嵌套路径过长,触发系统限制。
解决步骤
清理缓存并重新获取依赖
- 执行
flutter clean清理项目缓存 - 执行
flutter pub get --no-pub-cache绕过本地pub缓存,重新下载依赖(避免缓存中已有的长路径文件)
- 执行
缩短pub缓存路径
- 在
~/.zshrc中添加pub缓存路径配置:export PUB_CACHE="$HOME/.pub-cache-short" - 执行
source ~/.zshrc生效后,重新执行flutter pub get
- 在
优化依赖结构
- 检查
pubspec.yaml中的依赖,升级到最新稳定版本(部分新版本会优化路径结构) - 若特定依赖明确导致长路径问题,可替换为功能类似的轻量依赖
- 检查
内容的提问来源于stack exchange,提问作者Lucas
相关产品推荐
相关产品推荐

