com.android.builder.dexing.DexArchiveMergerException: невозможно объединить dex — стабильная версия Android Studio 3.0

Я сделал:

  • В "Настройки"->"Android SDK"->"SDK Tools" проверены и установлены сервисы Google Play v.46
  • Удалена папка /.gradle
  • «Чистый проект»
  • «Восстановить проект

Ошибка:

Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex

Проект build.gradle

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0'

        classpath 'com.google.gms:google-services:3.1.0'
    }
}

allprojects {
    repositories {
        jcenter()
        google()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Сборка приложения.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion '26.0.2'
    defaultConfig {
        applicationId "com.asanquran.mnaum.quranasaanurdutarjuma"
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 3
        versionName "1.3"
        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:appcompat-v7:26.+'


    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.google.android.gms:play-services-ads:11.4.2'
    compile 'com.github.barteksc:android-pdf-viewer:2.3.0'
    compile 'org.apache.commons:commons-io:1.3.2'
    compile 'com.google.firebase:firebase-ads:11.4.2'
    compile 'com.google.firebase:firebase-messaging:11.4.2'
    compile 'com.google.firebase:firebase-storage:11.4.2'
    apply plugin: 'com.google.gms.google-services'
    testCompile 'junit:junit:4.12'
}
apply plugin: 'com.google.gms.google-services'

person Nauman Shafique    schedule 27.10.2017    source источник
comment
вы не добавили поддержку multidex в defaultConfig. Попробуйте добавить это: defaultConfig { multiDexEnabled true }   -  person Sudheesh R    schedule 27.10.2017
comment
Я пробовал, но потом выдает список ошибок   -  person Nauman Shafique    schedule 27.10.2017
comment
покажи свои ошибки   -  person Sudheesh R    schedule 27.10.2017
comment
не используйте плагин apply: 'com.google.gms.google-services' в своих зависимостях. см. мое редактирование для вашего вопроса.   -  person Sudheesh R    schedule 27.10.2017
comment
нет, это не решение проблемы. Проблема еще жива.   -  person Nauman Shafique    schedule 30.10.2017
comment
У вас есть решение, потому что я столкнулся с той же проблемой в Android Studio 3.0?   -  person Ninja    schedule 30.10.2017
comment
Извините, я еще не нашел решения.   -  person Nauman Shafique    schedule 30.10.2017
comment
Я думаю, вам следует тщательно перепроверить свои зависимости.   -  person Sudheesh R    schedule 30.10.2017
comment
Попробуйте «скомпилировать» com.android.support:appcompat-v7:26.1.0.   -  person Fathy    schedule 30.10.2017


Ответы (9)


  1. Перейдите к <project>/app/ и откройте build.gradle файл
  2. Добавьте следующую строку в разделы defaultConfig и dependencies
android {
  ...

  defaultConfig {
    ...
    multiDexEnabled true // ADD THIS LINE
  }
}

...

dependencies {
  ...
  implementation 'com.android.support:multidex:1.0.3'  // ADD THIS LINE
}
person Ilker Cat    schedule 16.06.2020
comment
только multiDexEnabled true было достаточно, спасибо. - person Kvlknctk; 16.10.2020
comment
получил ошибку для react-native-pdf. Это решение работает для меня - person Dami; 18.12.2020
comment
решения дали исправление, спасибо! - person Karthick; 21.02.2021
comment
спасибо, я обновил минимальную версию SDK, а затем столкнулся с этой ошибкой. Работал на меня. Спасибо еще раз. - person Pulkit Prajapat; 16.06.2021

Я знаю, что уже слишком поздно обновлять. У меня была такая же проблема в моем проекте.

Возможные причины

  1. Если вы добавили модуль в свой проект, и этот модуль имеет библиотеки поддержки или любые библиотеки сервисов Google Play, версия которых отличается от версии вашего приложения.
  2. Если вы используете какую-либо библиотеку с открытым исходным кодом в своем проекте, и эта библиотека внутренне использует любую из библиотек, которые вы также используете в своем проекте.

Решения

  • Если в вашем проекте это случай 1, обновите версии своей библиотеки и сделайте их такими же в своем проекте и модуле.
  • Проверьте дерево зависимостей, используя приведенную ниже команду, и посмотрите, есть ли какие-либо несоответствия в зависимостях.

    ./gradlew :app:dependencies
    
  • Вы можете исключить конкретный модуль из любых зависимостей, как показано ниже.

    implementation('com.google.android.ads.consent:consent-library:1.0.4') {
      transitive = true
      exclude group: "com.android.support"
    } 
    
  • В приведенном выше примере группа com.android.support будет исключена из зависимостей библиотеки согласия.

  • Вы также можете удалить определенный модуль.

     compile ('junit:junit:4.12'){
      exclude group: 'org.hamcrest', module:'hamcrest-core'
      }
    
  • В приведенном выше примере он исключит hamcrest-core из org.hamcrest.

person VP4Android    schedule 28.06.2018
comment
Большой! Это была причина №1. Благодарю вас! - person Mike Keskinov; 15.09.2018

У меня такая же проблема, добавление sourceCompatibility и targetCompatibility к моему build.gradle помогло мне:

android {
    compileOptions {
        sourceCompatibility 1.8
        targetCompatibility 1.8
    }
}
person Philipp Cherubim    schedule 14.11.2017

У меня был приступ с этим, и ни один из ответов, которые я нашел, не сработал. Наконец-то нашел решение - делюсь им здесь, хотя я не могу точно сказать вам, как определить, какая зависимость является оскорбительной - возможно, вам придется провести некоторые пробы и ошибки.

В моем build.gradle (Module:app) я добавил это условие исключения:

    compile ('org.eclipse.paho:org.eclipse.paho.android.service:1.0.2')
        { exclude module: 'support-v4' }
person veggiebenz    schedule 02.11.2017

Я сделал то же, что и подсказка на изображении, за исключением того, что изменил 11.0.4 на 11.8.0.

compile 'com.google.android.gms:play-services-base:11.8.0'
compile 'com.google.android.gms:play-services:11.8.0'

Невозможно объединить dex

person mohammed alshaarawi    schedule 18.01.2018

Я думаю, это было связано с последней версией Android Studio (на тот момент). Я попробовал это после долгого времени, после чего проблема исчезла.

person Nauman Shafique    schedule 23.11.2019

при создании проекта Flutter я столкнулся с этой проблемой. Что я сделал, так это открыл файл MyProject/android/app/build.gradle и добавил multiDexEnabled true внутри тега defaultConfig, как показано ниже:

defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "Your Application ID Here"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
person Hanny    schedule 27.06.2020

Когда возникла та же проблема, у моего build.gradle уже было следующее:

android {
  ...

  defaultConfig {
   ...
  multiDexEnabled true 
   }
}

...

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

Я очистил проект, а затем снова запустил сборку, и проблема исчезла.

person Fahima Mokhtari    schedule 16.01.2021

в моем случае я меняю все библиотеки com.android.support: на 27.1.0, и это работает

person Marriage    schedule 28.02.2018