What does this mean: Failure [INSTALL_FAILED_CONTAINER_ERROR]?
I try to deploy my app and sometimes get this error:
Failure
[INSTALL_FAILED_CONTAINER_ERROR]
I tried to google it but don't find what the error means or what it's caused by. I deploy via IDE (IntelliJ) the file gets copied to the device to the /data/local/tmp (unrooted Huawei Ideos, running 2.2), but the package manager doesn't seem to like it. Before installing the apk, I already removed the app from the device beforehand. I also made sure there was no old file under /data/local/tmp on the device. Still I'm getting this error now. The package should be signed with the debug key, since I deploy via IDE by 'running' the app.
$ 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]
What does it mean and how to resolve it?
Edit/Update:
I can avoid the error when not allowing the app to be installed on sdcard, setting
android:installLocation="internalOnly"
in the manifest. It's ok for development, but for production, it's not really what I want - since my app is quite large with 17mb; therefore I prefer it to be on sdcard. How to ever be able to install it on the external memory without rooting (since this is the only way I could delete /mnt/secure/asec/smdl2tmp1.asec, which seems to be one solution as well).
Solution 1:
Change the install location from
android:installLocation="preferExternal"
into
android:installLocation="auto"
in your project's AndroidManifest.xml.
Solution 2:
remove this file from your device
/mnt/secure/asec/smdl2tmp1.asec
Edit/Update by Mathias Conradt (OP):
If you don't have root access, you need to mount the sdcard and remove it via pc:
/.android_secure/smdl2tmp1.asec
Solution 3:
If you're using an emulator, edit it and add more memory. I've had a problem just like this one and all I did was edit my AVD's memory from 200 MB to 1000 MB and the problem seem to go away... Good Luck.