news 2026/5/20 8:10:46

解决Flutter项目pub get卡在Resolving dependencies的镜像配置指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
解决Flutter项目pub get卡在Resolving dependencies的镜像配置指南

1. 为什么pub get会卡在Resolving dependencies?

当你第一次运行flutter pub get或者添加新依赖后执行这个命令时,最让人抓狂的就是看着命令行卡在"Resolving dependencies..."一动不动。这种情况在国内尤其常见,我刚开始用Flutter时也经常遇到,有时候一等就是十几分钟,甚至直接超时失败。

根本原因在于Flutter默认的包管理仓库pub.dev服务器在国外,而国内网络访问这些服务器时经常会遇到各种问题。解析依赖阶段需要从服务器获取所有依赖包的元数据信息,包括版本号、依赖关系等,这个过程对网络稳定性要求很高。一旦网络出现波动或者延迟较高,就会卡在这个环节。

2. 国内镜像源的选择与对比

2.1 官方中国镜像

Flutter官方为中国开发者提供了专门的镜像服务,这是最稳定可靠的选择。它由Flutter团队直接维护,更新及时,与主仓库保持同步。配置方法很简单:

export PUB_HOSTED_URL=https://pub.flutter-io.cn export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

我在多个项目中使用这个镜像,下载速度通常在1-2MB/s,比直接连接国外服务器快很多。不过高峰期偶尔也会出现速度下降的情况。

2.2 上海交通大学镜像

上海交通大学的镜像源是另一个不错的选择,更新频率也很高:

export FLUTTER_STORAGE_BASE_URL=https://mirrors.sjtug.sjtu.edu.cn/ export PUB_HOSTED_URL=https://dart-pub.mirrors.sjtug.sjtu.edu.cn/

这个镜像的优点是服务器位于教育网内,对于校园网用户特别友好。实测在教育网环境下速度可以跑满带宽。

2.3 清华大学TUNA镜像

清华大学TUNA镜像在国内开发者中也很受欢迎:

export PUB_HOSTED_URL="https://mirrors.tuna.tsinghua.edu.cn/dart-pub/"

如果想临时使用清华镜像,可以直接在命令前加上环境变量:

PUB_HOSTED_URL="https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" flutter pub get

清华镜像的更新周期大约是每4小时同步一次,对于大多数项目来说完全够用。

3. 不同操作系统的配置方法

3.1 Windows系统配置

Windows用户可以通过修改环境变量来配置镜像源:

  1. 右键"此电脑" → 属性 → 高级系统设置 → 环境变量
  2. 在"用户变量"或"系统变量"中新建两个变量:
    • PUB_HOSTED_URL = https://pub.flutter-io.cn
    • FLUTTER_STORAGE_BASE_URL = https://storage.flutter-io.cn
  3. 保存后重启所有命令行窗口

我建议在Android Studio或VSCode中也重启一下,确保所有终端都能获取到新的环境变量。

3.2 macOS/Linux系统配置

对于macOS和Linux用户,最方便的做法是修改shell配置文件:

echo 'export PUB_HOSTED_URL=https://pub.flutter-io.cn' >> ~/.zshrc echo 'export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn' >> ~/.zshrc source ~/.zshrc

如果你使用的是bash,把.zshrc换成.bashrc.bash_profile即可。这个配置会永久生效,以后打开任何终端窗口都会自动使用镜像源。

4. 验证配置是否生效

配置完镜像源后,如何确认真的生效了呢?我通常用这几个方法验证:

  1. 执行flutter pub get时观察下载速度,正常应该明显变快
  2. 查看日志输出,如果看到类似"Downloading packages from https://pub.flutter-io.cn..."就说明在使用镜像
  3. 可以临时删除环境变量对比速度差异

有时候即使配置了镜像还是会卡住,这时候可以尝试:

flutter pub cache repair flutter clean flutter pub get

这个组合命令会清理缓存并重新获取依赖,解决了很多奇怪的问题。

5. 常见问题排查

5.1 配置了镜像但还是慢

这种情况我遇到过几次,通常有几个原因:

  1. 环境变量没有正确加载 - 试试新开一个终端窗口
  2. 项目中的某些依赖指定了绝对路径 - 检查pubspec.yaml
  3. 镜像服务器临时故障 - 换一个镜像源试试

5.2 镜像源不同步导致的问题

镜像源和主仓库之间存在同步延迟,偶尔会出现版本不一致的情况。如果你遇到依赖解析错误,可以:

  1. 检查镜像源上是否有你需要的版本
  2. 临时切换回官方源获取最新包
  3. 等待几小时让镜像同步完成

5.3 公司内网的特殊配置

有些公司的网络环境比较特殊,可能需要额外配置代理。这种情况下建议联系IT部门获取正确的代理设置,然后在Flutter命令前加上代理参数:

export http_proxy=http://company-proxy:port export https_proxy=http://company-proxy:port flutter pub get

6. 其他优化技巧

除了配置镜像源,还有一些小技巧可以提升依赖解析速度:

  1. 精简pubspec.yaml中的依赖,只保留真正需要的包
  2. 指定依赖版本范围而不是使用any,减少解析复杂度
  3. 定期运行flutter pub upgrade保持依赖更新
  4. 使用flutter pub get --offline在无网络情况下使用缓存

对于大型项目,依赖解析可能会消耗较多内存。如果遇到内存不足的问题,可以尝试增加Dart VM的内存限制:

export DART_VM_OPTIONS='--old_gen_heap_size=4096'

7. 长期维护建议

配置镜像源不是一劳永逸的事情,我建议:

  1. 定期检查镜像源是否仍然可用
  2. 关注Flutter社区关于镜像源的更新
  3. 在团队项目中统一镜像源配置
  4. 把镜像配置写入项目文档,方便新成员快速上手

我在团队项目中通常会创建一个setup.sh脚本,包含所有必要的环境配置,新成员只需要运行这个脚本就能完成开发环境搭建。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/2 1:20:41

Isaac Lab 训练机器狗和无人机demo

安装好Isaac Sim 和Isaac Lab后,其中使用Isaac Lab的最快方法是使用Batteries-included中包含的机器人任务,比如机器人和无人机任务。 ./isaaclab.sh -p scripts/reinforcement_learning/rsl_rl/train.py --taskIsaac-Velocity-Rough-Anymal-C-v0 --hea…

作者头像 李华
网站建设 2026/4/2 1:16:38

Windows任务栏美化工具TranslucentTB完全指南

Windows任务栏美化工具TranslucentTB完全指南 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 你是否厌倦了Windows任务栏单调的外观&…

作者头像 李华
网站建设 2026/4/2 1:11:34

MCP3208 12位SPI ADC嵌入式驱动与硬件设计实战

1. MCP3208芯片深度解析:面向嵌入式系统的12位8通道SPI模数转换器工程实践1.1 芯片定位与核心价值MCP3208是Microchip公司推出的逐次逼近型(SAR)模数转换器,专为资源受限的嵌入式系统设计。其核心价值在于以极简硬件接口&#xff…

作者头像 李华
网站建设 2026/4/2 1:09:35

突破物理显示限制:软件定义的多屏工作空间解决方案

突破物理显示限制:软件定义的多屏工作空间解决方案 【免费下载链接】VirtualMonitor 项目地址: https://gitcode.com/gh_mirrors/vi/VirtualMonitor 在数字工作环境中,单一物理显示器的局限性日益凸显。开发者在多任务处理时需要在代码编辑器、浏…

作者头像 李华