¿Qué significa esto: Error [INSTALL_FAILED_CONTAINER_ERROR]?

129

Intento implementar mi aplicación y, a veces, aparece este error:

Failure 
[INSTALL_FAILED_CONTAINER_ERROR] 

Intenté buscarlo en Google, pero no encuentro qué significa el error o por qué lo causa. Implemento a través de IDE (IntelliJ) el archivo se copia en el dispositivo a / data / local / tmp (Huawei Ideos sin raíz, ejecutando 2.2), pero al administrador de paquetes no parece gustarle. Antes de instalar el apk, ya eliminé la aplicación del dispositivo de antemano. También me aseguré de que no hubiera ningún archivo antiguo en / data / local / tmp en el dispositivo. Todavía recibo este error ahora. El paquete debe estar firmado con la clave de depuración, ya que lo implemento a través de IDE 'ejecutando' la aplicación.

$ 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]

¿Qué significa y cómo resolverlo?

Editar / Actualizar:

Puedo evitar el error al no permitir que la aplicación se instale en la tarjeta SD, configurando

android:installLocation="internalOnly"

en el manifiesto Está bien para el desarrollo, pero para la producción, no es realmente lo que quiero, ya que mi aplicación es bastante grande con 17mb; Por lo tanto, prefiero que esté en la tarjeta SD. Cómo poder instalarlo en la memoria externa sin rootear (ya que esta es la única forma en que podría eliminar /mnt/secure/asec/smdl2tmp1.asec, que también parece ser una solución).

Mathias Conradt
fuente
Solo por curiosidad: ¿puedes instalarlo pm install -f com.company.shop?
Jakub Czaplicki
Hay varias variaciones en el INSTALL_FAILED_CONTAINER_ERRORproblema, para algunos de ellos vea mi respuesta aquí: stackoverflow.com/a/30343659/313113
bitek
Para mí, fue tan simple como el emulador "quedándose sin espacio" (???) y tuve que borrar los datos en el Administrador de AVD.
EpicPandaForce

Respuestas:

44

eliminar este archivo de su dispositivo

/mnt/secure/asec/smdl2tmp1.asec

Editar / Actualizar por Mathias Conradt (OP):

Si no tiene acceso a la raíz, debe montar la tarjeta sd y eliminarla a través de la PC:

/.android_secure/smdl2tmp1.asec
Mathias Conradt
fuente
3
pero mi dispositivo está desrooteado, y mirando la carpeta segura, solo la raíz tiene acceso. Pude ejecutar la aplicación antes, solo ahora desde hace un tiempo, no puedo ejecutarla y da el error anterior.
Mathias Conradt
1
por cierto, también hay una carpeta / mnt / asec / que puedo alcanzar con no root, pero que está vacía
Mathias Conradt
3
@Jazz Esto me pasó hoy. Realmente me gustaría saber por qué / de qué se trata. ¿Eliminar archivo manualmente? ¿Por qué no podría eclipse hacer esto? ¿Es esto un error del teléfono?
Erik
1
Estoy teniendo este problema. No puedo ver los archivos / carpetas con mi Mac. ¿Hay alguna otra manera?
SleepNot
14
Esto funcionó, pero ¿podría explicar por qué lo hace? ¿Qué hay en el misterioso archivo smdl2tmp1.asec?
Alexander Pacha
222

Cambiar la ubicación de instalación de

android:installLocation="preferExternal"

dentro

android:installLocation="auto"

en el AndroidManifest.xml de tu proyecto.

René
fuente
12
Esto es lo que hizo por mí. ¡Gracias!
Jim McKeeth
Sí, esto también lo hizo por mí. ¡Gracias!
Senthil Kumaran
22
pero quiero preferir lo externo ...? ¿Cómo arreglar esto?
Aiden Fry
2
@Sameer no, esto también ocurre en dispositivos reales, pero es inconsistente. Los principales son los dispositivos HTC Desire S y Nexus.
Aiden Fry
1
@AidenFry Use la solución user2445968 si desea mantener preferExternal.
LG
32

Si está utilizando un emulador, edítelo y agregue más memoria. He tenido un problema como este y todo lo que hice fue editar la memoria de mi AVD de 200 MB a 1000 MB y el problema parece desaparecer ... Buena suerte.

