INSTALL_FAILED_INSUFFICIENT_STORAGE错误是每个Android开发人员的烦恼。这与应用程序大小或可用存储空间大小无关。重新启动目标设备可以短暂地修复问题,但它很快就会回来。人们在留言板上发帖询问为什么会出现这个问题,但令人沮丧的是,谷歌的人对这个问题保持沉默。

有一个简单的变通办法。如果您的测试设备运行的是Android 2.2或更高版本,那么将Android:installLocation属性添加到应用程序的清单文件中,值为“preferExternal”。这将迫使应用程序安装在设备的外部存储设备上,比如手机的SD卡。

例如:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.andrewsmith.android.darkness"
          android:installLocation="preferExternal"

这更像是一种创可贴,而不是补救措施,如果你想要完成的应用程序安装在设备的内部内存中,这可能不太理想。但它至少会让开发过程不那么令人沮丧。


当前回答

我最终从设备上卸载了应用程序,然后在Eclipse中重新安装。这是我经常使用设备时遇到的一个问题,但今天我从开发中得到了这个信息。

其他回答

我已经解决了这个问题,包括android:installLocation="auto"内<manifest>标签在AndroidManifest.xml文件。

我在我的新Nexus 4和用Adobe AIR构建的APK上遇到了这个问题。我已经有android:installLocation="preferExternal"在我的清单。我注意到我还用-s选项调用adb install(在共享大容量存储上安装包,如sdcard.),这似乎有点多余。

从adb安装中删除-s标志为我解决了这个问题。

谢谢你提出这个问题。我有一些额外的见解,可能会帮助一些开发人员。

我正在设备(不是模拟器)上调试我的应用程序。设备上有21 MB的空闲/数据(正如“df”在做“adb shell”时所显示的那样),我的应用程序只有5 MB。然而,我确实发现,如果我删除设备上的其他应用程序(没有重新启动手机或重新启动adbd), INSTALL_FAILED_INSUFFICIENT_STORAGE会消失一段时间,然后回来。

因此,似乎调试我的5 MB应用程序需要更多的20 MB的空间在/data中,此外,每次我调试我的应用程序都会泄露一些东西。

所以我做了“adb shell”,并列出了整个/data目录

cd /data
ls -a -l -R

我查看了5000行的输出,看看所有的空间都去了哪里。

我在设备的/data/klog目录中发现了大量浪费的空间,这些空间是几个月前调试会话的旧日志文件。

这些不是我的日志文件:它们是由Android基础设施的某些部分创建的。

我删除了它们,并立即保存了58mb,这在设置应用程序中没有归属于任何特定的应用程序。我的设备很小,所以58mb非常重要(约40%)。

到目前为止,在多次运行之后,我还没有再次得到INSTALL_FAILED_INSUFFICIENT_STORAGE。让我们希望这是真正的问题,尽管OP表明他的设备有足够的空间(但没有说有多少)。

希望你们中的一些人能够通过定期删除/data/klog/*来逃避INSTALL_FAILED_INSUFFICIENT_STORAGE。

或者,如果确实存在一些(隐藏的)空间问题,您至少可以在/data中执行ls -a -l -R来查看所有空间的去向。

在我的例子中,通过增加eclipse的扩展内存,通过改变eclipse.ini中-Xmx768m的值,这个问题得到了解决

回复这个话题的第一篇文章…

症状:某些应用程序不安装,说没有空间 实际上,内部和外部存储都有足够的空闲空间!! 解决方法:默认关闭外部安装。

默认设置外部安装:

adb shell pm set-install-location 2

使安装不可能在许多应用程序不能安装外部(如adblock +或左右)

那么答案是

adb shell pm set-install-location 0

Or

adb shell pm set-install-location 1

0: auto (if one is full - or irrelevant !!! - it select the other)
1: internal
2: external