Como soluciono o erro INSTALL_FAILED_DEXOPT?

181

Estou desenvolvendo um aplicativo Android usando o Android 2.2, o tamanho do APK do meu aplicativo é 22.5 MB e gostaria de criar uma nova compilação para um tablet Samsung. Eu recebi o seguinte erro:

INSTALL_FAILED_DEXOPT

Como faço para resolver esse tipo de erro?

John
fonte
você conseguiu instalar com êxito este aplicativo em outros dispositivos que não o tablet Samsung?
Will Tate
1
Você precisa colar a saída do logcat gerada quando a instalação falhar.
Fadden
Eu tive o mesmo problema em um dispositivo em que estava testando (HTC Droid Eris). Eu tinha uma versão instalada anteriormente do meu aplicativo no telefone, eu apenas desinstalei e reinstalei e estava tudo bem.
Ninjasense
Desinstalar e reinstalar o aplicativo sempre funciona. Limpar dados do usuário ou recriar o AVD estão todos fazendo o mesmo de uma maneira mais demorada. A pergunta é: existe uma opção melhor e mais rápida?
bschandramohan
7
@ChandraMohan isso NÃO é verdade. Pare de tentar torná-lo realidade. Formatei meu dispositivo e tentei reinstalar o aplicativo. Ainda gera esse erro!
Artiom Chilaru

Respostas:

99

Reiniciando o emulador Android SDK and AVD Managere selecionando a opçãoWipe User Data resolveu esse problema para mim.

Você pode encontrar a opção destacada na imagem abaixo:

Limpe a opção Dados do usuário ao iniciar o emulador do Android

Vikas Patidar
fonte
17
E se for o meu telefone e não um emulador?
precisa saber é o seguinte
1
@mtmurdock tente adb kill-serverentão adb start-serverdeve resolver o seu problema. Pode existir um aplicativo mais antigo, depois desinstale-o primeiro.
Vikas Patidar
@mtmurdock Você provavelmente tentou, mas reiniciar o telefone funcionou para mim :)
Dunc
matar servidor e depois iniciar não funcionou para mim, reiniciar o emulador e Wiping Data funciona para mim, na verdade.
Shuvo 31/10/19
74

Isso parecia estar relacionado ao espaço em disco para mim. Um emulador 5.1 recém-lançado é inicializado com um erro "pouco espaço em disco" - e, observando as propriedades do emulador, o espaço padrão alocado para armazenamento interno é de 800 MB, o que parece baixo.

Solução, portanto, foi aumentar isso (fui para 4GB). Estranhamente, o emulador ainda é inicializado com o mesmo aviso de espaço em disco, mas a redefinição de fábrica (Configurações -> Backup e Restauração dentro do emulador) resolveu-o totalmente para mim.

Um pouco estranho que não funcione imediatamente com as configurações padrão.

HughHughTeotl
fonte
2
Na verdade, isso que o problema que eu tinha e redefinir através das configurações do telefone corrigiu para mim. obrigado!
Justin Stanley
1
Tentou quase tudo, mas nada funcionou exceto este, graças
shehzy
1
Após 2 horas, encontrei este comentário - obrigado por salvar o meu dia, funcionou!
kilian eller
1
Isso causou o INSTALL_FAILED_DEXOPT no meu emulador também. Eu tinha aumentado o tamanho, mas precisava ir para as configurações e executar uma restauração de fábrica. Isso corrigiu o problema.
Dave Thomas
Cristo ... novamente isso aconteceu comigo depois de atualizar o meu Mac OS. Dobrar o meu reembolso dessa solução, vá para> configurações e execute a restauração de fábrica. Tive que procurar essa pergunta apenas para lembrar como eu a corrigi ... graças a Deus pela história no estouro de pilha, e pude encontrar meu comentário
Dave Thomas
17

Sua versão antiga do aplicativo que você está instalando possui bibliotecas / jarros dependentes que foram alterados. Corri para esse problema ao atualizar outros arquivos jar que meu aplicativo estava atualizando.

Você precisará desinstalar a versão antiga e não terá mais problemas ...

Configurações -> Aplicativos -> Gerenciar aplicativos -> [Localizar e desinstalar seu aplicativo]

Os erros INSTALL_FAILED_DEXOPT não devem entrar em erupção. Gostar

