Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android java.io.IOException:无法下载设备上没有剩余空间_Android_Linux_Android Studio_Solus - Fatal编程技术网

Android java.io.IOException:无法下载设备上没有剩余空间

Android java.io.IOException:无法下载设备上没有剩余空间,android,linux,android-studio,solus,Android,Linux,Android Studio,Solus,我试图在android studio上下载一个android系统映像,以便模拟应用程序。问题是android studio无法下载系统映像。在查看日志后,它说我的设备上没有空间了,但我的笔记本电脑上还有960GB的空间 确切的错误消息是 2017-11-28 20:32:13,136 [d thread 8] INFO - s.RepoProgressIndicatorAdapter - Downloading https://dl.google.com/android/repository

我试图在android studio上下载一个android系统映像,以便模拟应用程序。问题是android studio无法下载系统映像。在查看日志后,它说我的设备上没有空间了,但我的笔记本电脑上还有960GB的空间

确切的错误消息是

2017-11-28 20:32:13,136 [d thread 8]   INFO - s.RepoProgressIndicatorAdapter - Downloading https://dl.google.com/android/repository/extras/intel/addon2-1.xml   
2017-11-28 20:32:13,238 [d thread 8]   WARN - s.RepoProgressIndicatorAdapter - java.io.IOException: Cannot download 'https://dl.google.com/android/repository/extras/intel/addon2-1.xml': No space left on device, response: 200 OK

另一个重要信息是我的笔记本电脑运行solus Linux

这是一个非常常见的错误。系统用作缓存的临时文件夹已满。现在,每次重新启动时都会清理tmp。然而,Android Studio占用了大量空间。下面,我来看看你的选择

如何找出/tmp是否是问题所在?

在终端上,键入:

df -h | grep -e 'Filesystem' -e '/tmp'
在输出上,查看“使用%”列。如果百分比很高,则表示tmp上的空间不足。如果你做了大量的编译或安装,这在以后也会成为一个问题

你有三个选择

  • 让android studio使用另一个临时文件夹
  • 临时增加/tmp大小以完成更新或编译
  • 始终增加/tmp。通常操作系统会将/tmp文件夹设置为 只有ram大小的一半。我假设/tmp不是一个单独的 分割
  • 选项1。找出android studio的安装位置,并修改studio.sh文件以传递变量。当android studio启动时,env变量告诉android manager使用指定的临时文件夹

    第一步。查找android studio的安装位置。它通常位于/opt/android studio文件夹中。为了简化操作,下面将包含whereis-l输出中模式为“android studio/bin”的文件夹目录

    DROID_BIN=$(whereis -l android-studio | grep 'android-studio/bin' | awk -F'bin: ' '{print $2}')
    
    第二步。使用目录打开带有vim的“studio.sh”文件。通常,这是/opt/android manager/bin/studio.sh

    sudo vim $DROID_BIN/studio.sh
    
    第三步。复制并粘贴studio.sh开头的以下行。我添加了一些评论作为提醒,如果你在将来的某个日期看它的话

    在Vim上按[i]进行编辑。使用[Ctrl]+[c]键从浏览器复制,并使用[Ctrl]+[Shift]+[v]键粘贴到vim中

    按[Esc]保存并退出,然后键入:wq“

    启动android studio并再次尝试更新。这一次,更新应该是成功的

    对于选项2和3检查/tmp并确保它不是一个单独的分区

     df -h | grep -e 'Filesystem' -e '/tmp'
    
    在输出上,查看Filesystem列。如果该文件系统显示一个反斜杠,后跟三个字母,如/sda或/sdb,则不要继续查找其他指令

    如果文件系统列为tempfs,则继续

    选项2。暂时增加/tmp的大小

    sudo mount -o remount,size=6G,noatime /tmp
    
    就这样。完成了

    选项3。始终增加/tmp的大小。如果您在多个程序或活动中反复看到“无空间错误”,这将非常有用

    第一步。备份fstab

    cp /etc/fstab ~/fstab_BACKUP 
    
    第二步。检查是否有“tmpfs/tmp”的现有条目

    cat /etc/fstab | grep tmp
    
    第三步。如果终端上没有返回任何内容,则粘贴以下行。将6G更改为/tmp所需的大小

    sudo sed -i '$a tmpfs /tmp tmpfs rw,nodev,nosuid,size=6G 0 0' /etc/fstab
    
    如果有现有条目,请使用vim或任何终端文本编辑器手动更改驱动器的大小

    sudo vim /etc/fstab
    
    您将看到类似的内容:

    ------------/etc/fstab----------------------
    ...
    tmpfs /tmp tmpfs rw,nodev,nosuid,size=4G 0 0
    ...
    
    将大小整数更改为所需的大小。例如,将4G替换为6G

    保存并退出。在vim上,按[Esc]并键入“:wq”

    最后,重新启动计算机


    希望这有帮助。提供说明的风险由您自行承担

    Info和Warn消息对于Linux中的用户来说都是非关键性的通知,并且在显示时,并不表示该过程失败(无论它们听起来多么可怕)。您可能在追求错误的错误。(总的来说,这似乎有点特殊性,即不在sudo中运行命令,将整个硬盘设置为不可写,等等)。
    设备上没有剩余空间
    似乎是一个明显的错误。您正在下载到临时分区吗?
    ------------/etc/fstab----------------------
    ...
    tmpfs /tmp tmpfs rw,nodev,nosuid,size=4G 0 0
    ...