What does this mean: Failure [INSTALL_FAILED_CONTA

2019-01-10 06:03发布

问题:

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).

回答1:

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


回答2:

Change the install location from

android:installLocation="preferExternal"

into

android:installLocation="auto"

in your project's AndroidManifest.xml.



回答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.



回答4:

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.



回答5:

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.



回答6:

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.



回答7:

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.



回答8:

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


回答9:

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.



回答10:

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.



回答11:

I had similar problem with emulator. It was gone when I changed emulator's CPU type from ARM to Intel.



回答12:

in some situations, removing the libs/android-support-v4.jar generates this error.



回答13:

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.



回答14:

Restarting my device fixed the issue for me.