尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Android Studio C盘空间爆满?教你迁移SDK与缓存到D盘

Android Studio C盘空间爆满?教你迁移SDK与缓存到D盘 你有没有遇到过这种情况Android Studio用的好好的C盘突然就红了磁盘空间告急什么都不敢装。我最早被这个问题坑的时候还以为是项目太大后来一查才发现真正吃掉C盘空间的不是代码而是Android Studio默认放在C盘的SDK目录和一堆缓存文件。今天这篇就专门聊清楚一件事怎么把AndroidStudio的SDK目录、Gradle缓存、模拟器镜像、系统缓存全部挪到D盘或其他大容量分区一次性释放C盘空间治标也治本。这篇文章适合所有被C盘磁盘空间困扰的Android开发者不管你是刚入门的新手还是已经跑了几个项目的熟手只要你的Android Studio默认装在C盘、SDK和缓存都走默认路径看这一篇就够了。我写的内容全部来自实际操作每一步都验证过按顺序抄作业就能完成迁移不用反复试错。1. 摸清C盘空间的“大头”它们到底都存在哪1.1 四个占用大户的默认位置先别急着动手搬家搞清楚Android Studio默认把东西都放在哪里才知道该迁什么、不迁什么。很多人以为Android Studio装在哪个盘数据就在哪个盘这是最大的误解。实际上Android Studio从安装那一刻起绝大多数用户级数据都走系统用户目录也就是C盘。我可以负责任地说C盘空间消失基本逃不出下面这四个目录SDK目录默认在C:\Users\你的用户名\AppData\Local\Android\Sdk。这里面装的是platforms、build-tools、platform-tools、system-images等组件。光是一个SDK装齐常用版本和系统镜像轻松吃掉10GB到30GB不止这是C盘空间最大的一个独立占用源。Gradle用户目录默认在C:\Users\你的用户名\.gradle。这里面有两个东西最占地方一个是caches目录存放所有项目依赖的jar包、aar包、AAR转换后的临时文件另一个是wrapper\dists目录存放每个项目用到的Gradle发行版压缩包和解压后的运行目录。每个Gradle发行版动辄100MB到200MB依赖缓存的累积更是无底洞二十几个GB的Gradle缓存目录我亲眼见过。AVD模拟器镜像默认在C:\Users\你的用户名\.android\avd。每个AVDAndroid Virtual Device包含一个很大的磁盘镜像文件常见的是2GB到8GB如果你建了三四个不同API级别的模拟器这部分空间加起来非常可观。Android Studio系统缓存默认在C:\Users\你的用户名\.AndroidStudio2023.3版本号不同目录名不同以及C:\Users\你的用户名\AppData\Roaming\Google\AndroidStudio2023.3。这里面有IDE的索引、文件缓存、日志、局部历史记录等虽然单看不算多大一般一两个GB但攒久了同样让人头疼。除了这四个大头还有一些零散缓存比如IDEA插件缓存、系统临时文件但相比之下优先级不高。我建议的迁移顺序是SDK目录、Gradle用户目录、AVD镜像、Android Studio系统缓存。按空间收益从大到小排列每一步都能快速见效。1.2 迁移方案的核心思路重定向而非复制粘贴很多人的第一反应是“我直接把C盘的SDK文件夹剪切到D盘行不行”这就是坑的起点。直接剪切文件夹有两个致命问题第一Android Studio和现有项目仍会按照旧路径查找文件一旦找不到整个IDE和构建系统会直接报错第二系统服务、PATH环境变量、项目配置文件里的路径全部指向旧位置你不可能一个个手动改完。正确的思路是“重定向”也就是让Android Studio、Gradle和模拟器去新的路径找它们需要的东西而不是让系统适应你手动移动后的目录。三步走先新建目录放内容再修改配置指定新路径最后重启验证。理解了这一点后面所有步骤都是顺着这个主线走的。还有个技术细节值得说Windows上还有一种“符号链接”方案用mklink /D创建目录链接把C盘的默认路径指向D盘实际目录。这个方案确实能做到“路径不变、物理位置变了”但它的前提是你愿意维护链接关系且对系统层操作更熟悉。对于常规开发场景我更推荐直接修改配置理由很简单配置是Android Studio原生支持的机制改完一劳永逸不依赖系统的链接状态也不会因为某些工具不识别链接而出问题。2. SDK搬家改一个路径全盘生效2.1 在Android Studio里优雅地更换SDK目录SDK目录的迁移我把它定义为“最没有技术含量但收益最高”的一步因为它完全不用碰文件Android Studio自带了一个可视化迁移入口。具体操作路径打开Android Studio进入SettingsWindows上是File菜单下的Settings在左侧导航找到Languages Frameworks展开后点Android SDK。右边的界面第一栏写着Android SDK location点旁边的Edit按钮有些版本是三个点Android Studio会弹出一个SDK设置向导允许你重新指定一个全新的SDK目录。这里有个很多人会犯的错误点Edit之后Android Studio会默认选中你当前的SDK目录你要做的不是直接点Finish而是先手动修改路径为你想要的新位置比如D:\Android\Sdk。确认新路径后向导会提示“这个目录是空的需要下载哪些组件”并列出当前安装的所有SDK平台、Build-Tools版本、System-Images。保持默认全选点Next开始下载安装这一步会把你原来SDK的所有组件在新路径下重新装一遍。下载完成后Settings界面顶部显示的路径就变成了新位置Android Studio从此彻底切换到新SDK目录。等它下载同步结束原有的SDK目录就可以放心的手动删除或者先留着观察一段时间。你可能会问这不就是重新下了一遍吗跟复制剪切有什么区别区别在于Android Studio通过正规下载流程会在新目录里生成完整的包管理元数据后续SDK Manager的增量更新、版本识别、许可接受状态全都基于这个元数据工作。直接复制旧目录虽然文件都在但偶尔会出现版本识别异常、许可状态丢失的问题。所以我的建议始终是直接用Edit功能让SDK Manager自己在新位置“重建”省心又干净。2.2 手动迁移兼容老项目SDK目录迁移完后大部分事情就该正常了但有一类场景需要额外处理旧项目里指定了绝对SDK路径。Android项目里通常有一个local.properties文件位于项目根目录里面有一行sdk.dirC:\\Users\\你的用户名\\AppData\\Local\\Android\\Sdk。这个路径一旦指向旧目录项目构建就会报错“SDK location not found”。怎么处理最简单的方式是打开项目根目录下的local.properties把sdk.dir改成新的SDK路径然后把反斜杠替换成双反斜杠或者用正斜杠例如sdk.dirD:\\Android\\Sdk。改完后重新Sync一下项目。另外还有一种情况是环境变量。部分项目的构建脚本或命令行工具依赖ANDROID_HOME或ANDROID_SDK_ROOT环境变量这两个变量可能在你装SDK的时候被写入过系统环境变量。我的建议是顺手把Windows环境变量也更新了进入系统属性→高级→环境变量找到ANDROID_HOME和ANDROID_SDK_ROOT如果有把它们的值都改成新SDK路径。没有设置过的话可以不设置Android Studio和Gradle现在都能通过local.properties找到SDK。这里插一条操作提醒修改完环境变量后要重启Android Studio和所有命令行窗口才生效不要修改完就急着验证说“怎么没生效”。2.3 SDK迁移容易踩的坑SDK迁移这部分我遇到过几个比较典型的坑单独列出来大家避一避新路径不能有中文和空格。SDK Manager虽然是Java开发的但底层的构建工具和命令行工具对路径的解析能力参差不齐个别工具尤其老的NDK版本、CMake遇到中文路径会直接失败。建议只使用字母和数字的绝对路径比如D:\Android\Sdk。System-Images其实很大。有些同学迁移完SDK发现没释放多少空间仔细一看原来模拟器的系统镜像system-images目录占了大头。不用慌SDK Manager在重建的时候也会把这些镜像重新下载到新目录你只要在Edit向导里确认System-Images被勾选即可。删除旧SDK目录前要确认三件事新SDK能正常编译项目、模拟器能正常启动、SDK Manager能正常显示已安装组件。确认之后再去删别急着一刀切。3. Gradle用户目录迁移最容易被忽视的空间黑洞3.1 Gradle目录里到底装着什么如果说SDK是明面的大户那Gradle用户目录就是名副其实的“空间黑洞”因为它藏得很深而且很多开发者根本不知道它存在。我们平常用Android Studio打开项目Gradle会在后台下载依赖库、下载Gradle发行版这些东西默认全部进入C:\Users\你的用户名\.gradle。这个目录的结构大致是这样的.gradle\caches\modules-2\files-2.1存放项目依赖的所有构件jar包、aar包都在这里按组名、模块名、版本号层层嵌套。项目的依赖越多这个目录越大几十GB不是梦。.gradle\wrapper\dists存放Gradle Wrapper下载的各版本Gradle发行版。每个版本一个文件夹里面有压缩包和解压后的完整运行目录。.gradle\caches\transforms-*这是AAR转换后的中间产物用于把AAR解包、处理资源并生成可用于编译的jar和资源。每次构建都会在这个目录里产出文件。.gradle\daemon后台守护进程的相关目录不算大。.gradle\jdks部分较新的Gradle版本会在这里存放它自动下载的JDK。这中间最要命的是caches和wrapper它们加起来基本能占据Gradle目录的95%以上体积。很多项目从Git仓库拉下来后第一次构建会下载数百MB依赖并缓存到Gradle目录里这个缓存一旦积累下来C盘空间就像流水一样没了。3.2 GRADLE_USER_HOME环境变量的正确配置迁移Gradle用户目录的官方机制是修改GRADLE_USER_HOME环境变量。Gradle在启动时会检查这个环境变量如果设置了它就把GRADLE_USER_HOME指向的目录当作自己的用户目录如果没有设置默认才是用户目录\.gradle。具体的操作流程如下关闭Android Studio和所有命令行中可能正在运行的Gradle进程避免文件占用。在文件资源管理器中找到C:\Users\你的用户名\.gradle把它完整复制到新位置例如D:\Gradle\UserHome。复制之前先看一眼目录大小如果是几十GB的大目录复制时间会比较长要有耐心。复制完成后进入Windows环境变量设置界面右键“此电脑” → “属性” → “高级系统设置” → “环境变量”。在“用户变量”区域点击“新建”变量名填GRADLE_USER_HOME变量值填你的目标路径比如D:\Gradle\UserHome。注意别填到Gradle安装目录它和Gradle发行版存放目录是两码事。点击确定保存然后重新启动Android Studio。重启后Android Studio里的Settings→Build, Execution, Deployment→Build Tools→Gradle中会多出一个Gradle user home设置项你只需要确认它显示的是D:\Gradle\UserHome就说明迁移成功了。这里我想强调一下一定要用复制不要用剪切。原因很简单如果复制后首次构建出现问题你的原始数据还在C盘原地随时可以恢复。等确认一切正常后再去删除C盘的原.gradle目录这不耽误你释放空间但容错率高出不少。3.3 迁移后的首次Sync注意事项Gradle用户目录切换后你第一次用Android Studio打开项目它会进行一次完整的Gradle同步。这里有一个重要的点不要看到它在重新下载依赖就觉得迁移失败了。Gradle的依赖解析机制是按缓存路径来的路径变了之后它需要重新扫描新目录里的缓存文件但很多依赖它会认为“不在缓存里”进而尝试从远程仓库下载。但实际上你提前把旧缓存内容完整复制过去了所以下载过程通常很短甚至只是本地路径重新解析。不过如果项目中用到了比较冷门的依赖、公司内部Maven仓库或特殊私有仓库复制过去之后首次解析仍然可能会有网络访问这个很正常。等待同步完成后再到顶部的Build菜单跑一次Make Project只要能正常编译通过就说明Gradle缓存迁移成功了。再补一个很常见的坑GRADLE_USER_HOME路径同样不能有中文。之前帮同事排查过一个诡异问题项目构建时Gradle莫名其妙报各种编码错误后来发现他就是把Gradle缓存目录放在了D:\开发工具\gradle缓存中文路径导致Gradle内部处理跨平台文件路径时出了问题。换成纯英文路径后一切正常。4. AVD与Android Studio系统缓存收掉最后的大块空间4.1 模拟器镜像文件的迁移AVD模拟器镜像存放在.android目录下这个目录说实话很容易被忽略因为大部分开发者平时看的是AVD Manager里的模拟器名字不会去想它对应的镜像文件在物理磁盘的哪里。等到C盘告急时才猛然发现光一个Pixel模拟器的系统镜像和用户数据文件就占了七八个GB。迁移AVD的思路和SDK不太一样它没有官方可视化入口需要手动改配置。步骤如下关闭Android Studio、关闭所有正在运行的模拟器进程确保.android目录下的文件不是被占用状态。打开文件资源管理器进入C:\Users\你的用户名\.android\avd目录。这个目录下有两类文件一类是.ini文件文件名就是你的虚拟设备名字比如Pixel_4_API_30.ini另一类是.avd结尾的文件夹比如Pixel_4_API_30.avd里面才是真正的镜像数据。将整个.android\avd目录完整复制到新位置比如D:\Android\.android\avd。如果你只想迁移某几个AVD也可以只复制对应的.ini和.avd文件夹。用文本编辑器打开复制过去的每个.ini文件会看到类似这样的内容avd.ini.encodingUTF-8 pathC:/Users/你的用户名/.android/avd/Pixel_4_API_30.avd path.relavd/Pixel_4_API_30.avd targetandroid-30重点修改path这一行把它改成新位置下的绝对路径例如pathD:/Android/.android/avd/Pixel_4_API_30.avd。path.rel可以保留不管。保存后重新打开Android Studio进入AVD Manager你会看到所有虚拟设备都还在而且指向了新路径。这里有个细节.avd文件夹里的config.ini也可能包含指向旧路径的配置项但一般不用管因为模拟器启动时会优先读取.ini文件里的path字段来定位镜像目录。如果你的模拟器启动后报什么找不到SD卡或镜像文件再检查一下.avd\config.ini里的相关路径个别情况下需要一并改成新路径。4.2 Android Studio系统缓存的idea.properties配置这部分的迁移是四类里面操作门槛最高的但说实话空间收益没有前几个大我把它放到最后做。Android Studio自身会生成索引、本地历史、日志等系统文件默认位置在C:\Users\你的用户名\.AndroidStudio2023.3。如果你已经做了前面三次迁移C盘压力已经大幅缓解这一步属于“锦上添花”。Android Studio提供了一个官方支持的配置入口修改安装目录下的bin\idea.properties文件。打开它找到或添加下面这几行配置idea.system.pathD:/AndroidStudioCache/system idea.log.pathD:/AndroidStudioCache/log idea.config.pathD:/AndroidStudioCache/configidea.system.path对应的是IDE的系统缓存目录包括索引、临时文件、编译输出等。idea.log.path对应日志目录。idea.config.path对应配置目录就是你的偏好设置、插件配置之类一般不会太大但如果你不想迁移它可以不改。三个路径都设置成新位置后保存文件重启Android Studio。首次启动时IDE会在新路径下重建索引目录这时界面可能显示正在加载索引耐心等待几分钟即可。确认正常后旧位置产生的缓存文件就可以清理掉了。需要注意一点idea.properties文件在不同版本的Android Studio中位置一样但文件名可能不同比如有些版本是idea.properties有些版本在bin目录下还有studio64.exe.vmoptions这种JVM参数文件。你只需要关心idea.properties即可。我实测下来这个方案比用mklink符号链接要更稳因为它是IDE原生支持的机制不论是Windows还是macOS都通用也不会出现某些临时文件被写回旧路径的情况。4.3 隐藏的临时文件也要顺手清一清完成上面四步迁移后C盘还有几个零碎位置会持续增长建议顺手处理一下C:\Users\你的用户名\AppData\Local\TempWindows和Java程序写临时文件的地方Android Studio和Gradle偶尔会在这落文件。可以直接进入目录手动清理或者用磁盘清理工具跑一遍。C:\Users\你的用户名\AppData\Local\JetBrains插件缓存、IDE升级缓存等体积不大但也可以清。C:\Users\你的用户名\.android里除了avd以外的其他内容比如cache目录、模拟器运行临时文件这些杂项加起来也有几百MB看情况决定是否清理。需要注意清理临时文件时一定要确保没有正在运行的开发工具否则会误删正在使用的文件轻则进程报错重则缓存损坏。5. 迁移后的验证排错清单与我的实测经验5.1 三步快速验证迁移是否成功迁移做完不等于结束你要花五分钟验证每个环节都真正生效不然之后被一个隐蔽的路径问题折腾半天就太冤了。我习惯用三步验证法第一步验证SDK目录。打开Android Studio的Settings→Languages Frameworks→Android SDK看顶部的Android SDK location是否为D盘新路径。再打开任意一个项目的local.properties确认sdk.dir指向新路径。第二步验证Gradle用户目录。打开Android Studio的Settings→Build, Execution, Deployment→Build Tools→Gradle看Gradle user home是否为D盘新路径。然后在终端窗口运行一个简单命令检查当前会话里的环境变量也可以直接输入echo %GRADLE_USER_HOME%看输出是否为你设置的新路径。 注意在图形界面设置完环境变量后已经打开的终端窗口不会自动刷新必须重新开一个终端再验证。第三步验证AVD。打开AVD Manager检查每个虚拟设备是否存在然后启动一个模拟器确认能正常进入系统、系统设置里显示的存储空间正常。如果你的旧SDK和Gradle缓存目录还在这时的物理空间占用已经可以对比了右键C盘查看剩余空间你会明显看到可用空间涨了一大截。5.2 常见问题与解决办法迁移过程中我踩过的坑不少把最常见的几个列出来方便大家对号入座问题现象可能原因解决办法项目报错“SDK location not found”local.properties里的sdk.dir仍指向旧路径修改local.properties改成新SDK绝对路径后重新SyncGradle同步极慢一直卡在下载依赖旧缓存没有完整复制路径切换后需要重新下载确认GRADLE_USER_HOME指向正确等待下载完成如果太慢考虑先恢复旧缓存模拟器启动报AVD配置错误.ini文件里的path还是旧路径编辑对应的.ini文件改为新路径Android Studio启动后配置丢失idea.properties里config.path指到了新目录但旧的配置没复制过来把旧配置目录内容复制到新config.path目录后再启动新SDK路径编译时报“Failed to find target”新SDK里没有安装项目所需的compileSdk版本在SDK Manager里勾选对应Platform和Build-Tools重新下载环境变量设置后命令行不生效终端窗口没有重启关闭所有终端和Android Studio重新打开终端验证这些坑的共同点只有一个路径没对上一一对应。迁移的本质就是让所有“查找文件”的动作都能指向新位置所以说到底就是把SDK路径、Gradle用户路径、AVD路径、IDE缓存路径这四个信息维护好其它问题基本迎刃而解。5.3 我的一次完整迁移实测数据按真实操作经验来看一次完整迁移下来C盘空间释放效果非常可观。我自己的机器是Windows 11C盘原来占用187GB可用空间只剩23GB做完这套迁移后C盘剩余空间直接涨到71GB。各目录占用情况如下原SDK目录9.8GB原Gradle用户目录20.4GB原AVD镜像目录8.2GB原Android Studio系统缓存目录2.1GB四部分加起来总共腾出了约40GB空间等于把C盘从崩溃边缘拉了回来。最明显的变化是原来每次Android Studio打开项目都要等好久的索引加载现在因为系统缓存搬到了SSD较空闲的D盘分区整体流畅度反而提升了一点——当然这个感受比较主观但至少没有变慢。如果有同学跟我最初一样C盘可用空间已经小于5GB连Android Studio都跑不动了那还有一个应急办法先把AVD镜像删除几个不常用的瞬间能释放10GB以上然后再去做完整迁移。永远不要让C盘空间影响到日常开发节奏工具的稳定性在关键时刻比什么都重要。最后再分享一个小技巧上面这套迁移操作其实不只是针对Android Studio你电脑上任何“默认往C盘塞东西”的开发工具比如Python的pip缓存、npm的全局缓存、Docker的镜像目录都可以用类似思路去重定向。一段时期检查一次C盘空间的增长趋势在问题恶化之前就把它控制住比事后再做“大扫除”舒服得多。
返回列表