Android Studio 太占空间,先分清 SDK、镜像和虚拟设备
Android Studio 占用的空间不只有编辑器,SDK 包、Android 系统镜像和每台虚拟设备存的是不同内容,删掉以后要付出的恢复成本也不同。先找出占用最大的目录,再通过 Android Studio 移除一个不用的包或设备,不急着手动删文件夹。
找到 SDK 和虚拟设备
打开 Tools › SDK Manager,记下 Android SDK Location,Google 的 SDK Manager 说明介绍了这个入口,如果显示的位置和下面不同,以你自己的配置为准,文中的 Android Studio 标签沿用英文界面。
Google 的模拟器目录说明把共享系统镜像和虚拟设备可写数据分开,下面是常见位置,不是让你直接删除这些上级文件夹。
~/Library/Android/sdk
~/Library/Android/sdk/system-images
~/.android/avd
| 目录 | 保存什么 | 先做什么 |
|---|---|---|
| SDK 平台和工具 | 构建 Android 应用需要的包 | 在 SDK Manager 核对已安装的包 |
| 系统镜像 | 模拟器使用的 Android 版本和变体 | 看哪些虚拟设备还需要它 |
| AVD 数据 | 测试应用、设置和设备可写存储 | 在 Device Manager 检查对应设备 |
| 快照 | 保存的模拟器状态 | 只删不再需要的状态 |
文件夹大小只能帮你决定先查哪里,不等于可删容量,如果配置的位置在别处,就去看那个位置,不用创建不存在的默认目录。
移除不用的 SDK 包
在 SDK Manager 查看 SDK Platforms,用 Show Package Details 区分平台和系统镜像,Google 的包说明解释了各自用途,当前项目和设备测试范围还用得到的包先留下。
- 记下准备移除的平台或镜像,以及 API 级别和变体。
- 只取消那个包的勾选,再点 Apply。
- 确认前读一遍移除列表,其他工具保持勾选。
- 构建一个仍在维护的项目,再启动一台保留的虚拟设备。
如果构建提示需要刚移除的平台,回 SDK Manager 装回那个包,前提是包仍可下载、网络也可用,不要因为一个旧镜像很大就删掉整个 SDK。
清空设备数据还是删除设备
Google 的 Device Manager 指南给出了项目内的 View › Tool Windows › Device Manager 入口,用设备菜单里的 Show on Disk 找到实际文件,修改数据前先点 Stop。
想保留虚拟设备、重置里面的用户数据,用 Wipe Data,不再需要这台设备才用 Delete。操作前导出要留的测试数据和复现材料,因为重新创建一台设备不会恢复原来的状态。
这和在 SDK Manager 卸载共享系统镜像是两回事,判断镜像是否闲置前,先看剩余设备是否还在用,一台干净的新设备不是被擦除设备的备份。
只清快照,不擦除设备
Google 的快照说明介绍了快照保存的系统设置、应用状态和用户数据,在模拟器的快照面板选中不要的快照,再用删除按钮,调试还需要的命名快照先留下。
Quick Boot 默认会保存启动状态,删掉这份快照可能换来一次冷启动,之后还会生成新快照,如果某份快照留着失败测试的现场,它就是有用数据,不能因为其他快照能重建就一起删。
保存的状态启动不了时,先在 Device Manager 试 Cold Boot,让模拟器不加载快照启动,不把重置设备数据当成排障第一步。
每改一处就核对结果
回到同一组 SDK 和 AVD 目录,确认目标包或设备已经移除,再运行保留的项目和设备,通过后才处理下一项,如果空间几乎没变,按上表查看是不是另一类数据占了大头。
SDK Manager 的移除和设备重置不保证能从 Mac 废纸篓找回,不能替代的数据先留独立副本。如果手动移动了文件,Apple 的应用移除说明指出,废纸篓里的内容在永久删除前仍占空间,检查期间先留在那里。
Gradle 另行判断,操作放在开发缓存清理指南,Apple 工具链则看 Xcode 存储指南,不把 Android 的路径套到另一套 SDK 上。
Mole 会列出什么
Mole Mac 的清理会把符合条件的 Android 项目放在开发工具下,Android 模拟器快速启动快照只针对自动生成的 snapshots/default_boot,不是你保存的命名快照,未使用的 Android 系统镜像会列出没有已知 AVD 引用的镜像,默认不勾选,留给你确认,引用信息不完整时就不列出镜像。
删除前 Mole 会重新检查模拟器的运行状态,相关模拟器还在运行,或进程检查无法确认它已经停止时,会拒绝删除这些项目,系统镜像的引用也会在移除前重新核对。默认不勾选是让你确认,不代表选中后仍会保留数据,Android Studio 卸载指南说明了怎样移除编辑器、留下 SDK 和签名密钥。
常见问题
Wipe Data 会删掉系统镜像吗?
它重置的是所选设备的用户数据,共享系统镜像在 SDK Manager 单独管理,要移除镜像先核对剩余设备。
能直接删除整个 AVD 文件夹吗?
先保存要留的测试数据,再用 Device Manager 逐台删除设备,直接删上级文件夹难以核对,也不能保证找回旧状态。
为什么模拟器占用又涨回来了?
Quick Boot 会保存新快照,测试时应用也会写入新数据,先看是哪一类目录增长再决定要不要清,反复重置也会丢掉你可能正在排查的现场。