Linux Mint下Snap安装Flutter SDK后运行应用报错如何解决?
解决Snap安装Flutter后Gradle编译因文件名过长失败的问题
问题根源
Snap的沙盒环境对文件路径长度有严格限制,通过Snap安装的Flutter在编译Groovy代码时,生成的嵌套闭包类名(比如FlutterPlugin$_addTasksForOutputsAppLinkSettings_closure13$_closure41$_closure43$_closure44$_closure45$_closure47$_closure54$_closure59$_closure60.class)过长,触发了路径长度超限的错误。
解决方案
方案1:改用官方手动安装(推荐,彻底解决)
- 卸载Snap版Flutter:
sudo snap remove flutter - 下载Flutter SDK稳定版,解压到路径更短的目录(比如
~/flutter或/opt/flutter):# 示例:下载并解压到用户主目录 wget https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.13.9-stable.tar.xz tar xf flutter_linux_3.13.9-stable.tar.xz -C ~/ - 将Flutter的bin目录加入系统环境变量:
echo 'export PATH="$HOME/flutter/bin:$PATH"' >> ~/.bashrc source ~/.bashrc - 运行
flutter doctor检查并完成环境配置。
方案2:修改Gradle编译路径(临时 workaround)
如果不想重新安装Flutter,可以通过缩短编译输出路径绕过限制:
- 打开项目根目录下的
android/build.gradle,在buildscript块中添加自定义编译目录配置:buildscript { // 保留原有配置,新增以下内容 ext { buildDir = "../.gradle-build" // 用更短的路径作为编译输出目录 } } - 打开
android/app/build.gradle,修改android块中的buildDir:android { buildDir = rootProject.ext.buildDir + "/app" // 保留原有其他配置 } - 删除旧的编译缓存:
rm -rf android/.gradle rm -rf .gradle-build - 重新执行
flutter run尝试编译运行。
内容的提问来源于stack exchange,提问作者user19922822
相关产品推荐
相关产品推荐