Dan
fuente
Sí, sucedió lo mismo conmigo. Pulgares arriba :)
NaXir
Además de aumentar la memoria, también tuve que borrar los datos del usuario y solo después de eso, el nuevo tamaño se reflejó y el error desapareció.
Varun
2
¿Puedo adivinar que se refiere al almacenamiento interno y no a la RAM?
Jonny
1
¡Aumenté la memoria de mi AVD y luego borré los datos! Y ahora está funcionando.
Conozca a Vora el
7

Esto significa que hubo una instalación anterior que estaba dañada. Si instala en externo, le sugiero que formatee la tarjeta SD y vuelva a intentarlo.

dalbator
fuente
6

He tenido este error repetidamente. He encontrado que la forma más simple de evitar el error en su totalidad es simplemente formatear la tarjeta SD. Uso del teléfono o emuladores de herramientas internas. He descubierto que las tarjetas SD generadas automáticamente o incluso al hacer su propio sdcard.iso fallan y causan este error a menos que lo formateen las herramientas internas de Android.

usuario2445968
fuente
1
¡Bienvenido a Stack Overflow! Gracias por tu publicación! No utilices firmas / lemas en tus publicaciones. Su carpeta de usuario cuenta como su firma, y ​​puede usar su perfil para publicar cualquier información sobre usted que desee. Preguntas frecuentes sobre firmas / lemas
Andrew Barber
Resolvió esto con la misma solución, ya que el problema es causado por un error al escribir en la tarjeta SD, es mejor que el entorno de trabajo de René si desea mantener android: installLocation = "preferExternal".
LG
Confirmar. Error en SD fue la razón para mí. Lo probé eliminando "preferir externo" del manifiesto: está instalado bien.
djdance
4

Para mí, esto fue causado por la falta de espacio en la tarjeta SD de mi emulador. Estaba trabajando con un proyecto bastante grande y pensé que 40 mb eran suficientes, pero lo cambié a 200 mb y el problema desapareció.

noisecapella
fuente
4

Tuve el mismo error con varios .apken Cyanogenmod 12.1 (Android 5.1.1) en mi Note 8 con una segunda partición para Link2SD. Pude instalar las aplicaciones forzando la instalación a través de adb como root:

adb root
adb install -f myapp.apk
Demasiado grande.
fuente
3

Recibí este mensaje de error de Android 5.0.1. Había cambiado la ubicación de instalación preferida a "Tarjeta SD extraíble" a través de Configuración-> Aplicaciones-> Ubicación de instalación preferida.

Cambié la opción de nuevo a "Dejar que el sistema decida" y el mensaje de error desapareció.

nyxee
fuente
1
Esta parecía ser la solución para mí con Cyanogenmod 12 (Android 5.0.2). Esa apertura parecía estar obligando a la aplicación a instalarse en la tarjeta SD extraíble a pesar de que el manifiesto de la aplicación especificaba que no podía instalarse allí.
Sam
1

Para mí, fue el idioma del dispositivo. Cambié el idioma al árabe para probar mi aplicación. Entonces recibí este error. Revertir el idioma hizo el truco.

Elyess Abouda
fuente
1

android: installLocation = "auto" funciona .. !!

Si no es así, una vez verifique el tamaño del espacio de almacenamiento externo. [Memoria disponible> tamaño de la aplicación] Si el espacio de almacenamiento no es suficiente, también se genera este error.

Mallikarjungouda Annigeri
fuente
0

Tuve un problema similar con el emulador. Desapareció cuando cambié el tipo de CPU del emulador de ARM a Intel.

Wytas
fuente
Esto realmente no ayuda al OP con su problema, ya que su preocupación es que funcione en dispositivos del mundo real, muchos de los cuales aún usan CPU ARM.
James Green
0

En algunas situaciones, la eliminación de libs/android-support-v4.jargenera este error.

Amir Saniyan
fuente
0

Para mí, la desinstalación de varias aplicaciones resolvió el problema. Cuando un almacenamiento local ha tenido suficiente memoria, la implementación de APK se completó con éxito. Pero, por lo general, simplemente reinicio un gadget y la instalación se completa. Además, algunos programas como Clean Master pueden ayudar. Simplemente limpie los procesos inútiles y cierre los programas con Clean Master y obtenga suficiente memoria.

CoolMind
fuente
0

Reiniciar mi dispositivo me solucionó el problema.

theOzmic
fuente