adb安装失败,错误提示为“INSTALL_FAILED_INSUFFICIENT_STORAGE”

7
我买了我的第一部Android手机Sony Xperia M,但没有意识到我们无法将应用程序移动到外部SD卡的问题。有关详细信息,请参阅此链接:link
索尼唯一建议的是对设备进行root,分区并使用第三方应用程序进行移动。他们还提到,root可能会使保修失效。
我的Sony Xperia M Android详细信息如下:
Model number C1904
Android version 4.1.2
Build number 15.1.C.2.8

我尝试运行了一些论坛中提供的以下命令,但对我无效:

adb devices
adb shell pm get-install-location
adb shell pm set-install-location 2

尽管以上命令没有提示任何错误,我可以通过adb shell pm get-install-location获得安装位置为2。因此,我相信它已经正确设置了。但是我尝试安装一些应用程序,它只安装在内部存储器中。
我尝试使用“apps2sd”实用程序移动我的应用程序,但它显示以下错误:
'The device does not have a real primary external storage, or the primary external storage is emulated. Moving app to SD function cannot be supported by this device.'

最后从另一个论坛得知,我们可以通过'adb install'命令安装apk文件并直接安装到SD卡中,如下所示:

adb install -s C:\com.furkan0gul.mvanparking.apk

上述命令执行失败,报错如下:
3531 KB/s (13523837 bytes in 3.740s)
        pkg: /sdcard/tmp/com.furkan0gul.mvanparking.apk
Failure [INSTALL_FAILED_INSUFFICIENT_STORAGE]

我在外部卡中有足够的空间(总共8GB内存中超过6GB),您可以使用以下命令查找此信息:

>adb shell df
Filesystem              Size    Used    Free   Blksize
/dev                    402M     64K    402M   4096
/mnt/asec               402M      0K    402M   4096
/mnt/obb                402M      0K    402M   4096
/system                1183M    907M    275M   4096
/cache                  246M      4M    241M   4096
/persist                  3M     80K      3M   4096
/firmware                63M     43M     19M   16384
/data                  2101M   1401M    700M   4096
/lta-label               15M      4M     10M   4096
/storage/sdcard0       2101M   1401M    700M   4096
/storage/sdcard1       7572M   1088M   6483M   32768

如果我运行不带“-s”开关的adb install命令,则会成功安装在内部存储器中,无任何问题,如下所示:
> adb install C:\com.furkan0gul.mvanparking.apk
2549 KB/s (13523837 bytes in 5.180s)
        pkg: /data/local/tmp/com.furkan0gul.mvanparking.apk
Success

在安装到SD卡时,应用程序似乎被安装在“/sdcard”中,但在“df”命令输出中没有这样的挂载。还尝试通过谷歌搜索“INSTALL_FAILED_INSUFFICIENT_STORAGE”。其中大部分要求在模拟器中进行一些更改才能完成此操作。我已经卸载了应用程序,重新启动设备并尝试将其安装到SD卡中,但是仍然无法正常工作,最终以相同的存储空间不足错误结束。
我没有使用模拟器。我只是直接将APK安装到我的SD卡中。我不想root设备和取消保修。如果有人能提供您的想法,将不胜感激。

2个回答

4

有一个简单的解决方法。如果您的测试设备运行Android 2.2或更高版本,则添加以下代码:

android:installLocation 

将"preferExternal"属性添加到应用程序的清单文件中。这将强制应用程序安装在设备的外部存储上,例如手机的SD卡。

例如:

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

我只是在下载apk文件,并尝试将其安装到我的实际设备(而不是测试设备)上。我不确定如何更改应用程序清单文件?您能否提供详细的说明?请注意,我不是此应用程序的开发人员。 - Prabu
一些释放空间的提示:进入“设置”,点击“应用程序”,然后点击“管理应用程序”,对于那些有此选项的应用程序,点击“将其移至SD卡”。 在同一列表中,还要点击所有应用程序上的“清除缓存”。 无法在此处清除浏览器缓存,因此打开您的浏览器,进入“设置”,点击“清除缓存”。 - Shekhar Sahu
尝试使用以下命令将安装位置更改为sd卡:adb shell pm set-install-location 2 - Shekhar Sahu
我已经完成了这个并在我的第一篇帖子中提到了。虽然命令没有提示错误,但在运行命令后应用程序只安装在内部存储器中,而不是SD卡中。 - Prabu
仍然失败。要么是相同的错误,要么无法定位媒体。 - cjayem13
显示剩余4条评论

0

我有一部安装了统一存储的Fairphone(第一版)。应该通过统一存储解决了INSTALL_FAILED_INSUFFICIENT_STORAGE问题。然而,尽管有12GB的可用磁盘空间,几个月后它仍然出现了。对我来说,以下步骤解决了这个问题:

  1. 在手机上安装ssh服务器
  2. 登录
  3. su(如果您不是root用户)
  4. pm set-install-location 1(设置为外部存储器)

由于我在内部存储器上有足够的空间,所以这比外部存储器更可取(由于统一存储,我可能已经没有外部存储器了)。这可能是特定于Fairphone的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接