android - “Conversão para o formato Dalvik falhou com erro 1” no JAR externo




android-sdk-1.6 (20)

Na minha aplicação Android no Eclipse, recebo o seguinte erro.

EXCEPÇÃO DE ALTO NÍVEL INESPERADA:
java.lang.IllegalArgumentException: já adicionado: Lorg / xmlpull / v1 / XmlPullParser;
....
Conversão para o formato Dalvik falhou com o erro 1

Este erro só aparece quando eu adiciono um arquivo JAR externo específico ao meu projeto. Eu procurei por um longo tempo para a solução possível, mas nenhuma das soluções possíveis funciona. Eu até tentei mudar para o Android 1.6 em vez de 1.5 (a versão atual que eu uso).


Apenas para as outras pessoas que ainda têm esse problema e tentaram as respostas acima, mas ainda recebendo o erro (que era o meu caso), então minha solução foi excluir o projeto do Eclipse e reimportá-lo novamente.

Isso fez com que a biblioteca do Android fosse adicionada novamente às minhas bibliotecas de referência, por isso agora tenho dois arquivos JAR do Android referenciados, por isso apaguei um deles e agora ele compila bem.

Solução: Exclua o projeto do Eclipse IDE e, em seguida, importe-o novamente e, em seguida, verifique as soluções acima.


Aqui está outro cenário e solução:

Se você se deparou com este problema recentemente após atualizar o ADT para Eclipse:

  1. Em seu projeto de aplicativo, verifique se há alguma pasta de origem vinculada apontando para seus projetos de biblioteca (eles têm nomes no formato "LibraryName_src").
  2. Selecione todos esses projetos, clique com o botão direito do mouse, escolha " Construir Caminho " -> " Remover do Caminho de Construção ".
  3. Escolha " Também desvincular a pasta do projeto " e clique em " Sim ".
  4. Limpe, reconstrua e reimplemente o projeto.

Parece que a razão é que alguma versão anterior do ADT vinculou as pastas de origem do projeto Biblioteca aos projetos "filho", e a combinação atual do ADT / Dex não é mais compatível com essa solução.

EDIT: isso é confirmado por uma entrada do Android Dev Blog, especificamente este - veja o 8 º parágrafo em diante.


Corri para este problema hoje mesmo. Limpeza e reconstrução não corrigiram o problema. Excluir e reimportar o projeto também não ajudou.

Eu finalmente localizei de volta a uma má adição ao meu arquivo .class. Eu acho que isso foi adicionado pelas ferramentas de plugin quando eu estava tentando corrigir outro problema, removendo-o se livrou do erro de compilação "Conversão para o formato Dalvik falhou com erro 1":

<classpathentry kind="lib" path="C:/dev/repository/android-sdk-windows/platforms/android-3/android.jar">
    <attributes>
        <attribute name="javadoc_location" value="file:/C:/dev/repository/android-sdk-windows/docs/reference"/>
    </attributes>
    <accessrules>
        <accessrule kind="nonaccessible" pattern="com/android/internal/**"/>
    </accessrules>


Em geral, parece que esse problema ocorre quando há arquivos JAR desnecessários no caminho de construção.

Eu enfrentei este problema enquanto trabalhava no IntelliJ IDEA . Para mim, aconteceu porque adicionei bibliotecas JUnit e Mockito que estavam sendo compiladas em tempo de execução. Isso precisava ser definido como "testing" nas propriedades do módulo.


Eu corri para este problema, mas a minha solução foi dupla. 1.) Eu tive que adicionar uma versão alvo do Android em project -> properties -> Android . 2.) Eu não tenho todos os add-ons de terceiros do Google. Clique no gerenciador do SDK do AVD em pacotes disponíveis -> complementos de terceiros -> Google Inc. Eu baixei todos os SDKs e isso resolveu meu problema.


Eu encontrei outra coisa. O Android usa o diretório /libs para arquivos JAR. Eu vi o erro "Conversão para o formato Dalvik falhou com erro 1" inúmeras vezes, sempre que cometi um erro em meus arquivos JAR.

Agora atualizei o Roboguice para uma versão mais nova, colocando o novo arquivo JAR no diretório /libs e trocando o caminho da classe para a nova versão. Isso causou o erro de Dalvik.

Quando removi um dos arquivos JAR do Roboguice da pasta /libs , o erro desapareceu. Aparentemente, o Android coleta todos os arquivos JAR de /libs , independentemente de quais você especificar no caminho de construção Java. Não me lembro exatamente, mas acho que o Android começou a usar /libs por padrão, começando com o Android 4.0 (Ice Cream Sandwich, ICS).


Eu lidei com esse problema ao usar a biblioteca ActionBar do Sherlock no meu projeto. Você poderia fazer o seguinte passo, é um trabalho para mim.

  1. Clique com o botão direito do mouse no seu projeto e selecione propriedades.
  2. Uma caixa de diálogo aparecerá, selecione 'Java build path' no menu à esquerda.
  3. Remova 'Android dependencies' e 'Android private libraries' no painel direito e clique em OK
  4. Limpe seu projeto (selecione o menu Projeto -> Limpar)
  5. Clique com o botão direito do mouse no seu projeto, selecione Ferramentas Android -> Corrigir propriedades do projeto
  6. Projeto limpo mais uma vez.
  7. Reinicie seu computador
  8. Eclipse aberto e exportação apk

