¿Cómo resuelvo el error INSTALL_FAILED_DEXOPT?

181

Estoy desarrollando una aplicación de Android con Android 2.2, el tamaño de mi aplicación APK es de 22.5 MB, y me gustaría crear una nueva compilación para una tableta Samsung. Tuve el siguiente error:

INSTALL_FAILED_DEXOPT

¿Cómo resuelvo este tipo de error?

Juan
fuente
¿pudiste instalar con éxito esta aplicación en dispositivos que no sean la tableta Samsung?
Will Tate
1
Debe pegar en la salida de logcat generada cuando falla la instalación.
fadden
Tuve el mismo problema en un dispositivo que estaba probando (HTC Droid Eris). Tenía una versión previamente instalada de mi aplicación en el teléfono, simplemente la desinstalé y la reinstalé y estuvo bien.
ninjasense
Desinstalar y reinstalar la aplicación siempre funciona. Borrar los datos del usuario o recrear el AVD están haciendo lo mismo de una manera más lenta. La pregunta es, ¿hay una opción mejor y más rápida?
bschandramohan
77
@ChandraMohan eso NO es cierto. Deja de intentar hacerlo realidad. He formateado mi dispositivo e intenté reinstalar la aplicación. ¡Todavía arroja este error!
Artiom Chilaru

Respuestas:

99

Reiniciar el emulador desde Android SDK and AVD Managery seleccionar la opción me Wipe User Dataha resuelto este problema.

Puede encontrar la opción resaltada en la imagen siguiente:

Opción Borrar datos de usuario al iniciar el emulador de Android

Vikas Patidar
fuente
17
¿Qué pasa si es mi teléfono y no un emulador?
mtmurdock
1
@mtmurdock intente, adb kill-serverentonces adb start-serverdebería resolver su problema. Es posible que exista una aplicación anterior, luego desinstálela primero.
Vikas Patidar
@mtmurdock Probablemente lo intentaste, pero reiniciar el teléfono funcionó para mí :)
Dunc
matar servidor y luego comenzar no funcionó para mí, reiniciar el emulador y Borrar datos funciona para mí en realidad.
Shuvo
74

Esto parecía estar relacionado con el espacio en disco para mí. Un emulador 5.1 recién lanzado arranca con un error de "poco espacio en el disco", y mirando las propiedades del emulador, el espacio predeterminado asignado para el almacenamiento interno es de 800 MB, que parece bajo.

La solución, por lo tanto, era aumentar esto (fui a 4GB). Curiosamente, el emulador aún se inicia con la misma advertencia de espacio en disco, pero el restablecimiento de fábrica (Configuración -> Copia de seguridad y restauración dentro del emulador) lo resolvió por completo para mí.

Es un poco extraño que no funcione de fábrica con la configuración predeterminada.

HughHughTeotl
fuente
2
De hecho, este es el problema que tuve y el restablecimiento a través de la configuración del teléfono me lo solucionó. ¡Gracias!
Justin Stanley
1
Probé casi todo, pero nada funcionó excepto este, gracias
Shehzy
1
Después de 2 horas encontré este comentario. ¡Gracias por salvar mi día, funcionó!
kilian eller
1
Esto causó el INSTALL_FAILED_DEXOPT en mi emulador también. Había aumentado el tamaño pero necesitaba ir a la configuración y ejecutar una restauración de fábrica. Se solucionó el problema.
Dave Thomas el
Cristo ... otra vez esto me sucedió después de actualizar mi Mac OS. Duplicando mi reembolso de esa solución, vaya a -> configuración y ejecute la restauración de fábrica. Tuve que buscar esta pregunta solo para recordar cómo lo arreglé ... gracias a Dios por el historial del desbordamiento de la pila, y pude encontrar mi comentario
Dave Thomas
17

Su versión anterior de la aplicación que está instalando tiene bibliotecas / jarras dependientes que se han cambiado. Me encontré con este problema al actualizar otros archivos jar a los que mi aplicación hacía referencia.

