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"

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


当前回答

三星Galaxy Ace在其规格中宣称有158 MB的内部存储空间,但核心应用程序和服务消耗了大约110 MB的存储空间(我使用设备上的任务管理器来检查这一点)。我的应用是52 MB,因为它有很多资产。当我把其中一些文件删除到45 MB后,应用程序就可以顺利安装了。尽管我只安装了一个应用程序,但设备仍在提醒我内部存储空间快满了,我应该卸载一些应用程序。

在安装了.apk包的发布版本,然后卸载它之后,我的设备显示了99 MB的可用空间,所以可能是调试信息把设备弄得乱七八糟。请看Louis Semprini的回答。

其他回答

在我的情况下,失败是由com.android.providers.media应用程序引起的。我在x86 android模拟器上遇到了这个问题。我做了什么:

$ adb shell df
Filesystem             Size   Used   Free   Blksize
...
/data                  224M   209M    14M   4096
....

/data上的可用空间过低

$ adb shell du /data
...
409870  /data/data/com.android.providers.media
...

几乎所有的消费都来自于一个应用!它是系统应用程序,所以我认为最好不要删除它。相反,我清理了应用程序数据。

$ adb shell pm clear com.android.providers.media
Success
$ adb shell df
Filesystem             Size   Used   Free   Blksize
...
/data                  224M     8M   215M   4096
...

磁盘已被清除,应用程序安装成功。

在运行模拟器时,请确保没有将android设备与usb连接

我遇到这个问题是因为我使用Sideload Wonder Machine在我的实际手机上安装应用程序时遇到了这个错误。我发现问题是在/payload目录中有多个.apk文件。我认为这是支持的东西,但当我删除了所有的。apk,只有一个,错误消失了。

当我尝试在完整的ROM更新后使用ADB shell在SD卡目录中批量安装大约50个应用程序时,我遇到了同样的错误:

for x in *.apk; do pm install -r $x; done

其中一些已经安装,但许多都失败了,出现了INSTALL_FAILED_INSUFFICIENT_STORAGE错误。所有失败的应用程序名称中都有空格。我批量重命名它们,并再次尝试。这次一切都成功了。我没做重启什么的。也许这不是你们面临的问题,但这可能会帮助那些和我面临同样问题的人。

我觉得写这篇文章有点奇怪,但我不能100%确定在某些情况下这不是真的(这对我来说很管用)。如果您有以下症状:

你一直在使用物理设备(对我来说,是三星Galaxy Ace)工作, 你这几天都在发育, 你的手机一直都是联网的,不分昼夜。 几天后就开始出现这个错误,而且情况越来越糟。 其他答案都对你没用。 你和我一样无可奈何……

然后,试试这个:

不工作的时候拔掉手机插头!

我把手机插头拔掉,让它休息一整天。我的电池没电了。在此之后,我重新连接它并再次开始调试。这次一切都很正常!我是说真的真的很好,就像以前一样。

这个错误可能是由于一些电池相关的硬件问题吗?这样想仍然感觉很奇怪,但现在我时不时地断开手机连接(甚至是晚上),问题没有复发。