Android Studio 3.0 Выполнение не выполнено для задачи: невозможно объединить dex

Android Studio получала ошибку сборки при выполнении сборки:

Ошибка: не удалось выполнить задачу ': app: transformDexArchiveWithExternalLibsDexMergerForDebug'. java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Невозможно объединить dex "

Мое приложение: файл 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'

любые решения

Изменение: я сделал с образцом через сайт GitHub Firebase и решил

Ответ 1

Для проекта, основанного на Cordova, запустите cordova clean android перед сборкой снова, как предложено @mkimmet.

Ответ 2

Эта ошибка возникает, когда вы добавляете внешнюю библиотеку, которая может быть несовместима с вашим compileSdkVersion.

Будьте осторожны при добавлении external library.

Я потратил 2 дня на эту проблему, и, наконец, она была решена после этих шагов.

  • Убедитесь, что все ваши библиотеки поддержки совпадают с compileSdkVersion вашего build.gradle(Module:app) в моем случае это 26. enter image description here

  • В вашей категории по умолчанию Config введите multiDexEnabled true. Это важная часть. multiDexEnabled True image

  • Перейти к файлу | Настройки | Сборка, выполнение, развертывание | Мгновенный запуск и попробуйте включить/отключить мгновенный запуск для горячей замены... и нажмите кнопку ОК Enable Instant Run to Hot swap... Image

  • Sync ваш проект.

  • Наконец, Перейти к Build | нажмите на Перестроить проект.

  • Примечание. Rebuild Project сначала очищает, а затем создает проект.

Ответ 3

Попробуйте добавить это в gradle

    android {
      defaultConfig {
        multiDexEnabled true
        }
   }

Ответ 4

Просто попробуйте сделать "Build → Clean Project". Это решило проблему для меня.

Ответ 5

Разрешение:

Обратитесь по этой ссылке: поскольку существуют различные варианты отключения предупреждения в зависимости от minSdkVersion, оно установлено ниже 20:

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

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

Если в вашем наборе build.gradle значение minSdkVersion больше 20, используйте следующее, чтобы отключить предупреждение:

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

Обновите зависимости следующим образом:

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

Опять же, единственное отличие - это ключевые слова в зависимостях:

minSdkVersion ниже 20: использовать компиляцию

minSdkVersion выше 20: использовать реализацию

  1. Я надеюсь, что это было полезно, пожалуйста, сообщите, если это решило вашу проблему. Спасибо за ваше время.
  2. Также для получения дополнительной информации о том, почему это происходит, пожалуйста, прочитайте первый абзац в ссылке, он подробно объяснит почему? и что означает это предупреждение.

Ответ 6

Для меня добавление

multiDexEnabled true

и

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'
    }

на уровне приложения Файл Build.gradle решил проблему

Ответ 7

Я пробовал много решений, как упомянуто выше, включая multiDexEnabled true, но ничего из этого не помогло мне.

Вот решение, которое сработало для меня - скопируйте этот код в файл 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}"
        }
    }
}

Обязательно запустите gradlew clean перед запуском кода

Ответ 8

То же самое случилось со мной, выяснилось, что я был в середине обновления до AS 3.0.1, и после того, как я сделал обновление, очистил и перестроил приложение, все было исправлено.

Ответ 9

Для меня то, что исправило эту ошибку, меняло одну строку в зависимости моего приложения от gradle.

из этого:

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

На это:

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

Ответ 10

Используйте multiDexEnabled true, как показано ниже.

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

а также

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

это решение сработало для меня.

Ответ 11

Также убедитесь, что ваше приложение имеет подклассы MultiDexApplication

import android.support.multidex.MultiDexApplication

class App : MultiDexApplication()

или, если нет подкласса класса приложения, добавьте в AndroidManifest.xml

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

Ответ 12