Deberá desinstalar su versión anterior y luego no debería tener más problemas ...

Configuración -> Aplicaciones -> Administrar aplicaciones -> [Buscar y desinstalar su aplicación]

Los errores INSTALL_FAILED_DEXOPT no deberían aparecer. Me gusta

[2011-06-14 01:23:40 - ProtectYourself] Installing ProtectYourself.apk...
[2011-06-14 01:24:26 - ProtectYourself] Installation error: INSTALL_FAILED_DEXOPT
[2011-06-14 01:24:26 - ProtectYourself] Please check logcat output for more details.
[2011-06-14 01:24:26 - ProtectYourself] Launch canceled!

Whoo hoo

Lenn Dolling
fuente
Puedo coincidir la causa y el efecto. La misma situación ocurrió en mi caso después de jugar con frascos. Para mí esto fue solo en dispositivos basados ​​en Android 2.3 Gingerbread, ICS y Lollipop estaban bien.
AlexVPerl
¿Será esto un problema al subir a Play Store? ¿o el instalador elimina la aplicación y la reinstala?
Eduardo Naveda
14

Si está utilizando Android Studio , intente limpiar su proyecto:

Construir> Proyecto limpio

SandroMarques
fuente
12

Parece que este mensaje de error puede tener muchas causas diferentes. El caso que encontré fue en un dispositivo real (por lo que las soluciones de las bases del emulador no se aplicaron).

Básicamente, cuando esto sucede, configure su filtro Logcat en Verbose o Warn , lo que lo ayudará a obtener más información sobre la causa.

En mi caso, se incluyeron versiones múltiples o conflictivas de JUnit en el proyecto en el que estaba trabajando (una gran base de código existente). La aplicación de Android que estaba tratando de implementar tenía varios proyectos de biblioteca como dependencias, y había configurado erróneamente cosas para incluir múltiples archivos jar JUnit.

Descubrí esto basado en una serie de mensajes de Logcat. Tenga en cuenta que la línea WARN da la causa:

DEBUG/dalvikvm(4808): DexOpt: 'Ljunit/framework/TestSuite$1;' has an earlier definition; blocking out
11-06 14:30:10.973: WARN/dalvikvm(4808): Invalid file flags in class Ljunit/runner/Sorter$Swapper;: 0209
11-06 14:30:10.973: null/libc(4808): Fatal signal 11 (SIGSEGV) at 0x00000004 (code=1), thread 4808 (dexopt)
wsanville
fuente
3
Esta es una buena sugerencia. Estoy de acuerdo en que debe ver la salida de LogCat para ver cuál es el mensaje de error real. Recibí este error y fue porque mi dispositivo tenía poco almacenamiento y no podía descomprimir el APK. Creo que hay varias razones por las que este error se puede activar y desinstalar o borrar los datos del usuario puede ser innecesario. Publiqué esta misma sugerencia como respuesta a una pregunta similar (duplicada).
Bryan Bedard
2
Lo siento, este es el mismo punto que Bryan Bedard estaba haciendo. Estaba sin espacio; por lo general, aparece un error como "espacio insuficiente", pero por alguna razón recibí este error DEXOPT. Logcat mostró un error Zip inflate: error de escritura: no queda espacio en el dispositivo.
mobibob
12

Me encontré con esto con Android Studio 3.4.1 pero usando un emulador anterior (5.0). Este procedimiento (en Mac) solucionó el problema:

  1. detener el emulador
  2. cd ~ / .android / avd / [nombre del emulador] .avd
  3. rm * .lock
  4. limpie el emulador
  5. iniciar emulador
