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"

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


当前回答

您需要增加Android模拟器的内存容量。有两种方法:

Right click the root of your Android Project, go to "Run As" and then go to "Run Configurations...". Locate the "Android Application" node in the tree at the left, and then select your project and go to the "Target" tab on the right side of the window look down for the "Additional Emulator Command Line Options" field (sometimes you'll need to make the window larger) and finally paste "-partition-size 1024" there. Click Apply and then Run to use your emulator. Go to Eclipse's Preferences, and then select “Launch” Add “-partition-size 1024” on the “Default emulator option” field. Click “Apply” and use your emulator as usual.

其他回答

这只是一个临时的解决方案,而不是真正的解决方案。

在我遇到这种情况后,我对目前的反应不满意,我去工作了 试图从AOSP源代码中找出答案。我找到了一个真正的解决方案。

解释

首先,简单介绍一下Android安装和更新的背景知识

第一次安装应用程序: APK文件保存为 丹共/数据/应用/ < full.package.name > -1. (1. apk) 应用程序何时更新: 更新后的APK文件保存为: 丹共/数据/应用/ < full.package.name > -2. (2. apk) 第一个版本(1.apk)被删除。 在我们的下一次更新(s): 新的APK保存为(1.apk),删除(2.apk)(永远重复)。

 

我们大多数人遇到的问题发生在应用程序更新时,但删除旧的APK失败。这本身不会导致更新失败,但它会导致/data/app中有两个APK文件。

下次你尝试更新应用程序时,系统无法移动它的临时文件,因为(1.apk)和(2.apk)都不是空的。由于file# renameTo(File)不会抛出异常,而是返回一个布尔PackageManager,因此它没有任何方法告诉它为什么返回INSTALL_FAILED_INSUFFICIENT_STORAGE,即使失败与空闲空间无关。

解决方案

Run:

adb shell "pm uninstall <full.packge.name>"
adb shell "rm -rf /data/app/<full.package.name>-*"

OR

卸载应用程序

使用你最喜欢的方法删除这两个:

/data/app/<full.package.name>-1.apk /data/app/<full.package.name>-2.apk

确保没有其他东西以类似的方式阻碍以后的安装。在我的情况下,我有一个/data/app-lib/<full.package.name>-1目录徘徊!在这种情况下,安装到SD卡以及随后移动到内部内存都是有效的。(创建/data/app-lib/<full.package.name>不带-1结尾)

为什么其他“解决方案”有效

安装到外部存储的代码有很大不同,但没有相同的问题 卸载app只会删除/data/app中APK文件的一个版本。这就是为什么你可以重新安装一次,但不能更新它。 当出现此错误时,模拟器中的空闲空间数量并不真正相关

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

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

然后,试试这个:

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

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

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

今天,当我用我的手机进行Eclipse测试/调试时,我得到了这个错误。

我的错误是在应用程序名称中使用了挪威特殊字符(“æ”,“ø”,“å”)。当我重构应用程序名称(使用“o”而不是“ø”),应用程序安装正确。

可能不是你的问题,但可以注意到其他人得到同样的错误。

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

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

默认设置外部安装:

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

我的手机没有root权限,也没有准备好把我的应用程序安装在SD卡上。/data/上有15 MB的可用空间,而我的应用程序不足2 MB。

有一段时间我还过得去;清理Eclipse项目并重新启动手机,但最终停止工作(可能是在更新之后)。

清理我的应用程序缓存为我解决了这个问题,不需要重新启动手机或卸载应用程序。

市场上有一些应用程序可以一次性清除多个应用程序的缓存。搜索“干净”。