Flutter项目Gradle未复用本地缓存重复下载依赖问题咨询
解决方案
重复拉取依赖的核心原因是仅配置了单个项目的参数,未设置全局级别的缓存规则,按以下步骤调整即可:
1. 配置Gradle全局缓存规则
当前仅修改单项目下的[project_directory]/android/gradle/wrapper/gradle-wrapper.properties时,新建项目会自动生成默认的远程拉取配置,无法复用本地包:
- 编辑/创建用户目录下的全局Gradle配置文件
~/.gradle/gradle.properties,添加固定的本地分发地址:
distributionUrl=file:///run/media/me/gradle-7.2-all.zip
- 执行命令修复Gradle缓存目录权限,避免权限不足导致缓存写入失败、每次触发重新下载:
chmod -R 755 ~/.gradle
2. 配置Flutter Pub全局缓存
修改pubspec.yaml后重复拉取依赖,是Pub缓存路径未正确配置导致的:
- 打开当前使用的Shell配置文件(Bash对应
~/.bashrc、Zsh对应~/.zshrc),添加Pub全局缓存路径配置:
export PUB_CACHE=~/.pub-cache export PATH="$PUB_CACHE/bin:$PATH"
- 执行
source ~/.bashrc(替换为实际修改的配置文件路径)让环境变量立即生效。后续执行flutter pub get时会优先读取PUB_CACHE目录下的已缓存依赖,不会重复发起网络请求。
3. 配置Flutter新项目默认模板
如果需要新建Flutter项目时默认使用本地Gradle配置,无需每次手动修改,可以直接调整Flutter SDK内置的项目模板:
- 找到Flutter SDK安装目录下的模板文件:
packages/flutter_tools/templates/app/android.tmpl/gradle/wrapper/gradle-wrapper.properties.tmpl - 将文件内的
distributionUrl字段值替换为本地Gradle包路径file:///run/media/me/gradle-7.2-all.zip,后续新建项目会自动套用该配置。
验证配置
配置完成后,在项目目录下执行flutter clean清理旧的构建缓存,再执行flutter run即可正常复用本地缓存,不会重复拉取已下载的依赖。
注:当前使用的Flutter 3.1.0版本默认匹配Gradle 7.2,版本兼容无问题,配置前可执行flutter doctor -v确认所有环境路径识别正常。
内容的提问来源于stack exchange,提问作者Conde
相关产品推荐
相关产品推荐