Вы находитесь между обновлениями SDK или платформы? Если да, заполните их полностью, а затем попытайтесь продолжить. Обычно я обновляю отдельные пакеты, которые необходимо обновить, чтобы получить все обновление, которое иногда может подниматься до 2,5 ГБ. Выполнение этого полного обновления иногда терпит неудачу. После обновления до Android Studio 3.0 у меня было несколько обновлений SDK, и эта ошибка была выше, поскольку все пакеты не обновлялись. Как только я обновил все пакеты, вышеуказанная ошибка исчезла.

Ответ 13

В моем случае изменение версии библиотеки firebase от 2.6.0 до 2.4.2 исправило проблему

Ответ 14

Для меня проблема заключалась в использовании Java 1.8 в модуле, но не в модуле приложения. Я добавил это в приложение build gradle и работал:

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

Ответ 15

Такая же проблема. Я включил multidex:   defaultConfig {       applicationId "xxx.xxx.xxxx"       minSdkVersion 24       targetSdkVersion 26       multiDexEnabled true

Я очистил кеш, запустил gradle clean, rebuild, make, попытался убедиться в отсутствии конфликтов в импортированных библиотеках (удалены все транзитивные зависимости) и сделал все обновления. Тем не менее:

Ошибка: выполнение выполнено для задачи ': app: transformDexArchiveWithExternalLibsDexMergerForDebug'. java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: невозможно слить dex

Выключает сборку не понравилось: реализация 'org.slf4j: slf4j-android: 1.7.21'

Ответ 16

Когда версия Android Studio 3.0.1, Gradle Версия 4.1 и Android PluginVersion 3.0.0, она столкнется с этой проблемой. Затем я понижаю версию Gradle версии 3,3, Android Android равна нулю, такой проблемы нет.

Ответ 17

У меня было это, когда запрошенная версия SDK не соответствовала зависимостям. Вы можете щелкнуть выделенную линию и исправить это, нажав красную лампочку. Не нужно находить фактическую версию, просто дайте IDE понять это для вас. И добавьте google repo в конфигурацию maven.

Ответ 18

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

Я строил вариант сборки, на который смотрел просто отлично, без ошибок, но попытка отладки вызвала app:transformDexArchiveWithExternalLibsDexMergerForDebug ошибка app:transformDexArchiveWithExternalLibsDexMergerForDebug. Как только я переключился на сборку другого варианта сборки, я поймал свою ошибку в процессе сборки и исправил ее. Похоже, это решило мое app:transformDexArchiveWithExternalLibsDexMergerForDebug проблема app:transformDexArchiveWithExternalLibsDexMergerForDebug для всех вариантов сборки.

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

Ответ 19

Я сделал и исправил эту проблему, просто выполнив эту работу в моем коде

Открыть → build.gradle Изменить значение с

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

в

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

Ответ 20

Чтобы устранить эту проблему Dex, просто внедрите одну зависимость. Эта проблема возникает, когда мы используем несколько разных сервисов с одного сервера. Предположим, мы используем рекламу и Firestore в проекте, и у обоих есть хранилище maven. поэтому нам нужно вызывать разные данные в репозитории, для реализации которых нам нужна зависимость dex. Новое обновление Зависимости: -

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

Я уверен, что это решит вашу проблему навсегда

Ответ 21

1)Please add multiDexEnabled true
2)if you get compilation error then check your app level build.gradle weather same dependencies are implemented with different versions.
3)Remove one if you find same dependencies.

android {compileSdkVersion 28 defaultConfig {

    minSdkVersion 17
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}
hope it works fine :) Happy Coding

Ответ 22

Самый простой способ избежать ошибки типа suck - это:

-Change библиотека комбинирует dkversion так же, как и ваше приложение compilesdkversion

-Change библиотека поддерживает версию библиотеки, такую же, как и ваш build.gradle (приложение)

Ответ 23

Это то, что работает для меня. Чисто подготовить и запустить.

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

Надеюсь, поможет.

Ответ 24

Перейдите в файл уровня модуля build.gradle и добавьте следующие строки в код

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

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

Это легко решило проблему. Проверьте эту документацию