Conocido
fuente
3
Hacer lo que se mencionó anteriormente después de aumentar el almacenamiento interno del emulador a 4 gb es lo único que funcionó para mí.
dell116
@ dell116 No me sorprende que a veces haya que hacer más de una cosa, ¡solo en base a todas las respuestas diferentes a esta pregunta!
Ken
3
¡Convenido! Y felicidades por enganchar el nombre de usuario "Ken".
dell116
Desafortunadamente, ninguna de las combinaciones de limpieza / aumento de almacenamiento / limpieza nuevamente me ayudó. Me di por vencido.
Can Poyrazoğlu
1
@ CanPoyrazoğlu - Casi me rendí también. Creo que los emuladores deben ser extremadamente sensibles y muchas cosas pueden hacer que fallen (como lo demuestran todas las diferentes respuestas aquí a una pregunta formulada hace más de ocho años). La eliminación de los archivos .lock fue clave en mi caso, pero ciertamente puedo ver dónde eso podría no resolver todos los problemas.
Ken
11

Cambié el tamaño de RAM y la capacidad de almacenamiento entre núcleos del emulador. Ahora está funcionando ... en eclipse AVD Manager

KATJ Srinath
fuente
2
Esto también resuelve el problema en Android Studio. Tenía solo 200 MB de almacenamiento interno. Aumente hasta 1 GB y problema resuelto. El mismo mensaje de error ... ¡Gracias!
Joan Casadellà
A mí también me funciona. ¡Sube desde 200MB!
JohnyTex
10

prueba mi respuesta https://stackoverflow.com/a/34918549/3737254

Si usa Android Studio 2.0, DESACTIVE la ejecución instantánea.

Para su información, la ejecución instantánea es una nueva característica de Android Studio 2.0 (nunca la usé>. <)

cómo deshabilitar: preferencias -> compilación, ejecución e implementación -> ejecución instantánea -> deshabilitar, luego funciona como magia

¡Disfrutar!

yfsx
fuente
Este fue mi problema al probar las API antiguas en un emulador. ¡Después de cambiar esto y limpiar el emulador, funcionó!
Ben
8

Necesitaba desactivar Instant Run para solucionar el problema. Para deshabilitar la ejecución instantánea en OS X, vaya a Android Studio > Preferencias > Compilación, ejecución, implementación > Ejecución instantánea y elimine la marca de Enable Instant Run to hot swap code/resource changes on deploy (default enabled).

iamkaan
fuente
Esto funcionó para mi dexopt error. Application failed to install. Intenté esto antes de encontrar esto: adb kill-server adb start-serverreiniciando Android Studio y restableciendo mi dispositivo de fábrica.
Sherlock
7

La única solución que me funcionó para solucionar esto fue aumentar la RAM de la VM a 4 GB.

Jim
fuente
6

Tuve el mismo problema hoy con Android Studio en un nuevo dispositivo virtual. Parecía que había descargado la x86_64imagen, recreando el VD con la x86imagen equivalente reparada.

Esperaba obtener un INSTALL_FAILED_NO_MATCHING_ABISen este caso, pero de alguna manera estaba atrapado conINSTALL_FAILED_DEXOPT

dvkch
fuente
1
Para mí fue todo lo contrario. Intentando instalar en x86falló. Después de descargar la imagen y cambiar el emulador al x86_64error, desapareció. Usé la imagen del sistema API 21.
friederbluemle
Lo contrario funcionó para mí también. Intenté todo en este hilo antes de intentar usar la x86_64imagen en lugar de la x86. También estaba usando un API 21 AVD (Nexus 5).
Renan Ferrari
5

Estoy trabajando con Android Studio y tuve el mismo error.

La eliminación de la carpeta de compilación del Modul principal ayudó. Después de eliminar todo vuelve a la normalidad.

Informática
fuente
4

INSTALL_FAIL_DEXOPT generalmente tiene que ver con el límite establecido en classes.dex. En cualquier cosa, el dexopt anterior a ICS fallará en cualquier cosa de más de 5 MB. Las versiones recientes de Android usan un búfer de 8 o 16 MB.

