You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Flutter项目迁移M1 Mac遇Gradle及依赖问题求助

Flutter项目迁移到M1 Mac的两个核心问题解决思路

一、Gradle构建失败:Unsupported class file major version 65 + cp_settings缓存无法打开

核心原因

  1. Java版本不兼容:你当前使用的Java 23超出了Gradle 8.x的支持范围(Gradle 8.x最高支持Java 21),导致无法识别对应版本的类文件。
  2. AGP版本冲突:settings.gradle中com.android.application版本为8.10,而build.gradle中classpath的AGP版本为8.1.2,版本不一致引发构建异常。
  3. Gradle缓存损坏:cp_settings通用类缓存文件损坏,导致加载失败。

解决步骤

  1. 降级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。
  2. 统一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
      }
      
  3. 清理Gradle缓存

    • 删除项目根目录下的.gradle文件夹
    • 删除全局Gradle缓存:rm -rf ~/.gradle/caches
    • 重启Android Studio后重新执行构建。

二、flutter pub get提示「OS Error: File name too long, errno = 63」

核心原因

MacOS默认限制文件路径长度,从Windows迁移的项目中,部分Flutter依赖的嵌套路径过长,触发系统限制。

解决步骤

  1. 清理缓存并重新获取依赖

    • 执行flutter clean清理项目缓存
    • 执行flutter pub get --no-pub-cache绕过本地pub缓存,重新下载依赖(避免缓存中已有的长路径文件)
  2. 缩短pub缓存路径

    • 在~/.zshrc中添加pub缓存路径配置:
      export PUB_CACHE="$HOME/.pub-cache-short"
      
    • 执行source ~/.zshrc生效后,重新执行flutter pub get
  3. 优化依赖结构

    • 检查pubspec.yaml中的依赖,升级到最新稳定版本(部分新版本会优化路径结构)
    • 若特定依赖明确导致长路径问题,可替换为功能类似的轻量依赖

内容的提问来源于stack exchange,提问作者Lucas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 03:03:10