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"

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


当前回答

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

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

然后,试试这个:

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

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

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

其他回答

由于这个问题仍然存在,出于开发目的,我认为我应该在RacZo的回答中添加一些内容。如果你没有使用Eclipse插件,或者因为任何原因你没有源代码,而只有.apk,你可以在启动模拟器时使用相同的选项从命令行增加分区大小:

emulator -avd <emulator name> -partition-size 1024

据我所知,这个选项在developer.android.com上没有记录,所以我想我将它发布在这里,以便人们可以找到这个解决方案。

模拟器上的一个相关问题是/data分区中没有任何剩余空间。

例如,

% adb shell df

Filesystem             Size   Used   Free   Blksize
/dev                   252M    32K   252M   4096
/mnt/asec              252M     0K   252M   4096
/mnt/obb               252M     0K   252M   4096
/system                154M   154M     0K   4096
/data                   64M    57M     6M   4096
/cache                  64M     1M    62M   4096

下面是/data/app目录的示例视图:

% adb shell ls -l /data/app

-rw-r--r-- system   system      19949 2011-10-12 17:09 CubeLiveWallpapers.apk
-rw-r--r-- system   system      27670 2011-10-12 17:09 GestureBuilder.apk
-rw-r--r-- system   system      34341 2011-10-12 17:09 SoftKeyboard.apk
-rw-r--r-- system   system      20151 2011-10-12 17:09 WidgetPreview.apk

我删除了多余的APK文件。似乎每次安装你都会得到一个新的APK文件。只需删除额外的APK文件。

例如,

adb shell rm /data/app/com.brooklynmarathon.calendarapi2-1.apk

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

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

然后,试试这个:

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

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

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

解决办法很简单。

打开AVD管理器。编辑你的AVD。

在下面的硬件部分,有一些属性列在“New…”和“Delete”的右边。

新媒体。选择数据分区大小。设置为“512MB”(必须为MB)。做完了。如果您仍然遇到问题,请使用相同的方法增加您的系统和缓存分区。

都记录在这里: http://developer.android.com/guide/developing/devices/managing-avds.html

我已经添加了一个额外的行到应用程序的清单文件,这是android:installLocation="preferExternal"。通过使用这一行,它强制将应用程序安装到外部存储。请看下面的例子,

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.nasir.phonegap"
    android:installLocation="preferExternal" >