I try to deploy my app and sometimes get this error:
Failure
[INSTALL_FAILED_CONTAINER_ERR开发者_运维问答OR]
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).
Change the install location from
android:installLocation="preferExternal"
into
android:installLocation="auto"
in your project's AndroidManifest.xml.
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
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.
This means there was an earlier installation that was corrupt. If you install on external I would suggest that you format the sd card an try again.
I have had this error repeatedly. I have found the simplest way to avoid the error in its entirety is to simply format the SD card. Using the phone or emulators internal tools. I have found that the automatically generated SD cards or even making your own sdcard.iso fails and causes this error unless formated by the internal android tools.
For me this was caused by a lack of space on my emulator's SD card. I was working with a pretty large project and I had thought 40 mb was enough, but I changed it to 200 mb and the problem went away.
Had the same error with various .apk
on Cyanogenmod 12.1 (Android 5.1.1) on my Note 8 with a second partition for Link2SD. I was able to install the apps by forcing the installation via adb as root:
adb root
adb install -f myapp.apk
I got this error message from Android 5.0.1. I had changed the preferred install location to "Removable SD card" via Settings->Apps->Preferred Install Location.
I changed the option back to "Let the system decide" and the error message went away.
For me, it was the device language. I chnaged the language to Arabic to test my application. Then I got this error. Reverting back the language did the trick.
android:installLocation="auto" works..!!
If Not, Once check your external storage space size.[Available memory > app size] If storage space is not enough then also this error is thrown.
It happens when you don't have enough storage in internal storage to install app. Just clear up some memory in internal storage by deleting unwanted files or photos. Memory cleaning software can also help.
I had similar problem with emulator. It was gone when I changed emulator's CPU type from ARM to Intel.
in some situations, removing the libs/android-support-v4.jar
generates this error.
For me, an uninstallation of several applications solved the problem. When a local storage has had enough memory, a deployment of APK completed successfully. But usually I simply restart a gadget, and installation completes. Also, some programs like Clean Master may help. Simply often wipe unuseful processes and close programs with Clean Master and get enough memory.
Restarting my device fixed the issue for me.
精彩评论