Espero que isso ajude você.


Eu resolvi o problema.

Este é um conflito de arquivo JAR.

Parece que eu tenho dois arquivos JAR no meu buildpath que incluem o mesmo pacote e classes.

smack.jar e android_maps_lib-1.0.2

A exclusão deste pacote de um dos arquivos JAR resolveu o problema.


Isso também pode ser causado se você tiver incluído o arquivo Android.jar em seu caminho de construção, talvez por uma correção rápida acidental no Eclipse. Remova-o com o botão direito do mouse em Project -> caminho de construção -> configure o caminho de construção -> android.jar , remova.


Meu problema foi causado por ADT versão 12.0 e integração ProGuard. Este bug está bem documentado e a solução está na documentação

A solução está aqui

here


Muitas vezes, para mim, a limpeza do projeto NÃO resolve esse problema.

Mas fechar o projeto no Eclipse e, em seguida, reabri-lo parece corrigi-lo nesses casos ...


Nenhuma das soluções listadas funcionou para mim.

Aqui está onde eu estava tendo um problema:

Eu adicionei o arquivo JAR externo jSoup ao caminho do meu projeto colocando-o primeiro em uma pasta de origem chamada "libs" e, em seguida, clicando com o botão direito nele, Caminho de Construção -> adicionar ao caminho de construção. Isso jogou o erro de conversão Dalvik. Ele disse que eu "já incluí" uma classe desse arquivo JAR. Eu olhei ao redor do diretório do projeto e descobri que o lugar onde ele estava "já incluído" era de fato o diretório bin . Eu apaguei o arquivo JAR do diretório bin e atualizei o projeto no Eclipse e o erro foi embora!


No meu caso

project-> propriedades-> caminho de compilação de java -> na ordem e guia de exportação -> desmarque android-support-v4.jar


No meu caso, o problema é, na verdade, com o projeto OpenFeint API. Eu adicionei o OpenFeint como projeto de biblioteca:

.

Também é adicionado ao caminho de construção, as ferramentas ADT 16 dão erro com este sceneario.

Clique com o botão direito em seu projeto e clique em construir caminho, configure o caminho de construção e, em seguida, veja a imagem e remova seu projeto OpenFeint daqui e tudo é feito :)


Se você tiver a revisão 12 ou mais do ADT, você deve atualizar seu proguard de 4.4 -> 4.6 (como descrito here ). Além disso, você deve deixar o arquivo ... \ bin \ proguard.bat no formato original.

Basta baixá-lo da web e copiar a pasta lib do pacote baixado para o:

[Diretório de instalação do Android SDK] \ tools \ proguard \ lib


Simplesmente limpar o projeto funcionou para mim toda vez que esse erro apareceu.


Vá para Project »Propriedades» Caminho Java Build »Bibliotecas e remova todos, exceto o" Android XY "(no meu caso Android 1.5). Clique OK. Vá para Projeto »Limpar» Limpar projetos selecionados abaixo »selecione seu projeto e clique em OK. Isso deve funcionar.

Também é possível que você tenha um arquivo JAR localizado em algum lugar em suas pastas de projeto (eu copiei o arquivo JAR do Admob em minha pasta src) e ENTÃO o adicionei como uma biblioteca de caminhos Java. Ele não aparece sob o Package Explorer, então você não percebe, mas é contado duas vezes, causando o temido erro Dalvik 1.

Outro motivo possível poderia ser conflitos de nome de pacote. Suponha que você tenha um pacote com.abc.xyz e uma classe chamada A.java dentro deste pacote, e outro projeto de biblioteca (que é adicionado à dependência deste projeto) que contém o mesmo com.abc.xyz.A.java , então você estará recebendo exatamente o mesmo erro. Isto significa que você tem várias referências ao mesmo arquivo A.java e não pode construí-lo corretamente.

De outras formas, isso pode ocorrer se você acidentalmente ou conscientemente editar / adicionar qualquer coisa no arquivo de caminho de classe manualmente. Em certos casos, podemos adicionar caminho android.jar manualmente ao arquivo de caminho de classe para gerar java doc.Com remover o que depois javadoc gerado código irá funcionar bem.Por favor, verifique isso também se qualquer um ainda ocorrer.


Vá para Project e, em seguida, desmarque "Build Automaticamente". Em seguida, tente exportar o projeto e o erro desapareceu.


Apenas limpe o projeto

Se isso não funcionar tente as outras soluções


EDIT (nova solução):

Parece que a solução anterior é apenas um bypass. Eu consegui finalmente corrigir o problema permanentemente: No meu caso, houve uma incompatibilidade nos arquivos android-support-v4 no meu projeto e no projeto do Facebook que é referenciado no meu projeto.

Eu encontrei este erro executando Lint Check (Ferramentas Android / Run Lint: Verifique Erros Comuns)

Minha solução anterior:

Eu tentei qualquer solução possível neste site - nada ajudou !!!

Finalmente, encontrei uma resposta aqui: https://groups.google.com/forum/#!topic/actionbarsherlock/drzI7pEvKd4

Etapas fáceis:

Vá para Projeto -> desmarque Construir Automaticamente

Vá para Projeto -> Limpar ..., limpe o projeto da biblioteca e seu projeto de aplicativo

Exporte seu aplicativo como um APK assinado enquanto o Build Automatic ainda está desativado





android-sdk-1.6