通过Snap安装的Flutter在Ubuntu 20.04下无法运行报错如何解决?
问题原因
该报错由以下两个核心原因触发:
- 网络访问限制:Snap版Flutter首次运行时需要请求谷歌官方的版本元数据接口获取SDK下载信息,国内网络环境下无法获取到合法的JSON格式返回值,导致解析逻辑异常。
- 解析逻辑崩溃:报错中的
select(.hash==)说明元数据解析时没有拿到合法的版本hash值,导致jq表达式语法错误,无法拼接出正确的SDK下载地址,后续curl下载、tar解压步骤依次报错,最终初始化失败。
非国内网络环境的用户出现该报错,一般是临时网络波动导致元数据拉取失败。
修复步骤
方案1:保留Snap安装的修复方案(适合不想更换安装方式的场景)
- 先配置Flutter国内镜像环境变量,终端执行以下命令(如果使用zsh终端,将所有
.bashrc替换为.zshrc):
echo 'export PUB_HOSTED_URL=https://pub.flutter-io.cn' >> ~/.bashrc echo 'export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn' >> ~/.bashrc source ~/.bashrc
- 卸载现有Snap版Flutter并清除残留缓存:
sudo snap remove flutter sudo rm -rf ~/snap/flutter/common/
- 重新安装Snap版Flutter:
sudo snap install flutter --classic
- 执行任意flutter命令触发初始化即可,此时会从国内镜像拉取元数据和SDK安装包,不会出现解析错误。
方案2:替换为官方压缩包安装(稳定性更高,推荐)
Snap版Flutter在Linux系统下存在较多权限适配问题,更推荐直接使用官方SDK压缩包安装:
- 卸载已安装的Snap版Flutter并清除残留:
sudo snap remove flutter sudo rm -rf ~/snap/flutter
- 完成方案1的第一步,配置好Flutter国内镜像环境变量。
- 下载对应架构的Flutter稳定版SDK压缩包,解压到你想要存放的目录(例如
~/opt/flutter)。 - 将Flutter可执行文件目录加入系统PATH,在/.bashrc或/.zshrc中新增一行配置:
export PATH="$PATH:~/opt/flutter/bin"
将路径替换为你实际解压的Flutter目录下的bin路径即可。
5. 执行source ~/.bashrc(或对应zsh配置文件)使配置生效,随后执行flutter doctor即可检查安装状态。
内容的提问来源于stack exchange,提问作者Adrian
相关产品推荐
相关产品推荐