Verifique el tamaño de classes.dex en su APK. También sería bueno ver cuál es su recuento de métodos, ya que dex tiene un límite de campo / método 65536.


Referencias

Error al instalar la aplicación (INSTALL_FAILED_DEXOPT)

https://www.facebook.com/notes/facebook-engineering/under-the-hood-dalvik-patch-for-facebook-for-android/10151345597798920

Cómo reducir el código: límite de método de 65k en dex

Jared Rummler
fuente
3

Me encontré con este problema después de habilitar el indicador jumboMode en la compilación (dex.force.jumbo=true ). Todo funcionó bien en los dispositivos Android más nuevos, pero la instalación falló en Gingerbread.

Entonces, si su aplicación requiere el modo jumbo debido a la molesta restricción de 65k, intente cortar algunos códigos / cadenas no utilizados y vuelva a establecer el modo jumbo en falso.

Friederbluemle
fuente
También acabo de habilitar el modo jumbo y comencé a ver esto cuando probaba en dispositivos antiguos. Desafortunadamente, volver a falso no resolvió el problema para mí. Usando proguard para reducir el APK lo hizo.
slott
Encontramos el mismo problema, el modo Jumbo no funciona con API 10
Henrique de Sousa
3

classes.dexno llega a la final .apk. Ejecutar gradlew --offline clean && gradlew --offline assembleDebugcosas fijas para mí cada vez. Desde ese punto, puede comenzar a iniciar la aplicación desde Android Studio nuevamente.

EDIT: Antes de lo que he dicho anteriormente ir al Administrador de tareas y matar a todos cmd.exey conhost.exeprocesos (o simplemente aquel en el que aaptse atascó). De aaptlo contrario, se bloqueará a partir de ahora cuando se inicie desde la línea de comandos con el infame error -1073741819.

Eugen Pechanec
fuente
Apreciado: D vale la pena mencionar que las herramientas de compilación más nuevas (2.1.1) y el complemento de gradle (1.0.0-rc1) funcionan de maravilla
Eugen Pechanec
Bueno, no sé sobre eso, acabo de instalar Android Studio 1.0 y tuve que hacer esto para que funcione.
axnsan
Intenta matar a todos los java.exe también. ¿Cuánta RAM tienes? Asegúrese absolutamente de tener la última versión de lo siguiente: Android Studio 1.0.0-rc4, gradle android plugin 1.0.0-rc1, herramientas de compilación 21.1.1. No he visto el error desde hace algún tiempo.
Eugen Pechanec
Las herramientas de compilación son 21.1.1, Android Studio es 1.0 y no sé cómo encontrar la versión del complemento Gradle. Acabo de descargar la versión 1.0 que apareció ayer en el sitio de desarrolladores de Android ...
axnsan
Busque en su build.gradlearchivo de proyecto raíz . Entre las dependencias de buildscript debería haber classpath 'com.android.tools.build:gradle:1.0.0-rc4'.
Eugen Pechanec
3

Obtuve el mismo error y lo solucioné aumentando el tamaño del almacenamiento interno.

El almacenamiento interno se configuró inicialmente en 32 MB (lo sé) y luego instalé un par de aplicaciones en él, lo que había dejado menos espacio de lo que se necesitaba para instalarlo.

binRAIN
fuente
3

verificar el espacio de almacenamiento en su dispositivo

Farido mastr
fuente
2
Esto ayuda, he aumentado la memoria RAM y el espacio de mi dispositivo virtual, y luego he resuelto el problema.
Wesely
2

Sin embargo, desinstalé la aplicación y obtuve el error INSTALL_FAILED_DEXOPT. Si está trabajando con Android Studio / gradle: gradle clean fue el truco para mí, Cheers.

JacksOnF1re
fuente
Tuve que usar gradlew, pero bueno, ¡funcionó! gracias (también eliminé el paquete en datos / datos)
Maxim Geerinck
2

en build.gradle cambia compilado y compila a la última versión. Y funcionó para mí.

