A execução do Android Studio 3.0 falhou para a tarefa: não foi possível mesclar dex


87

O android studio estava recebendo um erro de compilação durante a execução da compilação com o seguinte:

Erro: Falha na execução da tarefa ': app: transformDexArchiveWithExternalLibsDexMergerForDebug'. java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Incapaz de mesclar dex "

Meu aplicativo: arquivo build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion '26.0.2'
    defaultConfig {
        applicationId "com.pdroid.foodieschoice"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.firebaseui:firebase-ui-auth:2.3.0'

    testCompile 'junit:junit:4.12'
}
configurations.all {
    resolutionStrategy {
        force 'com.android.support:appcompat-v7:26.0.1'
        force 'com.android.support:support-compat:26.0.1'
        force 'com.android.support:support-core-ui:26.0.1'
        force 'com.android.support:support-annotations:26.0.1'
        force 'com.android.support:recyclerview-v7:26.0.1'
    }
}

apply plugin: 'com.google.gms.google-services'

quaisquer soluções

Edit: fiz com a amostra por meio do site firebase github e resolvi


você deve incluir suporte a multiDex em seu aplicativo
Sudheesh R

e tente limpar, reconstruir seu projeto
Sudheesh R

Eu sugiro que você edite sua pergunta e poste todo o resultado do seu console do Gradle, não apenas aquela linha. Os detalhes do seu problema estão em outra parte da saída.
CommonsWare

@CommonsWare Eu postei meu erro inteiro .. são apenas duas linhas apenas.
Anguraj

2
Tente desativar a execução instantânea, limpar seu projeto e adicionar android {defaultConfig {multiDexEnabled true}}
Tara

Respostas:


66

Para projetos baseados em Cordova, execute cordova clean androidantes de construir novamente, como sugeriu @mkimmet .


1
Alguém, por favor, marque esta resposta corretamente. Isso resolve o problema.
pamekar

2
Para mim, instalar o 'cordova-plugin-androidx' e 'cordova-plugin-androidx-adapter' resolveu o problema
ssz

58

Este erro ocorre quando você adiciona uma biblioteca externa que pode não ser compatível com o seu compileSdkVersion .

Tenha cuidado ao adicionar um external library .

Passei 2 dias resolvendo esse problema e finalmente foi resolvido seguindo esses passos.

  • Certifique-se de que todas as suas bibliotecas de suporte sejam as mesmas que compileSdkVersionvocê, build.gradle(Module:app)no meu caso 26.insira a descrição da imagem aqui

  • Em sua categoria defaultConfig digite multiDexEnabled true . Essa é a parte importante.imagem verdadeira multiDexEnabled

  • Vá para Arquivo | Configurações | Compilação, execução, implantação | Instant Run e tente ativar / desativar o Instant Run para hot swap ... e clique em ok Ativar Instant Run para Hot swap ... Imagem

  • Sync Seu projecto.

  • Por último, vá para Build | clique em Rebuild Project .

  • Nota: Rebuild Project primeiro limpa e então constrói o projeto.


me ajuda muito, obrigado.
Sumit Saxena

feliz em ouvir isso. Feliz Androiding.
Niamatullah Bakhshi

1
@YajliMaclo ótimo!
Niamatullah Bakhshi

48

Tente adicionar isso no gradle

    android {
      defaultConfig {
        multiDexEnabled true
        }
   }

Você tentou invalidar o cache no Android Studio? @Anguraj
Ishan Fernando

Não é a única etapa para habilitar o multidex. Também não é necessário em níveis de API mais recentes
OneCricketeer

25

Resolução:

Consulte este link : Como existem várias opções para desligar o aviso, dependendo da minSdkVersion, ele é definido abaixo de 20 :

 android {
     defaultConfig {
         ...
         minSdkVersion 15 
         targetSdkVersion 26
         multiDexEnabled true
     }
     ... }

 dependencies {   compile 'com.android.support:multidex:1.0.3' }

Se você tiver um minSdkVersion maior que 20 em seu conjunto build.gradle, use o seguinte para desligar o aviso:

  android {
      defaultConfig {
          ...
          minSdkVersion 21 
          targetSdkVersion 26
          multiDexEnabled true
      }
      ... }