[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
fonte
Eu posso concordar com a causa e efeito. A mesma situação aconteceu no meu caso depois de mexer em frascos. Para mim, isso foi apenas nos dispositivos baseados no Android 2.3 Gingerbread, ICS e Lollipop estavam bem.
AlexVPerl 25/05
Isso será um problema ao fazer o upload para a Play Store? ou o instalador exclui o aplicativo e reinstala?
Eduardo Naveda
14

Se você estiver usando o Android Studio , tente limpar seu projeto:

Compilar> Limpar Projeto

SandroMarques
fonte
12

Parece que esta mensagem de erro pode ter muitas causas diferentes. O caso que encontrei foi em um dispositivo real (para que as soluções de bases do emulador não se aplicassem).

Basicamente, quando isso acontece, defina seu filtro Logcat como Verbose ou Warn , o que ajudará você a obter mais informações sobre a causa.

No meu caso, várias versões conflitantes do JUnit estavam sendo incluídas no projeto em que eu estava trabalhando (uma grande base de código existente). O aplicativo Android que eu estava tentando implantar tinha vários projetos de bibliotecas como dependências e, por engano, configurei as coisas para incluir vários arquivos jar do JUnit.

Eu descobri isso com base em uma série de mensagens do Logcat. Observe que a linha WARN fornece a 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)
Wesville
fonte
3
Essa é uma boa sugestão. Concordo que você deve visualizar a saída do LogCat para ver qual é a mensagem de erro real. Eu estava recebendo esse erro e era porque meu dispositivo estava com pouco armazenamento e não conseguia descompactar o APK. Acredito que há vários motivos pelos quais esse erro pode ser acionado e a desinstalação ou limpeza de dados do usuário pode ser desnecessária. Postei essa mesma sugestão como resposta a uma pergunta semelhante (duplicada).
precisa
2
DESCULPE, ESTE É O MESMO PONTO QUE Bryan Bedard estava fazendo. Eu estava sem espaço - geralmente, recebo um erro como "espaço insuficiente", mas por algum motivo, recebi esse erro DEXOPT. O Logcat mostrou um erro Inflar zip: falha na gravação: não há espaço no dispositivo.
mobibob
12

Encontrei isso com o Android Studio 3.4.1, mas usando um emulador mais antigo (5.0). Este procedimento (no Mac) corrigiu o problema:

  1. pare o emulador
  2. cd ~ / .android / avd / [nome do emulador] .avd
  3. rm * .lock
  4. limpe o emulador
  5. iniciar emulador
Ken
fonte
3
Fazer o que foi mencionado acima depois de aumentar o armazenamento interno do emulador para 4 GB é a única coisa que funcionou para mim.
precisa saber é
@ dell116 Não estou surpreso que, às vezes, mais de uma coisa tenha que ser feita, apenas com base em todas as respostas diferentes para essa pergunta!
Ken
3
Acordado! E parabéns por roubar o nome de usuário "Ken".
dell116
Infelizmente, nenhuma das combinações de limpeza / aumento de armazenamento / limpeza novamente me ajudou. Eu desisto.
Pode Poyrazoğlu 11/07/19
1
@ CanPoyrazoğlu - eu quase desisti também. Eu acho que os emuladores devem ser extremamente sensíveis e muitas coisas podem causar falhas (como evidenciado por todas as diferentes respostas aqui para uma pergunta feita mais de oito anos atrás). A remoção dos arquivos .lock foi fundamental no meu caso, mas certamente posso ver onde isso pode não resolver todos os problemas.
Ken
11

Alterei o tamanho da RAM e a capacidade de armazenamento interno do emulador Now IT IS Working ... no eclipse AVD manager

KATJ Srinath
fonte
2
Isso também resolve o problema no Android Studio. Eu tinha apenas 200Mb de armazenamento interno. Aumentar até 1GB e problema resolvido. A mesma mensagem de erro ... Obrigado !!
Joan Casadellà
Funciona para mim também. Aumente de 200 MB!
JohnyTex
10

tente minha resposta https://stackoverflow.com/a/34918549/3737254

se você usa o android studio 2.0, desative a execução instantânea.

Para sua informação, a execução instantânea é um novo recurso do android studio 2.0 (nunca usei>. <)

como desabilitar: preferências -> compilação, execução e implantação -> execução instantânea -> desabilitar e depois funciona como mágica

Aproveitar!

yfsx
fonte
Esse foi meu problema ao testar APIs antigas em um emulador. Depois de alterar isso e uma limpeza limpa do emulador, funcionou!
Ben
8

Eu precisava desativar o Instant Run para corrigir o problema. Para desativar a Execução Instantânea no OS X, vá para Android Studio > Preferências > Compilação, Execução, Implantação > Execução Instantânea e remova o visto de Enable Instant Run to hot swap code/resource changes on deploy (default enabled).

