El INSTALL_FAILED_INSUFFICIENT_STORAGE
error es la ruina de la vida de cada desarrollador de Android. Ocurre independientemente del tamaño de la aplicación o de la cantidad de almacenamiento disponible. Reiniciar el dispositivo de destino soluciona el problema brevemente, pero pronto vuelve. Hay cientos (si no miles) de publicaciones en el tablero de mensajes de personas que preguntan por qué ocurre el problema, pero la gente de Google guarda un silencio frustrante sobre el tema.
Hay una solución simple. Si su dispositivo de prueba ejecuta Android 2.2 o posterior, agregue el android:installLocation
atributo al archivo de manifiesto de su aplicación, con el valor "preferExternal"
. Esto obligará a la aplicación a instalarse en el almacenamiento externo del dispositivo, como la tarjeta SD de un teléfono.
Por ejemplo:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.andrewsmith.android.darkness"
android:installLocation="preferExternal"
Esto es más una curita que una solución, y puede no ser ideal si desea que su aplicación terminada se instale en la memoria interna del dispositivo. Pero al menos hará que el proceso de desarrollo sea mucho menos frustrante.
fuente
Respuestas:
Esta es solo una solución temporal y no una solución real.
Después de que esto me sucediera y no estar satisfecho con las respuestas actuales, me puse a trabajar tratando de resolverlo a partir de la fuente de AOSP. He encontrado una solución REAL .
Explicación
En primer lugar, un poco de información (simplificada) sobre cómo se instala y actualiza Android
El problema que tenemos la mayoría de nosotros ocurre cuando la aplicación se actualiza, pero falla la eliminación del APK anterior. Lo que en sí mismo aún no hace que la actualización falle, pero sí hace que haya dos archivos APK
/data/app
.La próxima vez que intente actualizar la aplicación, el sistema no puede mover su archivo temporal porque ni (1.apk) ni (2.apk) están vacíos. Como File # renameTo (File) no arroja una excepción, sino que devuelve un PackageManager booleano, no tiene ninguna forma de decir por qué devuelve INSTALL_FAILED_INSUFFICIENT_STORAGE a pesar de que la falla no tuvo nada que ver con la cantidad de espacio libre.
Solución
Correr:
O
Desinstala la aplicación
Use su método favorito para eliminar AMBOS :
Asegúrese de que nada más bloquee las futuras instalaciones de manera similar. ¡En mi caso tenía un
/data/app-lib/<full.package.name>-1
directorio persistente! En este caso, funcionó una instalación en la tarjeta SD y un movimiento posterior a la memoria interna también. (Creando/data/app-lib/<full.package.name>
sin el-1
final).¿Por qué funcionaron otras "soluciones"?
El código para instalar en almacenamiento externo es significativamente diferente, lo que no tiene los mismos problemas
La desinstalación de la aplicación solo elimina una versión del archivo APK
/data/app
. Es por eso que puede reinstalarlo una vez, pero no actualizarlo.La cantidad de espacio libre en un emulador no es realmente relevante cuando ocurre este error
fuente
function fix_app { adb shell "pm uninstall ${1}; rm -rf /data/app/${1}-*; su -c 'rm -rf /data/app-lib/${1}-*'" }
$ fix_app com.facebook.katana
android:installLocation="preferExternal"
pero en vano, nada funciona en mi caso. Estoy usando un dispositivo real para probar. ¿Cuál es la solución en este caso?/data/local/tmp
Necesita aumentar la capacidad de memoria del emulador de Android. Hay dos formas para eso:
Haga clic derecho en la raíz de su proyecto de Android, vaya a "Ejecutar como" y luego a "Ejecutar configuraciones ...". Localice el nodo "Aplicación de Android" en el árbol de la izquierda, luego seleccione su proyecto y vaya a la pestaña "Destino" en el lado derecho de la ventana, busque el campo "Opciones de línea de comando del emulador adicional" (a veces necesitará agrandar la ventana) y finalmente pegar "-partition-size 1024" allí. Haga clic en Aplicar y luego en Ejecutar para usar su emulador.
Vaya a las Preferencias de Eclipse y luego seleccione “Iniciar” Agregue “tamaño de partición 1024” en el campo “Opción de emulador predeterminado”. Haga clic en "Aplicar" y use su emulador como de costumbre.
fuente
Gracias por publicar esta pregunta. Tengo algunas ideas adicionales que pueden ayudar a algunos desarrolladores.
Estoy depurando mi aplicación en un dispositivo (no en el emulador). El dispositivo tiene 21 MB libres
/data
(como lo revela "df" al hacer "adb shell") y mi aplicación es de solo 5 MB. Sin embargo, descubrí que si eliminaba otras aplicaciones en el dispositivo (sin reiniciar el teléfono o reiniciar adbd), INSTALL_FAILED_INSUFFICIENT_STORAGE desaparecería por un tiempo y luego volvería.Por lo tanto, parece que depurar mi aplicación de 5 MB requiere más de 20 MB de espacio
/data
, y además algo se filtraba cada vez que depuraba mi aplicación.Así que hice "adb shell" y enumeré TODO el
/data
directorio conY miré la salida de 5000 líneas para ver a dónde iba todo el espacio.
Descubrí grandes cantidades de espacio desperdiciado en mi dispositivo en el
/data/klog
directorio en forma de archivos de registro antiguos de sesiones de depuración de meses.Estos no eran mis archivos de registro: fueron creados por alguna parte de la infraestructura de Android.
Los eliminé e instantáneamente guardé 58 MB que no se atribuyeron en la aplicación Configuración a ninguna aplicación en particular. Tengo un dispositivo pequeño, por lo que 58 MB es muy significativo (alrededor del 40%).
Hasta ahora, no he vuelto a recibir INSTALL_FAILED_INSUFFICIENT_STORAGE después de muchas ejecuciones. Esperemos que ese sea el verdadero problema, aunque el OP sugiere que su dispositivo tenía mucho espacio (pero no dijo cuánto).
Con suerte, algunos de ustedes también podrán escapar de INSTALL_FAILED_INSUFFICIENT_STORAGE eliminando periódicamente
/data/klog/*
.O, al menos puede hacer lo
ls -a -l -R
de/data
ver a dónde va todo su espacio va, si es que realmente hay algún problema de espacio (oculto).fuente
ls
la orden sels -alR
du
solo enumera carpetas.Lo siguiente ayuda:
Abra un shell en el dispositivo.
Navegue al directorio temporal donde se copió por primera vez el APK entrante
Enumere los archivos disponibles y elimínelos como desee
Esto ha sido confiable para mí hasta ahora en un dispositivo real.
EDITAR: Esto resultó no ser una solución tan confiable como la anterior.
Probé varias soluciones. Nada realmente ayudó. Finalmente encontré una aplicación llamada SD Maid . Eso ayudó.
Dice que la funcionalidad está limitada en dispositivos no enraizados. El mío está arraigado, por lo que sería bueno ver que la gente escuche que es efectivo, es en esos escenarios y si fue solo una casualidad, funcionó para mí (de todos modos, es un problema impredecible).
NOTA: no tengo nada que ver con la aplicación. Lo acabo de encontrar con una búsqueda.
fuente
Lo resolví incluyendo la etiqueta
android:installLocation="auto"
interna<manifest>
en el archivo AndroidManifest.xml.fuente
Error: ADB exited with exit code 1 adb: failed to install build\app\outputs\apk\app.apk: Failure [INSTALL_FAILED_INSUFFICIENT_STORAGE] Error launching application on Android SDK built for x86.
Había agregado una línea adicional al archivo de manifiesto de la aplicación, que es
android:installLocation="preferExternal"
. Al usar esta línea, obliga a instalar la aplicación en el almacenamiento externo. mira el siguiente ejemplo,fuente
Un problema relacionado en el emulador es cuando no queda espacio en la
/data
partición.Por ejemplo,
Aquí hay una vista de muestra del
/data/app
directorio:Eliminé los archivos APK adicionales . Parece que en cada instalación obtienes un nuevo archivo APK. Simplemente elimine los archivos APK adicionales.
Por ejemplo,
fuente
En mi caso, la falla fue causada por la
com.android.providers.media
aplicación. Me enfrenté a esto en el emulador de Android x86. Que hiceDemasiado poco espacio libre en
/data
¡Casi todo fue consumido por una sola aplicación! Es la aplicación del sistema, así que considero mejor no eliminarla. En cambio, limpié los datos de la aplicación.
El disco se borró y la aplicación se instaló correctamente.
fuente
Me siento un poco raro escribiendo esto, pero no puedo estar 100% seguro de que no sea cierto en algunos casos (funcionó para mí). Si tuvo los siguientes síntomas:
Entonces, intente esto:
Desenchufé mi teléfono y lo dejé descansar por TODO EL DÍA. Mi batería se agotó un poco. Después de esto, lo volví a conectar y comencé a depurar nuevamente. ¡Todo funcionó bien esta vez! Y quiero decir realmente REALMENTE bien, como antes.
¿Es posible que este error se deba a algunos elementos de hardware relacionados con la batería ? Todavía se siente raro pensar de esta manera, pero ahora sigo desconectando mi teléfono de vez en cuando (y por la noche) y el problema no volvió.
fuente
Respondiendo a la primera publicación de este tema ...
Síntoma: ¡Algunas aplicaciones no se instalan, diciendo que no hay espacio y que en realidad hay mucho espacio libre en el almacenamiento interno y externo! Solución: deshabilite la instalación externa de forma predeterminada.
Configuración de instalación externa por defecto con esto:
Hace que la instalación sea imposible en muchas aplicaciones que no pueden instalarse externamente (como adblock + o más)
Entonces la solución es
O
fuente
Intenté lo siguiente:
Comprueba si te funciona igual.
fuente
Samsung Galaxy Ace anuncia 158 MB de almacenamiento interno en sus especificaciones, pero las aplicaciones y servicios principales consumen aproximadamente 110 MB (utilicé el administrador de tareas en el dispositivo para inspeccionar esto). Mi aplicación tenía 52 MB, porque tenía muchos recursos. Una vez que eliminé algunos de esos hasta 45 MB, la aplicación logró instalarse sin problemas. El dispositivo todavía me alertaba que el almacenamiento interno estaba casi lleno, y debería desinstalar algunas aplicaciones, a pesar de que solo tenía una aplicación instalada.
Después de instalar una versión de lanzamiento del paquete .apk y luego desinstalarlo, mi dispositivo muestra 99 MB de espacio libre, por lo que podría estar depurando información que satura el dispositivo después de todo. Ver la respuesta de Louis Semprini .
fuente
En Eclipse,
Run -- > Debug Configurations --> Select "target",
y seleccione un objetivo de emulador preferido para iniciar.Luego, debajo de las "opciones adicionales de la línea de comandos del emulador", agregue esto:
Luego CIERRE el emulador y haga clic en el icono de depuración, que abrirá el emulador preferido que seleccionó.
Espero eso ayude...!
fuente
Android Virtual Device Manager
usuarios. Puede configurar el tamaño de la partición en 1024 como "Almacenamiento interno" que representan adisk.dataPartion.size
Me encontré con este problema con mi nuevo Nexus 4 y un APK creado con Adobe AIR. Ya tenía android: installLocation = "preferExternal" en mi manifiesto. Me di cuenta de que también estaba llamando
adb install
con la-s
opción (Instalar paquete en el almacenamiento masivo compartido, como sdcard.) Que parecía excesivo.Eliminar la
-s
bandera deadb install
solucionó el problema para mí.fuente
Como este problema aún existe, pensé que agregaría algo a la respuesta de RacZo para fines de desarrollo. Si no está utilizando el complemento Eclipse o por alguna razón no tiene la fuente, sino solo el .apk, puede aumentar el tamaño de la partición desde la línea de comandos utilizando la misma opción cuando inicie el emulador:
Hasta donde sé, esta opción no está documentada en developer.android.com, así que pensé en publicarla aquí para que la gente pueda encontrar esta solución.
fuente
avd
Encontré esta pregunta porque recibí este error al usar Sideload Wonder Machine para instalar aplicaciones en mi teléfono real. Encontré que el problema era que tenía múltiples archivos .apk en el directorio / payload. Pensé que esto era algo compatible, pero cuando eliminé todos los archivos .apk excepto uno, el error desapareció.
fuente
Simplemente desinstale la aplicación del emulador, ya sea desde la línea de comandos o vaya a la configuración y desinstale la aplicación. Esto detendrá el error.
fuente
Si está utilizando un dispositivo real, simplemente se ha quedado sin memoria interna. Simplemente vaya a la configuración de Android -> Aplicaciones y mueva algunas aplicaciones a la tarjeta SD o desinstale algunas aplicaciones.
Si está utilizando el emulador, vea la respuesta de RacZo .
fuente
Me encontré con el mismo error cuando intenté instalar por lotes unas 50 aplicaciones en el directorio de la tarjeta SD usando el shell ADB después de una actualización completa de ROM:
Algunos de ellos se instalaron, pero muchos fallaron con el error INSTALL_FAILED_INSUFFICIENT_STORAGE. Todas las aplicaciones fallidas tenían espacio en su nombre. Lote los renombré e intenté nuevamente. Todo funcionó esta vez. No hice reinicio ni nada. Puede ser que este no sea el problema que enfrentan, pero esto podría ayudar a alguien a buscar con el mismo problema que yo enfrenté.
fuente
Solución de emulador
Abre tu
.Android
directorio. Por lo general, en su directorio de inicio. Luego vaya aavd
y luego abra el directorio que tiene el nombre del avd que desea cambiar.Ahora edite el
config.ini
archivo y agregue la siguiente línea o modifique la siguiente línea:disk.dataPartition.size=1024
¿Dónde
1024
está el tamaño que le gustaría usar en MB? Guarde el archivo y luego inicie su emulador conwipe user data
marcado. Su emulador ahora debería tener el nuevo tamaño.fuente
La solución es simple.
Abra el Administrador de AVD. Edite su AVD.
Abajo, en la sección de hardware, hay algunas propiedades enumeradas con "Nuevo ..." y "Eliminar" a la derecha.
Presione Nuevo. Seleccione el tamaño de la partición de datos. Establecer en "512 MB" (se requiere el MB). Y tu estas listo. si aún tiene problemas, aumente también las particiones de su sistema y caché utilizando el mismo método.
Todo está documentado aquí: http://developer.android.com/guide/developing/devices/managing-avds.html
fuente
Asegúrese de no conectar su dispositivo Android con USB mientras intenta ejecutar el emulador
fuente
Si está ejecutando su aplicación en un emulador, y si este problema persiste, verifique su administrador de notificaciones. Si le muestra un ícono y una notificación sobre "La memoria del teléfono está llena", significa que ya ha instalado tantas aplicaciones en su emulador. Desinstale varias aplicaciones que no desea actualmente en "Configuración >> Administrar aplicación >> Seleccionar aplicación >> Desinstalar".
Ese conjunto.
Ahora vuelva a ejecutar el programa.
fuente
Recibí este error hoy, cuando uso mi teléfono para probar / depurar con Eclipse.
Mi error fue que usé caracteres especiales noruegos ("æ", "ø", "å") en el nombre de la aplicación. Cuando modifiqué el nombre de la aplicación (usando "o" en lugar de "ø"), la aplicación se instaló correctamente.
Probablemente no sea su problema, pero podría ser una nota para otras personas que obtienen el mismo error.
fuente
Después de probar todo lo demás en este hilo, descubrí que mi propio problema era porque la ruta al archivo .apk era demasiado larga. Así que fui al directorio donde estaba el .apk e hice:
en vez de
Y funcionó ... instalado bien.
Solo pensé que esto podría ayudar a alguien más.
fuente
Solución alterna:
Compilar como 2.1 sin
android:installLocation="preferExternal"
.¿De acuerdo?
Compilar como 2.2 incluido
android:installLocation="preferExternal"
.Esto todavía se instalará en la versión del SDK inferior a 8 (se ignora la etiqueta XML).
fuente
En mi caso, se solucionó aumentando la memoria extendida de eclipse, cambiando el valor de -Xmx768m en eclipse.ini
fuente
Terminé desinstalando la aplicación del dispositivo y luego volví a instalarla en Eclipse. Este es un problema que tengo todo el tiempo en mi dispositivo por el uso regular, pero hoy recibí ese mensaje del desarrollo.
fuente
Yo también enfrenté el mismo problema, e hice un "Restablecimiento de datos de fábrica", y funcionó bien después de eso.
fuente
No tenía acceso de root en mi teléfono y no estoy preparado para instalar mi aplicación en la tarjeta SD. Hay 15 MB de espacio disponible
/data/
y mi aplicación tiene menos de 2 MB.Por un tiempo me las arreglé; limpiando el proyecto Eclipse y reiniciando el teléfono, pero finalmente eso dejó de funcionar (probablemente después de una actualización).
Limpiar el caché de mi aplicación me ha resuelto el problema y no requiere reiniciar el teléfono ni desinstalar la aplicación.
Hay aplicaciones en el mercado que puede usar para borrar el caché de múltiples aplicaciones a la vez. Busca "limpio".
fuente