2011-08-20 305 views
26

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

--nehatha

+0

你确定它是关于SD卡上的空间比内存大吗? – Snicolas

+1

继续并将某些应用程序从内部存储器移动到SD卡或删除某些占用内部存储器的应用程序。 – PravinCG

+0

看到这篇文章 http:// stackoverflow。com/questions/2239330/how-to-increase-storage-for-android-emulator-install-failed-insufficient-storag – Noel

回答

72

它得到了具有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

感谢您!此外,这个线程可能对使用上述解决方案的人有用:http://stackoverflow.com/questions/3213427/not-able-to-use-new-resource-identifiers-in-android-with-targetsdkversion-define –

+0

我在清单文件中得到了这个msg: - > error:没有发现属性'installLocation'在包'android'中的资源标识符请帮助 –

+0

问题现在修复....它似乎这个解决方案与minsdk = 8 感谢:) –

4

在我的情况下,使用明显的标记没有工作的解决方案,因为没有该标记的Android资源。

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

+0

以上解决方案对我无效。这一个工作! – Manishankar

-3

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

0

在星系设备:

在我的情况我发现,存储 - >其它文件 - > CasheData被占用了8GB,消耗整个内部存储器。清空文件夹并释放内存。

重启设备后,没有任何错误

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. 重新连接设备,清理项目并再次在设备上运行。该项目现在将在您的设备上运行。

0

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

adb shell pm uninstall <my-application-package> 

大多数时候,这似乎重置仿真器的状态,这样我可以上传/安装/下次启动。

我有一段短暂非常大(〜60Mb)的.APK经验。因为模拟器真的需要APK的3倍大小(1x上传到/ data/local/tmp,2x保持安装的-1.apk和-2。apk拷贝到/ data/app),当我的模拟器内部存储有限时,这是一个问题。

我也使它成为一个习惯,在这些情况下删除默认的包在/ data/app中

adb shell rm /data/app/* 

,并删除我可能已经被推到/数据/本地/ tmp中的任何残留文件

adb shell rm /data/local/tmp/* 

即使采取了这些措施,尽管表面上有足够的可用空间,但我仍经历了INSTALL_FAILED_INSUFFICIENT_STORAGE(由dudf报告)。所以,似乎有一些残留的配置文件。在这些情况下,我必须使用AVD从仿真器映像中输入Wipe Data

0

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

它对我很有效。

1

我无法卸载应用程序,因为它没有出现在应用程序列表中。 我不得不删除库文件从 /data/app-lib

然后再次安装该应用程序。 ADB安装

2

我试过很多东西从这个线程和其他许多人,但我的情况下,什么都不会解决它会保持与该消息突然出现,对我这是什么做的是去应用程序>谷歌播放服务和清除那里的数据。

我在GooglePlayServices 7.3.29并且正在调试这个老的Galaxy S1

3

解决了我的问题。问题是,我已经设置了一套通过我的根奇巧4.4.2的手机上,亚行同时安装位置,把在SD卡我的应用程序:

adb shell 
pm set-install-location 2 

说卡是便宜又失败了。即使我将默认位置设置为内置SD卡,即使我删除了“损坏的”(便宜且无用的)SD卡,我现在也可以安装任何应用程序......但现在一切正常,解决方案是运行

pm set-install-location 2 
+0

不幸的是,当我运行这个命令时,我看到'Error:java.lang.SecurityException:Package android不属于2000'。在Xperia Z2上运行,不带根的Android 5.0。 – Crummy

0

我的问题是,我设置应用程序位置外部SD卡通过外壳在ADB后,我的SD卡死亡。即使它不再安装,并且按设置屏幕,默认位置是内部卡,我的应用程序不会安装。我不得不通过shell重置默认位置才能使其工作。请参阅我的回答Android: Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE

0

当我得到这个错误试图安装到SD卡并没有为我工作,我使用HTC手机,但从手机删除一些应用程序的工作。我认为手机在内部存储器上需要一些空间,而这个空间的大小可能因手机而异。

0

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

什么工作对我来说

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

  1. 手拨*#9900#;然后选择删除DUMPSTATE。但偶尔几周后,我仍然有错误。
  2. 清除内存...
    • 长按Home键
    • 单击RAM BTTN _新闻清除内存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); 
    } ... 
} 

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