这是什么意思:失败[INSTALL_FAILED_CONTAINER_ERROR]?

Mat*_*adt 126 android package-managers android-package-managers

我尝试部署我的应用程序,有时会收到此错误:

Failure 
[INSTALL_FAILED_CONTAINER_ERROR] 
Run Code Online (Sandbox Code Playgroud)

我试图谷歌它,但没有找到错误的含义或它是由什么引起的.我通过IDE(IntelliJ)部署文件被复制到设备到/ data/local/tmp(无根的Huawei Ideos,运行2.2),但包管理器似乎不喜欢它.在安装apk之前,我已经预先从设备中删除了应用程序.我还确保设备上的/ data/local/tmp下没有旧文件.我现在仍然收到这个错误.应该使用调试密钥对包进行签名,因为我通过'运行'应用程序来部署IDE.

$ pwd 
/data/local/tmp 
$ ls -l 
-rw-rw-rw- shell    shell    17257686 2011-04-21 20:31 
com.company.shop 
$ pm install -r com.company.shop 
        pkg: com.company.shop 
Failure [INSTALL_FAILED_CONTAINER_ERROR]
Run Code Online (Sandbox Code Playgroud)

它是什么意思以及如何解决它?

编辑/更新:

不允许在sdcard上安装应用程序时,我可以避免错误设置

android:installLocation="internalOnly"
Run Code Online (Sandbox Code Playgroud)

在清单中.它可以用于开发,但对于生产而言,它并不是我想要的 - 因为我的应用程序相当大,只有17mb; 因此我更喜欢它在SD卡上.如何以往任何时候都能够在外部存储器安装不生根(因为这是我可以删除/mnt/secure/asec/smdl2tmp1.asec的唯一途径,这似乎是一个解决方案,以及).

Ren*_*ene 220

从中更改安装位置

android:installLocation="preferExternal"
Run Code Online (Sandbox Code Playgroud)

android:installLocation="auto"
Run Code Online (Sandbox Code Playgroud)

在您的项目的AndroidManifest.xml中.

  • 但我想更喜欢外...?如何解决这个问题? (20认同)
  • 这就是为我做的事情.谢谢! (12认同)
  • @Sameer nope,这也发生在真实设备上 - 但是不一致.主要是HTC Desire S和Nexus设备. (2认同)

小智 44

从您的设备中删除此文件

/mnt/secure/asec/smdl2tmp1.asec
Run Code Online (Sandbox Code Playgroud)

由Mathias Conradt(OP)编辑/更新:

如果您没有root访问权限,则需要安装SD卡并通过pc将其删除:

/.android_secure/smdl2tmp1.asec
Run Code Online (Sandbox Code Playgroud)

  • 这有效,但你能解释一下,为什么会这样?什么是神秘的smdl2tmp1.asec文件? (13认同)
  • 但我的设备是无根的,看着安全文件夹,只有root有权访问.之前我能够运行应用程序,现在只有一段时间,无法运行它并且它给出了上述错误. (3认同)
  • @Jazz今天发生在我身上.我真的很想知道为什么/这是什么.手动删除文件?为什么不能做这个呢?这是手机错误吗? (3认同)

小智 31

如果您正在使用模拟器,请对其进行编辑并添加更多内存.我有一个问题,就像这个一样,我所做的只是编辑我的AVD的内存从200 MB到1000 MB,问题似乎消失了......祝你好运.

  • 我猜你指的是内部存储,而不是 RAM? (2认同)

小智 7

这意味着早期的安装已经损坏了.如果您在外部安装我建议您再次尝试格式化SD卡.


小智 6

我反复遇到这个错误.我发现避免错误的最简单方法就是简单地格式化SD卡.使用手机或模拟器内部工具.我发现自动生成的SD卡甚至制作你自己的sdcard.iso失败并导致此错误,除非由内部android工具格式化.