iamkaan
fonte
Isso funcionou para o meu dexopt error. Application failed to install. Eu tentei estes antes de encontrar o seguinte adb kill-server adb start-server:, reiniciando o Android Studio e Factory redefinindo meu dispositivo.
Sherlock
7

A única solução que funcionou para eu corrigir isso foi aumentar a RAM da VM para 4 GB.

Jim
fonte
6

Hoje tive o mesmo problema com o Android Studio em um novo dispositivo virtual. Parecia que eu tinha baixado a x86_64imagem, recriando o VD com a x86imagem equivalente corrigida.

Eu esperava obter um INSTALL_FAILED_NO_MATCHING_ABISneste caso, mas de alguma forma eu estava preso comINSTALL_FAILED_DEXOPT

dvkch
fonte
1
Para mim foi o oposto. Tentativa de instalação em x86falha. Depois de baixar a imagem e alterar o emulador para x86_64o erro se foi. Eu usei a imagem do sistema API 21.
Friederbluemle
O oposto funcionou para mim também. Tentei de tudo neste tópico antes de tentar usar a x86_64imagem em vez da imagem x86. Eu também estava usando um API 21 AVD (Nexus 5).
Renan Ferrari
5

Estou trabalhando com o Android Studio e tive o mesmo erro.

A exclusão da pasta de compilação do Modul principal ajudou. Depois de excluir tudo, volte ao normal.

Informatic0re
fonte
4

INSTALL_FAIL_DEXOPT geralmente tem a ver com o limite colocado em classes.dex. Em qualquer coisa, o dexopt pré-ICS falhará em algo acima de 5 MB. Versões recentes do Android usam um buffer de 8 ou 16 MB.

Verifique o tamanho do classes.dex no seu APK. Também seria bom ver qual é a contagem do seu método, já que o dex tem um limite de 65536 método / campo.


Referências:

Erro ao instalar o aplicativo (INSTALL_FAILED_DEXOPT)

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

Como reduzir o código - limite do método 65k em dex

Jared Rummler
fonte
3

Corri para este problema depois de ativar o sinalizador jumboMode na build ( dex.force.jumbo=true). Tudo funcionou bem em dispositivos Android mais recentes, mas a instalação falhou no Gingerbread.

Portanto, se o seu aplicativo exigir o modo jumbo devido à irritante restrição de 65k, tente cortar alguns códigos / seqüências de caracteres não utilizados e defina o modo jumbo novamente como falso.

friederbluemle
fonte
Também habilitei o modo jumbo e comecei a ver isso ao testar em dispositivos antigos. Infelizmente, reverter para falso não resolveu o problema para mim. Usando proguard para encolher o APK fez.
Slott 1/1
Encontramos o mesmo problema, Jumbo Modo não está trabalhando com a API 10
Henrique de Sousa
3

classes.dexnão chega à final .apk. Executando gradlew --offline clean && gradlew --offline assembleDebugcoisas fixas para mim o tempo todo. A partir desse ponto, você pode começar a iniciar o aplicativo no Android Studio novamente.

EDIT: Antes que eu disse acima ir para o Gerenciador de Tarefas e matar todos cmd.exee conhost.exeprocessos (ou apenas aquele em que aaptficou preso). Caso contrário, aaptiria travar a partir de agora quando iniciado a partir da linha de comando com o erro infame -1073741819.

Eugen Pechanec
fonte
Apreciada: D vale a pena mencionar que as ferramentas mais recentes de construção (2.1.1) e plug-in Gradle (1.0.0-RC1) funcionar como um encanto
Eugen Pechanec
Bem, eu não sei sobre isso, eu apenas instalei o android studio 1.0 e tive que fazer isso para fazê-lo funcionar.
axnsan
Tente matar todos os java.exe também. Quanta RAM você tem? Certifique-se de ter a versão mais recente do seguinte: Android Studio 1.0.0-rc4, gradle android plugin 1.0.0-rc1, build tools 21.1.1. Não vejo o erro há algum tempo.
Eugen Pechanec
As ferramentas de compilação são 21.1.1, o android studio é 1.0 e não sei como encontrar a versão do plugin gradle. Acabei de baixar o release 1.0 que apareceu ontem no site de desenvolvedores do Android ...
axnsan
Procure no seu build.gradlearquivo de projeto raiz . Entre as dependências do buildscript, deve haver classpath 'com.android.tools.build:gradle:1.0.0-rc4'.
Eugen Pechanec
3