Atualize as dependências da seguinte forma:

     dependencies {
        implementation 'com.android.support:multidex:1.0.3'
     }

Novamente, a única diferença são as palavras-chave nas dependências:

minSdkVersion abaixo de 20: use compilar

minSdkVersion acima de 20: usar implementação

  1. Espero que isso tenha sido útil, por favor, vote se isso resolveu seu problema. Obrigado por seu tempo.
  2. Além disso, para obter mais informações sobre por que isso ocorre , leia o primeiro parágrafo do link, ele explicará completamente por quê? e o que esse aviso significa.

24

Simplesmente tente fazer um "Build -> Clean Project". Isso resolveu o problema para mim.


5
Obrigado, isso funcionou para mim em um projeto Ionic / Cordova executando cordova clean android enquanto eu também tinha o plug-in cordova-android-support-gradle-release instalado.
mkimmet

Adoro quando algo simples conserta as coisas !! Obrigado!
tonejac de

Isso corrigiu para mim ao trabalhar com React Native.
Michael Auderer

Obrigado, é a solução mais fácil para este problema, gastei meus 3 dias para resolver este problema e sua resposta resolve todos os meus problemas. Mais uma vez obrigado meu mano !!!
gautamsinh mori

Obrigado. Me ajudou no Android Studio 4.1. Salvou meu dia.
Atif

7

Para mim, adicionando

multiDexEnabled true

e

packagingOptions {
        exclude 'META-INF/NOTICE' 
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/notice'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/license'
        exclude 'META-INF/license.txt'
    }

no arquivo Build.gradle de nível de aplicativo resolveu o problema


5

Vá para o seu build.gradlearquivo de nível de módulo e adicione as seguintes linhas ao código

    defaultConfig {
        ...
        minSdkVersion 15 
        targetSdkVersion 28
        multiDexEnabled true
    }
    ...
}

dependencies {
  implementation 'com.android.support:multidex:1.0.3'
}

Isso resolveu o problema facilmente. Verifique esta documentação


4

Use multiDexEnabled true como abaixo.

{
 minSdkVersion 17
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}

e

implementation 'com.android.support:multidex:1.0.3'

esta solução funcionou para mim.


4

Tentei muitas soluções, conforme mencionado acima, incluindo multiDexEnabled true, mas nenhuma funcionou para mim.

Aqui está a solução que funcionou para mim - copie este código no arquivo app \ build.gradle

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support' && requested.name != 'multidex') {
            details.useVersion "${rootProject.ext.supportLibVersion}"
        }
    }
}

Certifique-se de executar gradlew clean antes de executar o código


1
Eu mudei minSdkVersion, é o suficiente
Sr. Especial

2

A mesma coisa aconteceu comigo, descobri que estava no meio de uma atualização para AS 3.0.1 e depois que fiz a atualização, limpei e recompilei o aplicativo, tudo foi consertado.


2

Para mim, o que corrigiu esse erro foi alterar uma linha nas dependências do gradle do meu aplicativo.

deste :

compile('com.google.android.gms:play-services-gcm:+') {
    force = true
}

Para isso :

compile('com.google.android.gms:play-services-gcm:11.8.0') {
    force = true
}

Só isso funcionou para mim. Não
precisei

1

Além disso, certifique-se de que seu aplicativo tenha como subclasse MultiDexApplication

import android.support.multidex.MultiDexApplication

class App : MultiDexApplication()

ou se não subclassificar a classe Application, adicione a AndroidManifest.xml

<application
  android:name="android.support.multidex.MultiDexApplication"

0

Você está entre as atualizações do SDK ou da plataforma? Se sim, conclua-os completamente e tente continuar. Eu normalmente atualizo os pacotes individuais que precisam ser atualizados para fazer a atualização completa, que pode ir até 2,5 GB às vezes. Fazer essa atualização completa às vezes falha. Tive várias atualizações do SDK depois de fazer upgrade para o Android Studio 3.0 e estava recebendo o erro acima, pois todos os pacotes não haviam sido atualizados. Assim que atualizei todos os pacotes, o erro acima desapareceu.


