Flutter SDK内.pub-cache与用户主目录下.pub-cache的差异
Flutter 两个
.pub-cache 目录的区别 以下是这两个缓存目录的核心差异:
归属与作用范围
- Flutter SDK 内的
~/path/to/flutter/.pub-cache/:属于特定版本的Flutter SDK,仅为该SDK提供依赖缓存服务。当你切换不同版本的Flutter时,每个SDK都会拥有独立的该缓存目录,彼此互不干扰。 - 用户主目录下的
~/home/.pub-cache/:属于当前系统用户,是全局通用的Pub缓存目录。所有未指定专属缓存路径的Pub/Flutter操作,都会默认使用这个目录,不同版本的Flutter也可共享其中的依赖缓存。
- Flutter SDK 内的
缓存内容的独立性
- SDK内的缓存:仅存储适配当前Flutter版本的依赖包。部分依赖对Flutter版本有严格要求,这个目录里的包都是与当前SDK版本匹配的。
- 用户主目录的缓存:会存储所有通过Pub安装的依赖,无论对应哪个Flutter版本,除非你手动配置了单独的缓存路径。
配置与使用逻辑
- SDK内的缓存:无需额外配置,使用该SDK执行
flutter pub get时,默认会优先使用或更新这个目录的缓存(未设置环境变量的前提下)。 - 用户主目录的缓存:可通过设置
PUB_CACHE环境变量指定。如果希望所有Flutter版本共享依赖缓存,可将该变量指向用户主目录的.pub-cache;若要隔离不同SDK的缓存,则可指向对应SDK内的缓存目录。
- SDK内的缓存:无需额外配置,使用该SDK执行
清理与迁移影响
- SDK内的缓存:删除该目录仅会影响当前Flutter SDK的项目依赖,重新执行
flutter pub get即可重新下载适配的依赖,适合切换SDK版本后清理旧缓存。 - 用户主目录的缓存:删除会影响所有使用该全局缓存的Flutter项目与SDK,清理后所有项目都需要重新下载依赖,适合全局清理过时依赖时操作。
- SDK内的缓存:删除该目录仅会影响当前Flutter SDK的项目依赖,重新执行
内容的提问来源于stack exchange,提问作者alireza easazade
相关产品推荐
相关产品推荐

