130

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

Mathias Conradt
  • 28,420
  • 21
  • 138
  • 192

15 Answers15

224

Change the install location from

android:installLocation="preferExternal"

into

android:installLocation="auto"

in your project's AndroidManifest.xml.

Enoobong
  • 1,594
  • 2
  • 15
  • 25
Rene
  • 4,033
  • 2
  • 24
  • 29
45

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
Mathias Conradt
  • 28,420
  • 21
  • 138
  • 192
  • 3
    but my device is unrooted, and looking at the secure folder, only root has access. I was able to run the app before, only now since a while, cannot run it and it gives the above error. – Mathias Conradt Apr 21 '11 at 13:27
  • 1
    btw - there's also a folder /mnt/asec/ that I can reach with non-root, but that's empty – Mathias Conradt Apr 21 '11 at 13:28
  • Ok, turns out I need to mount the sdcard and remove it via pc (.android_secure/smdl2tmp1.asec), then it works again. – Mathias Conradt Apr 21 '11 at 15:26
  • 3
    @Jazz This happend to me today. I would really like to know why/what this is about. Delete file manually? Why could not eclipse do this? Is this a phone bug? – Erik Jul 06 '11 at 19:59
  • I couldn't find the .asec files in the mentioned locations, and erasing the sdcard from the emulator didn't work. It worked when I deleted the sdcard.img in my avd directory. – Roy Solberg Jun 13 '12 at 20:45
  • 1
    im having this problem. i cannot see the files/folders using my Mac. is there any other way? – SleepNot Aug 14 '12 at 10:46
  • 16
    This worked, but could you explain, why it does? What is in the mysterious smdl2tmp1.asec-file? – Alexander Pacha May 27 '13 at 00:42
  • 1
    I can't find this file (on any path, even on the entire file system), even though the device is rooted. What else can I do? – android developer Jan 03 '15 at 17:43
32

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.

j7nn7k
  • 17,995
  • 19
  • 78
  • 88
Dan
  • 329
  • 3
  • 2
7

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.

dalbator
  • 79
  • 1
  • 1
6

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.

Andrew Barber
  • 39,603
  • 20
  • 94
  • 123
user2445968
  • 61
  • 1
  • 1
  • 1
    Welcome to Stack Overflow! Thanks for your post! Please do not use signatures/taglines in your posts. Your user box counts as your signature, and you can use your profile to post any information about yourself you like. [FAQ on signatures/taglines](http://stackoverflow.com/faq#signatures) – Andrew Barber Jun 02 '13 at 21:56
  • Resolved this with the same solution, as the problem is cause by an error writing to the SDCard, it is better than the workaorund of Rene f you want to keep android:installLocation="preferExternal". – L. G. Jan 14 '14 at 12:34
  • Confirm. Error on SD was the reason for me. I tested it removing "prefer external" from manifest - its installed ok. – djdance Sep 04 '14 at 13:20
4

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.

noisecapella
  • 814
  • 7
  • 17
4

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
Tobi G.
  • 1,530
  • 2
  • 13
  • 16
3

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.

nyxee
  • 2,773
  • 26
  • 22
  • 1
    This seemed to be the solution for me running Cyanogenmod 12 (Android 5.0.2). That open seemed to be *forcing* the app to install on the removable SD card even though the app's manifest specified that it couldn't be installed there. – Sam May 08 '15 at 20:23
2

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.

Rahul K
  • 52
  • 3
1

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.

Elyess Abouda
  • 659
  • 12
  • 20
1

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.

0

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

Wytas
  • 193
  • 4
  • 11
  • This doesn't really help the OP with their problem, since their concern is getting it working on real world devices, plenty of which still use ARM CPUs. – James Green Jun 22 '13 at 22:08
0

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

Amir Saniyan
  • 13,014
  • 20
  • 92
  • 137
0

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.

CoolMind
  • 26,736
  • 15
  • 188
  • 224
0

Restarting my device fixed the issue for me.

theOzmic
  • 27
  • 8