Espero que você tenha limpado ou invalidado seu cache e reiniciado o Android Studio? Para mim, o Android Studio 3 parece ter bugs em comparação com as versões anteriores.
Vineet Jain

Alguém já consertou isso? não pode passar por isso!
68060

0

No meu caso, alterar a versão da biblioteca do Firebase de 2.6.0 para 2.4.2 corrigiu o problema


0

Para mim, o problema era o uso do Java 1.8 em um módulo, mas não no módulo de app. Eu adicionei isso ao gradle de compilação do aplicativo e funcionou:

android{
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

0

Mesmo problema. Eu habilitei multidex: defaultConfig {applicationId "xxx.xxx.xxxx" minSdkVersion 24 targetSdkVersion 26 multiDexEnabled true

Limpei o cache, executei gradle clean, rebuild, make, tentei garantir que não houvesse conflitos nas bibliotecas importadas (removi todas as dependências transitivas) e fiz todas as atualizações. Ainda:

Erro: Falha na execução da tarefa ': app: transformDexArchiveWithExternalLibsDexMergerForDebug'. java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Não é possível mesclar dex

Acontece que a compilação não gostou de: implementação 'org.slf4j: slf4j-android: 1.7.21'


0

Quando a versão do Android Studio for 3.0.1, a versão do Gradle for 4.1 e o Android PluginVersion for 3.0.0, ele encontrará esse problema. Então eu faço o downgrade do Gradle versão 3.3, Android Android é zero, não existe esse problema.


0

Eu tinha isso quando a versão do SDK solicitada não correspondia às dependências. Você pode clicar na linha destacada e corrigir isso clicando na lâmpada vermelha. Não há necessidade de encontrar a versão real, apenas deixe o IDE descobrir para você. E adicione o repositório do Google à configuração do maven.


0

Estava recebendo o mesmo erro e no meu caso, o erro foi resolvido quando eu corrigi um erro de compilação que estava associado a uma variante de compilação diferente daquela que eu estava construindo atualmente.

Eu estava construindo a variante de compilação que estava vendo sem erros, mas a tentativa de depuração causou um app:transformDexArchiveWithExternalLibsDexMergerForDebugerro. Assim que mudei para construir a outra variante de construção, detectei meu erro no processo de construção e o corrigi. Isso pareceu resolver meu app:transformDexArchiveWithExternalLibsDexMergerForDebugproblema para todas as variantes de compilação.

Observe que esse erro não estava no módulo externo referenciado, mas em um conjunto de origem distinto de uma variante de construção que referenciou um módulo externo. Espero que isso seja útil para alguém que pode estar vendo o mesmo caso que eu!


0

Concluí e resolvi esse problema apenas fazendo essas tarefas no meu código

Abrir -> build.gradle Alterar valor de

compile 'com.google.code.gson:gson:2.6.1'

para

compile 'com.google.code.gson:gson:2.8.2'

0

Para remover esse problema de Dex, basta implementar uma dependência. Esse problema ocorre quando estamos usando vários serviços diferentes do mesmo servidor. Suponha que estejamos usando anúncios e Firestore em um projeto e ambos tenham um maven de repositório. então, precisamos chamar dados diferentes no repositório que precisamos da dependência dex para implementar. A nova dependência de atualização: -

 implementation 'com.android.support:multidex:1.0.3'

Tenho certeza que isso resolverá seu problema de forma permanente


é uma dependência colocá-lo em gradle
Pradeep Sheoran

0
1) Adicione multiDexEnabled true
2) se você receber um erro de compilação, verifique o nível de aplicativo build.gradle se as mesmas dependências forem implementadas com versões diferentes.
3) Remova um se encontrar as mesmas dependências.

android {compileSdkVersion 28 defaultConfig {

    minSdkVersion 17
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}
espero que funcione bem :) Happy Coding

0

A maneira mais fácil de evitar esse tipo de erro é:

- Altere a biblioteca combilesdkversion da mesma forma que a versão compilesdk do seu aplicativo

- Altere a versão da biblioteca de suporte da mesma para o build.gradle (app)


0

Isto é o que funciona para mim. limpar, preparar e executar.

cordova clean android;
ionic cordova prepare andriod;
ionic cordova run andriod;

espero que ajude.



Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.