Se eu executar a gradle assembleDebug
partir da linha de comando, de repente estou recebendo este erro:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dx.util.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:592)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:550)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:531)
at com.android.dx.merge.DexMerger.mergeDexBuffers(DexMerger.java:168)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:186)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:300)
at com.android.dx.command.dexer.Main.run(Main.java:232)
at com.android.dx.command.dexer.Main.main(Main.java:174)
at com.android.dx.command.Main.main(Main.java:91)
Se eu grep para v4, vejo dois arquivos dentro da minha pasta de compilação.
Binary file build/pre-dexed/debug/support-v4-19.0.0-2ba5fdd60a6c3836b3104a863fe42897da1fa9d1.jar matches
Binary file build/pre-dexed/debug/support-v4-r7-227d905d79b23b20866531d4f700446c040a2ccb.jar matches
Meu arquivo gradle inclui apenas esta biblioteca de suporte:
compile 'com.android.support:support-v13:19.0.0'
Estou perplexo sobre como a biblioteca r7 está incluída de alguma forma. Eu corri gradle clean
e sempre aparece lá quando executo o assembleDebug.
Se eu grep for r7 dentro do diretório build, eu o vejo dentro do arquivo:
Binary file build/exploded-bundles/ComGoogleAndroidGmsPlayServices4030.aar/classes.jar matches
Se eu não incluir a v13, outras coisas não serão compiladas.
Mas a v13 não inclui a biblioteca de suporte da v4?
Isso é incompatível entre o pacote AAR dos serviços de reprodução e a biblioteca v13?
Peguei o arquivo gradle de gradleplease.appspot.com.
A remoção dos serviços de reprodução não o corrige; mesmo erro.
Minhas dependências dentro do build.gradle:
dependencies {
// Google Play Services
//compile 'com.google.android.gms:play-services:4.0.30'
// Support Libraries
//compile 'com.android.support:support-v4:19.0.0'
///compile 'com.android.support:appcompat-v7:19.0.0'
//compile 'com.android.support:gridlayout-v7:19.0.0'
compile 'com.android.support:support-v13:19.0.0'
compile 'org.eclipse.mylyn.github:org.eclipse.egit.github.core:2.1.5'
compile 'commons-codec:commons-codec:1.9'
compile 'com.madgag:markdownj-core:0.4.1'
compile 'com.wu-man:android-oauth-client:0.0.2'
compile 'com.google.http-client:google-http-client-jackson2:1.17.0-rc'
compile 'org.apache.commons:commons-lang3:3.2'
compile 'com.google.code.gson:gson:2.2.4'
}
Respostas:
Execute
gradle -q dependencies
(ougradle -q :projectName:dependencies
) para gerar um relatório de dependência. Você deve ver de onder7
vem, como:Em seguida, use a
exclude
diretiva para bloquear essa dependência. No meu caso, é proveniente da minha biblioteca CWAC-Camera e, portanto, uso:(onde a segunda
compile
instrução indica qual versão você realmente deseja)Isso deve esclarecer tudo, pois você verá se você executar o relatório de dependência novamente:
fonte
gradle dependencies
parece não relatar dependências adicionadas comcompile files('libs/example.jar')
libs/*.jar
dependências com um módulo em comum, nenhuma delas está disponível como um artefato. Existe alguma maneira de executar uma inspeção de dependência / exclusão de classe semelhante?compile project(':foo')
emcompile(project(':foo')) { exclude module: 'support-v4' }
. Observe os parênteses.Resolvi um erro semelhante adicionando o seguinte pedaço de código ao meu arquivo build.gradle dentro do bloco android.
fonte
Uma vez que uma imagem vale mais que mil palavras
Para tornar mais fácil e rápido concluir essa tarefa com iniciantes como eu. estas são as capturas de tela que mostram a resposta postada por @ edsappfactory.com que funcionou para mim:
Primeiro, abra a visualização Gradle no lado direito do Androidstudio, no item do seu aplicativo, vá para
Tasks
, emAndroid
seguida, clique com o botão direito do mouseandroidDependencies
e escolhaRun
:Segundo, você verá algo assim:
A principal razão pela qual publiquei isso não foi fácil saber onde executar uma
gradle
tarefa ou os comandos publicados acima. Portanto, é aqui que os excuta também.SO, para executar o comando gradle:
Primeiro:
Segundo:
Fácil como é.
É isso aí.
Obrigado.
fonte
Observe também que você pode ver suas dependências do Android, acessando a visualização Android Studio Gradle e selecionando o destino "androidDependencies".
Mais uma dica: Eu estava tendo esse problema, até remover a lib de suporte à v4 da pasta libs no projeto e no (s) projeto (s) de módulo / biblioteca relacionados.
fonte
Comecei a receber esse erro ao atualizar para o ButterKnife 8.5.1. Nenhuma das outras respostas aqui funcionou para mim.
Eu costumava
gradle -q :app:dependencies
ver a árvore e depois olhava os arquivos jar até encontrar o conflito. O conflito era que a dependência do butterknifecom.android.support:support-compat:25.1.0
contém uma versão da classe de acessibilidade ecom.android.support:support-v4:23.1.1
também a classe.Eu o resolvi alterando minha dependência disso:
para isso:
Parece não afetar a operação do ButterKnife até agora.
Edit: Existe uma solução melhor, que foi atualizar minhas bibliotecas de suporte para Android para coincidir com ButterKnife:
fonte
Caso alguém descubra que a resposta do CommonsWare não pôde ser aplicada ao projeto da biblioteca do Android, aqui está o trecho a ser corrigido
compilar (projeto (': yourAndroidLibrary')) {excluir módulo: 'support-v13'}
Você encontrará problemas
se você usar o projeto de compilação (': yourAndroidLibrary') {excluir módulo: 'support-v13'}
As diferenças são a pulseira "(" e ")" antes de "projeto" .
fonte
Não funcionaria para mim com uma dependência de projeto, a única maneira de fazê-lo funcionar era através da seguinte sintaxe:
Onde: Android-SDK é o nome do seu projeto.
fonte
Eu tive o mesmo problema e parece que meu aplicativo tinha muitos métodos por causa das bibliotecas: http://developer.android.com/tools/building/multidex.html
Resolvido com:
Mais aqui Erro: Falha na execução da tarefa ': app: dexDebug'. > comando finalizado com valor de saída diferente de zero 2
fonte
Eu tive esse mesmo erro, mas foi porque eu havia mudado recentemente do uso da v4 para a v13. Então tudo que eu tinha que fazer era limpar o projeto.
fonte
Eu tive o mesmo erro em um projeto legado. Minha culpa foi que a biblioteca de suporte foi incluída duas vezes: uma vez dentro da biblioteca do google-play-services e outra como autônoma.
Foi assim que eu consertei:
BAD build.gradle:
BOM build.gradle:
Espero que ajude alguém :-)
fonte
Estou usando
com.google.android.gms:play-services-analytics:8.3.0
eandroid-support-v13.jar
não conseguiexclude module: 'support-v4'
trabalhar.O que funcionou para mim foi usar o
android-support-v13
artefato em vez doandroid-support-v13.jar
arquivo.Ou seja, em vez de
}
eu usei
}
fonte
No meu caso, o problema foi causado por inconsistência de versão :
A solução foi simples: faça tudo versão 25
fonte
Um problema dex semelhante resolvido
gradle.build estava contendo:
O problema foi resolvido quando eu removi
Meu gradle agora se parece com:
Houve uma redundância no arquivo JAR e no projeto gradle compilado
Portanto, procure profundamente os arquivos jar e de dependência com as mesmas classes.
E remova a redundância.
Isso funcionou para mim.
fonte
Se você importou seu projeto do Eclipse .
O cenário que enfrentei depois de importar o projeto Eclipse para o Android studio.
Espero que isto ajude..
fonte
Este é um problema irritante, que pode levar algum tempo para descobrir o caso raiz. A maneira como você deve proceder é a resposta do @CommonsWare.
Eu enfrentei esse problema recentemente e achei difícil de resolver.
Meu problema foi que eu estava incluindo uma biblioteca da versão "+" no build.gradle. A versão mais recente da biblioteca continha um dos dex e bang mais antigos.
Voltei à versão mais antiga da biblioteca e a resolvi.
É bom executar suas dependências do Android e ver o que realmente está acontecendo. Também é bom pesquisar na sua pasta de compilação.
Acima de tudo, o Android Studio 2.2 fornece recursos de compilação para rastrear esse problema.
Happy Coding Guys
fonte
No Android Studio, acesse seu build.gradle (verifique os arquivos build.gradle do projeto e dos módulos) e procure dependências duplicadas.
Exclua aqueles que o seu projeto não precisa.
fonte
A exclusão de todos os arquivos do cache do Gradle corrigiu meu problema.
no Linux:
fonte
Eu removi a compilação 'com.android.support:support-v4:18.0.+' nas dependências e funciona
fonte
Consegui resolver o problema no meu projeto nativo de reação simplesmente adicionando
no final do meu arquivo android \ app \ build.gradle
fonte
Finalmente, resolvi modificar esses atributos no arquivo gradle do módulo
fonte
Eu tive o mesmo problema ao adicionar
react-native-palette
ao meu projeto, aqui está a minha árvore de dependências:Eu tentei muitas soluções e não consegui corrigi-lo, até alterar a
com.android.support:appcompat
versãoandroid/app/build.gradle
, desejo que isso possa ajudar:parece que várias entradas não são um grande problema, a incompatibilidade de versão é
fonte
Trabalhei por um
compile file('...')
conflito aumentando a minSdkVersion para 21 e habilitando o multidex. Não tenho certeza se essa é a melhor solução, mas a única maneira de fazê-la funcionar no meu caso.Nota:
compile file('...')
pois parece que você não pode inserir umaexclude
cláusula para que a opção não estivesse disponível.fonte
Eu tive o mesmo problema e minha solução está alterando a versão de suporte '27. + '(27.1.0) para '27 .0.1'
fonte
Eu tive o mesmo problema. No meu projeto, eu tinha as seguintes dependências:
Por motivos legados, o appcompat foi buscado no repositório do Google Maven, enquanto o suporte para Android era um .jar local.
Quando descobri isso e substitui essa referência local por uma referência simplificada, ele resolveu o meu problema de compilação.
Aqui está o diff do meu app / build.gradle:
fonte
Resolvi todos os meus problemas adicionando isso em project.properties
fonte
Recebeu o seguinte erro
Falha na execução da tarefa ': app: transformDexArchiveWithDexMergerForDebug'.
Correção: vá para Build -> Clean Project
fonte