Android:安装错误:INSTALL_FAILED_INSUFFICIENT_STORAGE

问题描述 投票:27回答:15

今天在我的设备上安装应用程序时出现“安装错误:INSTALL_FAILED_INSUFFICIENT_STORAGE”错误。它工作正常,直到昨天,今天只有我面临这个问题。我删除了SD卡上的一些文件,但仍面临问题。我确定这不是SD卡空间的问题。任何人都可以建议如何解决这个问题。

- 管理

android device
15个回答
73
投票

通过将android:installLocation="preferExternal"用于清单文件的<manifest>标记来解决它。

如下所示:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="bros.imaq.demilic"
    android:versionCode="1"
    android:versionName="1.0"
    android:installLocation="preferExternal">

谢谢


0
投票

我的问题是我通过adb上的shell将应用程序位置设置为外部SD卡,之后我的SD卡死了。即使它已不再安装,并且每个设置屏幕,默认位置是内部卡,我的应用程序将无法安装。我不得不通过shell重置默认位置以使其工作。看看我在Android: Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE的回答。


0
投票

当我得到这个错误试图安装到SD卡不起作用,我使用HTC手机,但从手机删除一些应用程序工作。我认为手机内存需要一些空间,这个空间可能因手机而异。


0
投票

我正在使用Cordova进行Android和iPhone开发。经过4个月的开发,这个错误大约出现了10次。

什么为我工作

*#9900# - 方法#1起初,我所要做的就是......

  1. 手拨*#9900#;然后选择删除DUMPSTATE。但是偶尔做几周之后,我仍然遇到了错误。
  2. 清除RAM ...... 长按主页按钮 点击底部的RAM bttn _ PRESS Clear Memory bttn
  3. 卸载我的应用程序。现在没有更多的错误。好极了!!!

但是今天,上面的方法#1没有用。所以我...

方法#2 - 下载中删除数据

  1. 我删除了下载文件夹中的所有内容,并且...现在没有更多错误。好极了!!!

谢谢,希望这有帮助!


0
投票

也许这可以帮助你......

  1. 检查设置>存储>检查首选安装位置*

*如果可移动SD卡。请将其更改为内部设备存储。因为,也许你的SD卡有问题。

希望能帮助到你


0
投票

当外部存储不可用且与存储空间无关时,重新启动实际设备可修复此错误。

我的日志显示以下行:

PackageManager: Package ... could not be assigned a valid uid
PackageManager: package setting is null
PackageManager: Skipping remove dir for ...(user:0, appId:null)
PackageManager: Package couldn't be installed in /data/app/...
PackageManager: com.android.server.pm.PackageManagerException: Creating application package ... failed
PackageManager:        at com.android.server.pm.PackageManagerService.scanPackageDirtyLI(PackageManagerService.java:10630)

主要原因似乎是PackageManagerService的例外:

    pkgSetting = mSettings.getPackageLPw(...);
    if (pkgSetting == null) {
        throw new PackageManagerException(INSTALL_FAILED_INSUFFICIENT_STORAGE,
                "Creating application package " + pkg.packageName + " failed");
    }

对于没有共享用户的未安装的用户应用程序,Settings中使用的代码是:

private PackageSetting getPackageLPw(...) {
    // Assign new user id
    p.appId = newUserIdLPw(p);
    if (p.appId < 0) {
        PackageManagerService.reportSettingsProblem(Log.WARN,
                "Package " + name + " could not be assigned a valid uid");
        return null;
    }
}
// Returns -1 if we could not find an available UserId to assign
private int newUserIdLPw(Object obj) {
    // None left?
    if (N > (Process.LAST_APPLICATION_UID-Process.FIRST_APPLICATION_UID)) {
        return -1;
    }
}

private void removeUserIdLPw(int uid) {
    if (uid >= Process.FIRST_APPLICATION_UID) {
        final int N = mUserIds.size();
        final int index = uid - Process.FIRST_APPLICATION_UID;
        if (index < N) mUserIds.set(index, null);
    } ...
}

所以removeUserIdLPw逻辑或卸载没有调用它来释放应用程序用户ID存在一些问题,这需要一些我目前没有的详细卸载日志。


-3
投票

此问题是因为您的设备没有更多空间来安装应用程序。


7
投票

您需要做两件事,然后才能解决此错误。

  1. 在AndroidManifest.xml文件中,在清单标记中添加android:installLocation =“preferExternal”。 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.packagename.appname" android:versionCode="1" android:versionName="1.0" android:installLocation="preferExternal">
  2. 更重要的是,清除设备中的缓存数据。转到设置 - >存储 - >单击缓存数据。这将清除缓存并释放空间。
  3. 重新连接设备,清理项目并再次在设备上运行它。该项目现在将在您的设备上运行。

4
投票

在我的情况下,使用清单标记的解决方案不起作用,因为该标记没有Android资源。

什么工作只是在手机上卸载应用程序。还有我同时安装的其他几个版本。


3
投票

解决了我的问题。问题是我曾经在我的rootKit 4.4.2手机上通过adb设置安装位置,将我的应用程序放在SD卡上:

adb shell
pm set-install-location 2

说卡很便宜而且失败了。即使我将默认位置设置为内部SD卡,即使我删除了“损坏的”(廉价且无用的)SD卡,我现在也可以安装没有应用......但现在一切都很好,解决方案是运行

pm set-install-location 2

2
投票

我尝试了很多东西来自这个线程和许多其他东西,但在我的情况下,没有什么能解决它继续弹出这个消息,对我来说它做了什么它去了应用程序>谷歌播放服务并清除那里的数据。

我正在使用GooglePlayServices 7.3.29,正在调试这款旧Galaxy S1


1
投票

在我的情况下,我在模拟器上运行,由于本机代码中的accessing a stale local reference,我的应用程序崩溃了。这很可能是无关紧要的,但我提到它,以防崩溃导致问题。基于与INSTALL_FAILED_INSUFFICIENT_STORAGE相关的建议,我现在正在努力使用PM在这些崩溃后卸载我的应用程序:

adb shell pm uninstall <my-application-package>

大多数情况下,这似乎重置了模拟器的状态,以便我可以下次上传/安装/启动。

我有一个简单非常大的.APK(约60Mb)的经验。因为模拟器确实需要3倍大小的APK(1x上传到/ data / local / tmp,2x来保存已安装的-1.apk和-2.apk副本在/ data / app中),这是一个问题当我的模拟器内部存储空间有限时。

在这些情况下我也习惯删除/ data / app中的默认包

adb shell rm /data/app/*

并删除我可能已推送到/ data / local / tmp的任何残留文件

adb shell rm /data/local/tmp/*

即使有这些措施,我也经历过INSTALL_FAILED_INSUFFICIENT_STORAGE,尽管显然有足够的可用空间(正如dudf报道的那样)。所以,似乎有一些残余配置。在这些情况下,我必须使用AVD从模拟器图像中Wipe Data


1
投票

我无法卸载应用程序列表中不存在的应用程序。我不得不从/ data / app-lib中删除库文件

然后再次安装应用程序。 adb安装


0
投票

在星系设备上:

在我的情况下,我发现Storage-> Miscellaneous files-> CasheData占用了8GB,占用了整个内部存储器。清空文件夹并释放内存。

重启设备后,安装的应用程序没有任何错误


0
投票

在我的情况下关于INSTALL_FAILED_INSUFFICIENT_STORAGE。我必须在Android Virtual Deviece Manager下编辑我的设备的AVD内部和SD存储大小。我将内部存储从200增加到2000,SD卡也增加到2000.并在我的android:installLocation="preferExternal"文件中添加AndroidManifest.xml

它对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.