今天在我的设备上安装应用程序时出现“安装错误:INSTALL_FAILED_INSUFFICIENT_STORAGE”错误。 它工作正常,直到昨天,今天只有我面临这个问题。我删除了SD卡上的一些文件,但仍面临问题。我确定这不是SD卡空间的问题。任何人都可以建议如何解决这个问题。
- nehatha
答案 0 :(得分: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">
谢谢
答案 1 :(得分:7)
您需要做两件事,然后才能解决此错误。
在您的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">
更重要的是,清除设备中的缓存数据。转到设置 - &gt;存储 - &gt;单击缓存数据。这将清除缓存并释放空间。
重新连接设备,清理项目并再次在设备上运行。该项目现在将在您的设备上运行。
答案 2 :(得分:4)
在我的情况下,使用清单标记的解决方案不起作用,因为该标记没有Android资源。
工作只是在手机上卸载应用程序。还有我同时安装的其他几个版本。
答案 3 :(得分:3)
解决了我的问题。问题是我曾经在我的rootKit 4.4.2手机上通过adb设置安装位置,将我的应用程序放在SD卡上:
adb shell
pm set-install-location 2
说卡很便宜而且失败了。即使我将默认位置设置为内部SD卡,即使我删除了&#34;损坏的&#34; (廉价和无用)SD卡,我现在可以安装没有应用......但现在一切都很好,解决方案是运行
pm set-install-location 2
答案 4 :(得分:2)
我从这个帖子和其他许多人那里尝试过很多东西但是在我的情况下没有什么能解决它并且不断弹出那条消息,对我来说它是做什么的去了应用程序&gt; Google Play服务并清除那里的数据。
我在GooglePlayServices 7.3.29上正在调试这款旧版Galaxy S1
答案 5 :(得分:1)
在我的情况下,我在模拟器上运行,我的应用因本机代码中的accessing a stale local reference而崩溃。这很可能是无关紧要的,但我提到它,以防崩溃导致问题。根据与INSTALL_FAILED_INSUFFICIENT_STORAGE相关的建议,我现在正努力使用PM在这些崩溃后卸载我的应用程序:
adb shell pm uninstall <my-application-package>
大多数情况下,这似乎会重置模拟器的状态,以便我可以在下次上传/安装/启动。
我有一个非常大的(〜60Mb).APK的经验。因为模拟器确实需要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,尽管显然有足够的可用空间(由du
和df
报告)。所以,似乎有一些残余配置。在这些情况下,我必须使用AVD从模拟器图像Wipe Data
。
答案 6 :(得分:1)
我无法卸载应用列表中不存在的应用。 我不得不删除库文件 /数据/ APP-LIB
然后再次安装应用程序。 adb install
答案 7 :(得分:0)
在galaxy设备上:
就我而言,我发现存储 - &gt;杂项文件 - &gt; CasheData占用8GB,占用整个内部存储器。清空文件夹并释放内存。
重启设备后,安装的应用程序没有任何错误
答案 8 :(得分:0)
在我的案例中关于INSTALL_FAILED_INSUFFICIENT_STORAGE。
我必须在 Android Virtual Deviece Manager 下编辑我的设备的AVD内部和SD存储大小。我将内部存储从200增加到2000,SD卡也增加到2000.并在我的android:installLocation="preferExternal"
文件中添加AndroidManifest.xml
它对我有用。
答案 9 :(得分:0)
我的问题是我通过adb上的shell将应用程序位置设置为外部SD卡,之后我的SD卡死了。即使它已不再安装,并且根据“设置”屏幕,默认位置是内部卡,我的应用程序无法安装。我不得不通过shell重置默认位置以使其工作。在Android: Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE看到我的回答。
答案 10 :(得分:0)
当我收到此错误时,尝试安装到SD卡无法正常工作,我使用的是htc手机,但删除了手机中的某些应用程序。我认为手机内存需要一些空间,这个空间可能因手机而异。
答案 11 :(得分:0)
我正在使用Cordova进行Android和iPhone开发。经过4个月的开发,这个错误大约出现了10次。
为我工作的是什么
*#9900# - 方法#1 起初,我所要做的就是......
但是今天,上面的方法#1没有用。所以我......
方法#2 - 下载中删除数据
谢谢,希望这会有所帮助!
答案 12 :(得分:0)
也许这可以帮到你...
*如果可移动SD卡。请将其更改为内部设备存储。因为,也许你的SD卡有问题。
希望有所帮助
答案 13 :(得分: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,这需要一些我目前没有的详细卸载日志。
答案 14 :(得分:-3)
此问题是因为您的设备没有足够的空间来安装应用程序。