首页 / 资讯中心 / 文章详情

C盘爆满?Android SDK、AVD、Gradle缓存迁移实战指南

C盘爆满?Android SDK、AVD、Gradle缓存迁移实战指南 ★ FEATURED ARTICLE
C盘红了一眼扫过去 Android Studio 相关目录加起来占了快 100GB这个问题我前后处理过很多次也帮不少同事弄过。网上零零散散的教程不少但大多只讲“把 SDK 移走”这一件事真正占用空间的大头——AVD 模拟器镜像、Gradle 缓存、Android Studio 自身配置目录——基本没人系统讲清楚。这篇文章就按我自己的实操顺序把整套“路径迁移指南”写完整适合所有被 C 盘空间折磨的 Android 开发者也适合 Gradle、Java 相关工具链的重度用户。迁移这件事说穿了就是“把大的目录搬走把路径指过去”。但坑也恰恰藏在路径上改环境变量、改配置文件、改项目里的 local.properties每一步漏了都会让项目 Sync 失败。所以我先帮你把 Android Studio 的家底彻底摸一遍再给出每一步的完整操作和避坑经验。1. 动手之前先看清Android Studio 的家底到底在哪1.1 一张表看清五大空间去向很多人一上来就删缓存、删旧项目折腾半天 C 盘空间没涨多少原因就是没找到真正的“空间杀手”。我习惯先把 Android Studio 相关的目录全部列出来看一遍大小再动手。目录默认位置典型占用内容说明Android SDKC:\Users\用户名\AppData\Local\Android\Sdk15-40GBplatforms、build-tools、platform-tools、system-imagesAVD 模拟器C:\Users\用户名.android\avd20-80GB每个模拟器的系统镜像、用户数据、快照Gradle 缓存C:\Users\用户名.gradle8-30GBGradle 发行版压缩包、依赖缓存、编译缓存Android Studio 配置目录C:\Users\用户名\AppData\Local\Google\AndroidStudio版本号2-10GB索引、日志、缓存、插件相关AS 安装目录C:\Program Files\Android\Android Studio3-6GB程序本体真实情况里AVD 和 SDK 往往是最先爆掉的两个。特别是模拟器几乎每个开发者都会创建两三个不同 API Level 的 AVD每个 AVD 从 6GB 到 20GB 不等几个叠加 C 盘直接告急。Gradle 缓存也容易被忽略你每拉一个新项目、换一个新 Gradle 版本它都会往 .gradle 里写一堆东西日积月累非常可观。1.2 迁移前必做的三件准备迁移这件事最忌讳“开着 Android Studio 直接剪切目录”。文件被占用时 Windows 会提示无法移动就算强行动了也可能导致索引损坏、SDK 路径失效。我在动手前一定会按这个顺序准备关闭 Android Studio关闭所有模拟器退出 Android 模拟器进程。打开任务管理器确认没有 java.exe、studio64.exe、adb.exe 等进程残留有就结束。用 WizTree 或 TreeSize Free 扫描 C 盘先确认真正的大目录到底在哪再顺带看看有没有可以顺手删掉的旧版本 SDK、无用系统镜像。WizTree 速度比资源管理器自带的“文件夹属性”快非常多几秒钟就能扫完整个盘而且能直接按大小排序一眼找到占用最高的目录。我见过有人以为自己的 Android Studio 装到了 D 盘就没事结果 SDK、AVD、Gradle 全在 C 盘这种情况用扫描工具一照就全露馅了。另外提醒一句迁移前最好给当前正常可用的 AVD 做个备份尤其是你在模拟器里装了不少测试 App、保存过重要快照的情况下。AVD 的备份不是简单复制整个目录就行后面 3.2 里我会讲具体怎么处理和校验。2. 第一刀把 Android SDK 整体搬到 D 盘2.1 标准搬迁流程与路径修改Android SDK 是迁移里最“传统”的一块操作不难但很多人改完环境变量还是报错原因往往是项目里的 local.properties 没有跟着改。我的标准流程是这样的将C:\Users\用户名\AppData\Local\Android\Sdk整个目录剪切到D:\Android\Sdk。设置系统环境变量setx ANDROID_HOME D:\Android\Sdk setx ANDROID_SDK_ROOT D:\Android\Sdk打开 Android Studio进入 Settings - Languages Frameworks - Android SDK把 Android SDK Location 改成D:\Android\Sdk。检查项目根目录下的local.properties把里面的sdk.dir改成新路径sdk.dirD:/Android/Sdk如果不改 local.properties最典型的症状就是 Gradle Sync 报SDK location not found。我见过一个比较偷懒但很实用的做法不要手动去改每个项目的 local.properties而是把那些历史项目的 local.properties 直接删掉让 Android Studio 重新生成。因为只要 AS 的全局 SDK Location 配好了重新打开项目后它会自动生成正确的 local.properties。2.2 环境变量不是万能的local.properties 优先级更高这里必须解释一个很多人搞混的点local.properties 里的sdk.dir优先级高于环境变量ANDROID_HOME。在使用 Gradle 命令行构建时如果没有 local.properties系统才会去找 ANDROID_HOME。所以并不是“设置了环境变量就一劳永逸”你在 Android Studio 里用图形界面打开的老项目它认的是 local.properties 里的绝对路径。我帮同事排查过一个问题环境变量已经指向 D 盘Command Line Tools 也能用但 Android Studio 里所有项目都显示 SDK 找不到。最后发现就是项目里 local.properties 还在写 C 盘旧路径。这种问题非常隐蔽因为你不会挨个项目去翻这个文件但它确实会卡住整个 Sync。2.3 更省心的“透明迁移”Windows 目录联接如果你觉得改环境变量、改 local.properties 太容易漏还有一个更稳的方案——用 Windows 的目录联接Junction把旧路径“映射”到新路径。mklink /J C:\Users\用户名\AppData\Local\Android\Sdk D:\Android\Sdk执行完后C 盘那个 Sdk 路径依然能访问但数据实际都存储在 D 盘。Android Studio、Gradle 完全感知不到变化local.properties、环境变量都不用改项目该怎么 Sync 还怎么 Sync。这个方案对“已经有一堆历史项目、不想一个个改 local.properties”的人来说是最省事的。但我提醒三点mklink /J不需要管理员权限普通权限的命令行窗口就能执行。它比符号链接mklink /D更稳定符号链接在某些软件里会被识别成“链接文件”导致处理异常而目录联接更像一个“挂在原位置的文件夹”。删除链接时要小心资源管理器里删除链接本身是安全的但命令行里用rd /s对链接路径操作有可能递归删除目标目录。我的习惯是删除链接一律用资源管理器操作不碰命令行。3. 第二刀搞定 Gradle 缓存、AVD 模拟器和 AS 自身配置目录3.1 Gradle 缓存迁移别忽略 wrapper 目录结构Gradle 缓存里有两个大头一个是wrapper/dists下载的各种 Gradle 发行版另一个是caches依赖 jar、编译缓存、Kotlin 缓存等。很多教程只告诉你设置GRADLE_USER_HOME环境变量但没说迁移之后第一次构建会卡很久原因就是新路径里没有旧缓存Gradle 要把之前下载过的发行版和依赖重新拉一遍。我的做法是先关闭所有 Gradle 相关进程。复制C:\Users\用户名\.gradle整个目录到D:\Android\gradle-home。注意是用复制而不是剪切后面还要在原位置留一个安全退路。设置环境变量setx GRADLE_USER_HOME D:\Android\gradle-home在 Android Studio 的 Settings - Build, Execution, Deployment - Build Tools - Gradle 里把 Gradle user home 改成同一个路径。直接复制旧缓存是关键操作可以省掉重新下载的时间。如果你跳过这步直接换路径首次 Sync 会像新装环境一样卡在 Gradle 下载上尤其是国内网络环境下下那个几百 MB 的 Gradle 发行包可能要等很久。顺带说一个很实用的手动补救方法如果你已经切到了新路径发现 Gradle 卡在Downloading gradle-8.x-all.zip可以先手动下载对应版本的 zip 文件再放到wrapper/dists对应的哈希目录下。注意Gradle 的 dists 目录结构不是简单的版本号/zip中间还有一层哈希值目录你必须把 zip 放到正确的三级目录里否则 Gradle 不认还是会重新下载。3.2 AVD 模拟器镜像迁移整体迁移才最省心AVD 是很多人迁移时最容易翻车的地方。默认情况下 AVD 文件在C:\Users\用户名\.android\avd每个模拟器目录里包含系统镜像、用户数据、快照随便一个都是 10GB 起步。迁移 AVD 时网上有教程让你改.ini文件里的path这种方法能用但有个隐患你之后新建模拟器时新 AVD 还是会写到默认的C:\Users\用户名\.android\avd里等于旧问题复发。所以我推荐的方式是对整个.android目录做整体迁移关闭所有模拟器。剪切C:\Users\用户名\.android目录到D:\Android\.android。创建目录联接mklink /J C:\Users\用户名\.android D:\Android\.android这样做的最大好处是.android目录里的avd、debug.keystore、adbkey、配置文件全部跟着走旧路径依然有效新建模拟器也还是写到这个“伪装的旧路径”下实际上落在 D 盘。Android Studio 和模拟器管理界面完全无感不会出现某个模拟器不识别、某个密钥丢失的问题。如果你已经只迁移了单个.avd目录并创建了链接那也可以用但要注意那条.ini文件里的path是否指向正确。手动修改时最容易踩的坑是路径分隔符和空格问题Windows 路径里的反斜杠在配置文件中经常被解析出问题所以我一直建议直接整体迁移.android别去跟单个 AVD 的配置较劲。3.3 Android Studio 自身配置缓存可迁移但优先级最低Android Studio 的自身配置分成两块AppData\Local\Google\AndroidStudio2024.2是缓存、索引、日志AppData\Roaming\Google\AndroidStudio2024.2是设置、插件、键位方案。正常情况下这两块加起来也就是个位数 GB没前面几个那么恐怖但也有膨胀到 10GB 以上的时候。如果你想让 C 盘空间更充裕可以用 AS 安装目录下的bin\idea.properties文件改路径。在idea.properties里找到或新增这几行idea.system.pathD:/Android/AndroidStudio/system idea.config.pathD:/Android/AndroidStudio/config idea.log.pathD:/Android/AndroidStudio/log改完后重启 Android Studio它会在 D 盘重建索引和缓存目录。注意一点idea.properties如果写错可能导致 AS 启动不了这时候直接把文件里改动的行删掉、恢复默认就能回来不慌。不过我的个人建议是如果只是 C 盘吃紧优先迁移 SDK、AVD、Gradle 三个大头AS 自身配置目录能不动就不动顶多删除或清理它下面的log、index、caches目录让 AS 自己重建。因为修改 idea.properties 属于“改程序行为”升级 Android Studio 大版本时还可能出现新版本生成新配置目录的意外情况维护成本有点高。另外一个常见的占用是汉化插件。新版 Android Studio 可以通过 Settings - Plugins 安装中文语言包安装后插件藏在配置目录里如果你之前装过多个版本的 AS 配置汉化插件可能让某个配置目录变大。这种情况删掉不需要的旧配置目录即可不影响主程序。4. 实操总记录我推荐的迁移顺序与空间变化实测4.1 一次完整迁移的执行清单我再把全套流程整理成清单按这个顺序做可以减少很多额外返工。这份清单是我处理多台机器后总结出来的顺序经过实测每一步之间都有承接关系。用 WizTree 扫描 C 盘确认 SDK、AVD、Gradle 三大目录的实际大小。关闭所有开发相关进程和模拟器。迁移 Android SDK 到 D 盘更新环境变量和 AS 内 SDK Location偷懒做法是直接用mklink /J做透明迁移。迁移.gradle目录到 D 盘设置GRADLE_USER_HOME环境变量和 AS 内的 Gradle user home。迁移.android目录到 D 盘用目录联接保住旧路径。重启电脑打开 Android Studio逐个打开旧项目检查 Gradle Sync、模拟器启动、SDK 识别是否正常。确认一切正常后清理旧的 C 盘残余文件、临时缓存释放空间。第 2 步容易被忽略但特别重要。我就吃过亏开着模拟器迁移.android结果目录里某些文件处于占用状态移动过程报错最后模拟器配置损坏只能重建 AVD。所以这一步一定不能急。4.2 迁移前后到底能释放多少空间以我自己最近处理的一台开发机为例C 盘 512GB迁移前可用空间只剩 6GB。扫描结果如下项目迁移前占用迁移后占用变化Android SDK32GBC 盘 0GBD 盘 32GB释放 32GBAVD 镜像71GBC 盘 0GBD 盘 71GB释放 71GBGradle 缓存22GBC 盘 0GBD 盘 22GB释放 22GBAS 配置目录9GBC 盘 1GBD 盘 8GB释放约 8GB总体释放了差不多 130GB 的 C 盘空间。这还只是 SDK、AVD、Gradle 三个大头如果再把 AS 配置目录也迁走能腾出更多。迁移后用 Android Studio 打开原项目Gradle Sync 时间和模拟器启动速度几乎不受影响因为 SSD 本身读写性能足够跨盘访问的损耗根本感知不到。5. 常见问题与排查实录5.1 SDK location not found 报错迁移后最常见的报错就是SDK location not found。原因基本集中在三处local.properties里的sdk.dir还指向 C 盘旧路径。环境变量ANDROID_HOME没设置或者值不对。AS 内的 SDK Location 还停留在旧位置。排查顺序建议先看项目的 local.properties再看 AS 的 Settings - Android SDK最后确认环境变量。如果项目多我推荐直接批量删除 local.properties让 AS 重新生成比一个一个改更快更省事。5.2 模拟器启动失败、卡在 RunningAVD 迁移后用目录联接一般不会出问题但如果你恰好改过.ini文件里的路径或者只迁移了某个.avd目录就可能出现两种状况启动时报系统镜像找不到或者模拟器窗口一直卡在启动界面。我的排查思路是检查 AVD 对应的.ini文件确认path是否指向真实存在的.avd目录。确认系统镜像还在SDK 下的system-images目录没有被误删。检查模拟器相关虚拟化服务是否正常迁移并不会影响 Hypervisor 相关配置但如果你用某些第三方加速器挪目录后偶尔会需要重新初始化。如果问题实在解决不了最快的恢复方式是用 AVD 管理界面删掉旧 AVD重新创建一个。虽然模拟器里的测试数据会丢但总比卡在排查里强。我一般会在迁移前就给重要 AVD 做快照备份万一出问题还能整体恢复。5.3 Gradle 首次 Sync 卡在下载发行版改变 Gradle 用户目录后第一次 Sync 如果卡在Downloading gradle-x.x-all.zip九成原因是新路径的wrapper/dists下没有对应版本的发行包。处理方法上面提到过从旧.gradle\wrapper\dists目录完整复制过来或者手动下载 zip 放到正确的哈希目录里。这里分享一个实测技巧复制旧缓存时不要只复制wrapper目录把整个.gradle复制过去最保险。因为caches里的依赖包同样是耗时大户如果只迁移 wrapper 不迁移 cachesSync 时还是会重新下载一大堆依赖时间成本很高。5.4 目录联接的副作用和坑目录联接虽然方便但也有一些副作用值得提前知道。备份工具和同步工具会把链接当作普通文件夹做整盘备份时可能出现重复备份、甚至是死循环。如果你经常用系统备份软件建议把迁移后的目录加入备份排除列表或者直接备份 D 盘对应的真实目录。另外在命令行里删除链接目录要特别小心。我个人的铁律是链接目录的删除操作一律用 Windows 资源管理器完成不用命令行也不使用批量删除脚本。5.5 Android Studio 升级后路径悄悄“回退”这是很多人过几个月才发现的问题明明已经迁移完了某次 Android Studio 大版本升级后C 盘空间又开始猛涨。原因就是新版 Android Studio 创建了一个全新的配置目录比如从AndroidStudio2024.1升级到AndroidStudio2024.2新版本不会再使用旧配置目录。我现在的习惯是在 AS 升级后立刻检查AppData\Local\Google目录一旦发现新版本的配置目录在 C 盘生成马上重复一次迁移操作剪切到 D 盘创建目录联接。这样才能避免“迁移一次半年后又红了”的尴尬。最后再分享一个我日常维护的小习惯每次升级完 Android Studio 或者切换新 Gradle 版本我都会看一下.android、.gradle、Sdk三个目录的大小。旧 Gradle 发行版留在.gradle\wrapper\dists里的压缩包确认不需要就删只为测试装过一两次的 system-image也顺手清理。这些习惯看起来琐碎但长期下来能避免 C 盘反复告急比一次性迁移更值得养成。
阅读完成 · 觉得有帮助?
咨询建站