Eu obtive o mesmo erro e o corrigi aumentando o tamanho do armazenamento interno.

O armazenamento interno foi inicialmente definido para 32 MB (eu sei) e, em seguida, instalei alguns aplicativos, o que deixou menos espaço do que o necessário para a instalação.

binRAIN
fonte
3

verifique o espaço de armazenamento no seu dispositivo

Farido mastr
fonte
2
Isso ajuda, aumentei a memória RAM e o espaço do meu dispositivo virtual e resolvi o problema.
Wesely 29/03/19
2

Desinstalei o aplicativo e recebi o erro INSTALL_FAILED_DEXOPT. Se você estiver trabalhando com o Android Studio / gradle: gradle clean fez o truque para mim, Cheers.

JacksOnF1re
fonte
Eu tive que usar gradlew, mas ei, funcionou! graças (também removido do pacote de dados em / de dados)
Maxim Geerinck
2

na mudança build.gradle compilada e compilada na versão mais recente. e funcionou para mim.

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

android {
    compileSdkVersion 22
    buildToolsVersion "22"
riseres
fonte
2

muitas respostas aqui, mas talvez isso possa ajudar alguém que tive esse problema com o dispositivo real e o problema estava com o D8

tente adicionar isso ao seu gradle.properties e funciona para mim

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

Eu estava recebendo esse problema ao tentar instalar em dispositivos 2.3 (bom em 4.0.3). Acabou sendo devido a um projeto lib eu estava usando vários frascos tiveram que eram para o material já no android por exemplo HttpClient e analisadores XML etc. Olhando para logcatme levou para encontrar este como ele foi me dizendo que foi matar aulas devido a eles já estar presente. Bom erro original inútil lá!

Dori
fonte
2
Eu tenho o mesmo problema. Você pode explicar como resolveu esse problema. Tenho libs com tamanho superior a 7 mb, portanto, não me permite instalar no dispositivo anterior, como 2.3.
Rakki s
No meu caso, eu estava usando o gradle build para criar apk e o culpado era o jar do fornecedor do castelo insuflável. Eu tive que excluir o módulo 'bcprov-jdk' nas dependências de compilação do projeto raiz.
Pawan
1

Eu tive esse teste de erro em um dispositivo real. Limpar o cache / desinstalar, reiniciar tudo não funcionou para mim, excluir o conteúdo da pasta de compilação :) (Android studio)

Giroscópio
fonte
1

Não existe uma solução genérica, você precisa encontrar o erro relatado no seu Logcat para descobrir isso. Às vezes, é uma classe que não pode ser 'dexada' devido ao uso de uma classe não disponível na API de destino especificada, por exemplo. Ou pode ser uma classe que você está fazendo referência no seu código, mas a biblioteca em que está não está sendo empacotada.

Alécio Carvalho
fonte
1

Considere usar o programa para reduzir seu APK. Eu tenho o mesmo problema se tentar instalar um APK grande de 25 MB em um antigo dispositivo Samsung Galaxy Ace 2.3.6 sem reduzir / otimizar o código com o programa.

O modo Jumbo e a reinicialização do dispositivo não estão funcionando.

slott
fonte
1

targetSdkVersion 22 // 17 ==========================> defina esse número menor ou igual à versão do sistema operacional Android em dispositivos pode ajudar

 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
    }
Cavaleiro do trovão
fonte
0

Eu tive esse problema quando havia alguns caracteres Unicode nos nomes dos meus métodos (devido a, de todas as coisas, copiar / colar de um arquivo do powerpoint) que a Dalvik não gostou. Você pode ver isso observando a saída do Logcat enquanto tenta instalar o APK.

Isso estava em um dispositivo real.

thoutbeckers
fonte
0

Resolvido corrigindo a data e hora no telefone (era uma data padrão 01.01.1980) e limpando o projeto.

Sem nome
fonte
0

Eu havia mudado minha versão do suporte da versão 4 do Android para o SDK 21 e tive esse erro. Então, voltei a versão de suporte para a versão antiga (antes de 21) e funcionou. O erro estava ocorrendo apenas no android 2.3

Cícero Moura
fonte
0

Eu encontrei esse problema quando estava tentando atualizar as novas ferramentas de compilação 24.0.1. A conexão com a Internet foi perdida e as ferramentas não foram baixadas com sucesso. Depois disso, recebi esse erro e passei muito tempo tentando resolvê-lo. Mas quando atualizei com êxito as ferramentas de compilação - problema resolvido. Boa sorte.

Alex Perevozchykov
fonte