Android Studio 3.1提示设备空间不足,无法安装指定SDK镜像求助
解决Android 6.0 Google APIs x86_64镜像安装时"No space left on device"问题
你遇到的这个问题其实很常见——明明磁盘有大量剩余空间,却触发了空间不足的报错。核心原因是Android SDK管理器在安装镜像时,会先将安装包解压到**基于内存的临时文件系统(tmpfs)**中,这类临时空间的默认大小有限,和你的磁盘总存储空间无关。下面是具体的排查和解决步骤:
一、先定位真正的空间瓶颈
先确认两个关键指标,排除其他可能性:
- 检查inode使用情况:运行
df -i,查看所有分区的IUse%列,如果有显示100%的,说明磁盘虽然有空间,但零散小文件过多耗尽了inode,需要清理日志、缓存这类小文件。 - 检查用户临时运行目录:运行
df -h /run/user/$(id -u),这个目录是tmpfs格式,默认大小通常是你内存的一半(也就是4GB左右),而Android 6.0的Google APIs x86_64镜像解压后体积会超过这个阈值,这大概率就是你遇到的问题。
二、针对性解决方案
1. 临时扩大用户临时目录空间
如果只是临时解决问题,可以直接重新挂载用户临时目录,增大其容量:
mount -o remount,size=6G /run/user/$(id -u)
执行完这条命令后,重新启动SDK管理器尝试安装镜像即可。
2. 永久扩大用户临时目录空间
如果不想每次都手动调整,可以通过修改系统配置让设置永久生效:
- 打开
/etc/fstab文件(需要管理员权限,比如用sudo nano /etc/fstab) - 添加或修改以下一行(把
1000替换成你的用户ID,可通过id -u命令获取):
tmpfs /run/user/1000 tmpfs defaults,size=6G 0 0
- 保存文件后,重新挂载使设置生效:
mount -o remount /run/user/$(id -u)
3. 指定SDK使用自定义磁盘临时目录
你也可以让SDK管理器直接使用磁盘上的目录作为临时空间,避开tmpfs的限制:
首先在你的主目录下创建一个临时文件夹:
mkdir -p ~/android_tmp
然后启动SDK管理器时指定这个临时目录(替换成你实际的SDK管理器路径):
./sdkmanager --install "system-images;android-23;google_apis;x86_64" -Djava.io.tmpdir=~/android_tmp
如果是用Android Studio内置的SDK,可以在Studio的VM选项中添加-Djava.io.tmpdir=/path/to/your/tmp来指定临时目录。
4. 清理SDK缓存文件
有时候SDK的缓存目录会残留旧文件,也可能影响安装,尝试清理:
rm -rf ~/.android/cache/*
清理完成后再重新尝试安装镜像。
内容的提问来源于stack exchange,提问作者Shiny
相关产品推荐
相关产品推荐