================

android {
    compileSdkVersion 22
    buildToolsVersion "22"
riscos
fuente
2

muchas respuestas aquí, pero tal vez pueda ayudar a alguien que tuve este problema con un dispositivo real y el problema fue con D8

intenta agregar esto a tu gradle.properties y funciona para mí

android.enableD8=false
android.enableD8.desugaring= false
NataTse
fuente
1

Estaba recibiendo este problema cuando intentaba instalar en dispositivos 2.3 (bien en 4.0.3). Terminó siendo debido a un proyecto de lib que estaba usando tenía varios frascos que eran para cosas que ya estaban en Android, por ejemplo, analizadores HttpClient y XML, etc. logcatMi observación me llevó a encontrar esto, ya que me decía que estaba omitiendo clases debido a que ya estaban siendo presente. Buen error original inútil allí!

Dori
fuente
2
Tengo el mismo problema, ¿puede explicar cómo resolvió ese problema? Tengo libs de más de 7 mb, por lo que no me permite instalar en el dispositivo anterior como 2.3.
Rakki s
En mi caso, estaba usando gradle build para crear apk y el culpable era el tarro del proveedor del castillo hinchable. Tuve que excluir el módulo 'bcprov-jdk' en las dependencias de compilación del proyecto raíz.
Pawan
1

Tuve este error de prueba en un dispositivo real. Borrar el caché / desinstalar, reiniciar todo no funcionó para mí, eliminar el contenido de la carpeta de compilación sí :) (Android studio)

Giroscopio
fuente
1

No hay una solución genérica, debe encontrar el error informado en su Logcat para poder resolverlo. A veces es una clase que no se puede 'eliminar' debido al uso de una clase que no está disponible en la API de destino especificada, por ejemplo. O podría ser una clase a la que hace referencia en su código, pero la biblioteca en la que se encuentra no se está empaquetando.

Alécio Carvalho
fuente
1

Considera usar proguard para reducir tu APK. Tengo el mismo problema si intento instalar un gran APK de 25MB + en un viejo dispositivo Samsung Galaxy Ace 2.3.6 sin reducir / optimizar el código con Proguard.

El modo Jumbo y el reinicio del dispositivo no funcionan.

slott
fuente
1

targetSdkVersion 22 // 17 ==========================> establecer este número menor o igual a la versión del sistema operativo Android en los dispositivos podría ayudar

 defaultConfig {
        applicationId "software.nhut.personalutilitiesforlife"
        minSdkVersion 16
        targetSdkVersion 22//17==========================> set this number less then or equal to the version of Android OS on devices might help
        versionCode 5
        versionName "1.26"
        // Enabling multidex support.
        multiDexEnabled true
    }
Caballero del trueno
fuente
0

Tuve este problema cuando había algunos caracteres Unicode en los nombres de mis métodos (debido a, de todas las cosas, copiar / pegar desde un archivo de PowerPoint) que a Dalvik no le gustaba. Puede ver esto mirando la salida de Logcat mientras intenta instalar el APK.

Esto fue en un dispositivo real.

Thoutbeckers
fuente
0

Se resolvió corrigiendo la fecha y hora en el teléfono (era una fecha predeterminada el 01.01.1980) y limpiando el proyecto.

Sin nombre
fuente
0

Había cambiado mi versión de soporte de Android versión 4 para SDK 21 y tuve este error. Así que volví a la versión de soporte para la versión anterior (antes del 21) y funcionó. El error ocurría solo en Android 2.3

Cícero Moura
fuente
0

Me encontré con este problema cuando intentaba actualizar las nuevas herramientas de compilación 24.0.1. Se perdió la conexión a Internet y las herramientas no se descargaron con éxito, después de eso recibí este error y pasé mucho tiempo tratando de resolverlo. Pero cuando actualicé con éxito las herramientas de compilación, el problema se resolvió. Buena suerte.

Alex Perevozchykov
fuente