Ao compilar um projeto Android específico, e apenas na minha máquina Windows, recebo um java.nio.BufferOverflowException
dex. O problema ocorre ao usar o Eclipse e ao usar o Ant.
A saída ao usar Ant é:
...
[dex] Pre-Dexing C:\MyProject\libs\android-support-v4.jar -> android-support-v4-5f5341d3c1b10a79d7d93f9c1e64421e.jar
[dex] Converting compiled files and external libraries into C:\MyProject\bin\classes.dex...
[dx]
[dx] UNEXPECTED TOP-LEVEL EXCEPTION:
[dx] java.nio.BufferOverflowException
[dx] at java.nio.Buffer.nextPutIndex(Buffer.java:499)
[dx] at java.nio.HeapByteBuffer.putShort(HeapByteBuffer.java:296)
[dx] at com.android.dex.Dex$Section.writeShort(Dex.java:818)
[dx] at com.android.dex.Dex$Section.writeTypeList(Dex.java:870)
[dx] at com.android.dx.merge.DexMerger$3.write(DexMerger.java:437)
[dx] at com.android.dx.merge.DexMerger$3.write(DexMerger.java:423)
[dx] at com.android.dx.merge.DexMerger$IdMerger.mergeUnsorted(DexMerger.java:317)
[dx] at com.android.dx.merge.DexMerger.mergeTypeLists(DexMerger.java:423)
[dx] at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:163)
[dx] at com.android.dx.merge.DexMerger.merge(DexMerger.java:187)
[dx] at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439)
[dx] at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287)
[dx] at com.android.dx.command.dexer.Main.run(Main.java:230)
[dx] at com.android.dx.command.dexer.Main.main(Main.java:199)
[dx] at com.android.dx.command.Main.main(Main.java:103)
BUILD FAILED
C:\Users\Jaap\android-sdks\tools\ant\build.xml:892: The following error occurred while executing this line:
C:\Users\Jaap\android-sdks\tools\ant\build.xml:894: The following error occurred while executing this line:
C:\Users\Jaap\android-sdks\tools\ant\build.xml:906: The following error occurred while executing this line:
C:\Users\Jaap\android-sdks\tools\ant\build.xml:284: null returned: 2
Ao usar o Eclipse, a mensagem é mais curta, mas semelhante:
[2013-11-01 14:29:44] APK file is not created for Project:
[2013-11-01 14:29:46 - Dex Loader] Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.
[2013-11-01 14:29:46 - MyProject] Conversion to Dalvik format failed: Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.
Como eu disse, não tenho esse problema no meu MacBook, mesmo que ambos tenham sido atualizados para as versões mais recentes das ferramentas do Android Build: 19.0.0.
Respostas:
Não é necessário fazer o downgrade das ferramentas de construção para 18.1.1 1 , esse problema foi corrigido com as ferramentas de construção 19.0.1 .
Se você não pode usar o 19.0.1 por algum motivo, então:
Certifique-se de que o valor
android:targetSdkVersion
em AndroidManifest.xml correspondetarget=android-<value>
em project.properties . Se esses dois valores não forem os mesmos, a criação com a versão 19.0.0 das ferramentas de construção terminará em BufferOverflowException. FonteHá também alguma indicação nos comentários desta postagem de que você precisa segmentar pelo menos 19 (android-19). Deixe um comentário se essa solução também funcionar se seu destino for <19.
É assim que a correção fica para o meu projeto. O problema AOSP relacionado é # 61710.
1 Se você realmente precisa fazer o downgrade, não precisa desinstalar as ferramentas de compilação 19.0.0, basta instalar o 18.1.1 e adicioná
sdk.buildtools=18.1.1
-lo aolocal.properties
arquivo.fonte
Experimente o que a van disse:
Clique com o botão direito do mouse em
project
→android tools
→android support library
.Espero que isto ajude :)
fonte
Mesmo problema aqui. Revertida para a construção das ferramentas 18.1.1, reiniciado o Eclipse e corrigido.
fonte
Consegui compilar meu projeto problemático adicionando esta linha extra:
... no meu arquivo project.properties , presente na raiz da pasta do projeto. Todas as outras abordagens pareciam falhar para mim.
fonte
sdk.buildtools
, nãosdk.build.tools
, e esse foi o nome que funcionou para mim.Clique com o botão direito do mouse em projeto >> Propriedades >> Android >> API Nível 18 funcionou para mim. Mas antes de fazer isso, clique com o botão direito do mouse em projeto >> Ferramentas Android >> Adicionar biblioteca de suporte e reiniciei o Eclipse . Talvez você precise brincar com o nível de API selecionado .
fonte
Após a instalação do novo SDK, há uma nova pasta, "Android Dependencies", no arquivo do seu projeto. Se você clicar com o botão direito do mouse e removê-lo do caminho de compilação, poderá criar seu projeto novamente.
fonte
Atualizar
right click your project > android tools > android support library
Limpe seu projeto e tente criar.
fonte
Eu tive o mesmo problema depois de atualizar para a revisão 19. Só não se esqueça de atualizar o ADT, https://dl-ssl.google.com/android/eclipse/ . Depois disso, consegui criar o projeto com a revisão mais recente.
fonte
Corrigi esse problema sem baixar a biblioteca de suporte ou reverter as ferramentas de construção para 18.1.1. Simplesmente alterei o nível da API para 16+ e o problema desapareceu . Espero que ajude.
fonte
Nenhuma das outras soluções aqui funcionou para mim após a atualização para o Android Studio 0.4.0 e Gradle 1.9.
Resolvi o problema baixando o Build Tools 19.0.1 e atualizando a seguinte linha nos meus arquivos build.gradle:
para
fonte
Para aqueles que enfrentam problemas com o IntelliJ IDEA 13, desinstale o Build Tools 19.
fonte
Teve o mesmo problema com a versão de destino
19
em ambosproject.properties
eAndroidManifest.xml
com o Ant.Corrigido por:
Android SDK Build-Tools 19.0.1
Android SDK Build-Tools 19.0.2
Eu acho que @ Al-Kathiri-Khalid está no local. O problema ocorre apenas devido à falta de suporte para o nível da API nas Ferramentas de Construção.
fonte
Eu tive o mesmo problema, apesar de meu projeto não usar a biblioteca de suporte. A adição de libs / android-support-v4.jar ao projeto resolveu o problema sem precisar reverter as ferramentas de construção da v19.
fonte
Eu resolvi esse problema. Basta fazer essa alteração no arquivo de propriedades do projeto:
E no arquivo de manifesto:
fonte
Adicione o arquivo Library no projeto. Projeto-> clique com o botão direito-> Propriedades-> android-> Biblioteca-> clique em Incluir e selecione o Projeto Biblioteca e dê aplicar e ok. Em seguida, limpe o projeto e execute novamente .. se você quer reiniciar o eclipse ..
E também, às vezes, é necessário atualizar as ferramentas de compilação do SDK do Android.
fonte
O que funcionou para mim foi o seguinte: abri o arquivo project.properties a partir da raiz do meu projeto e mudei
target=android-8
paratarget=android-17
fonte
java.nio.BufferOverflowException durante o erro fromx Isso significa que você não tem a API de suporte para esse nível portanto, a compilação falha, há várias maneiras de corrigir isso.
Verifique se o arquivo de manifesto usa-sdk android: minSdkVersion = "4" e android: targetSdkVersion = "14"
Qualquer uma das opções abaixo corrigirá o problema: -
fonte
Eu removi o Android SDK e o Eclipse anteriores . Instalei o pacote ADT e ele funciona ...
Isso corrigiu o problema do BufferOverflow no Dex iniciado após a API 19. Eu estava usando o Eclipse com o Android SDK instalado como um pacote complementar.
fonte
Clique com o botão direito do mouse em Projeto >> Propriedades >> Android e selecione Nível da API maior que 15
OU
Adicione google-play-services_lib ao seu projeto clicando com o botão direito do mouse no projeto e selecionando Projeto >> Propriedades >> Android >> Adicionar
fonte