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

У меня Android Studio Beta. Я создал новый проект, скомпилировав свои старые модули, но когда я попытался запустить приложение, оно не запустилось с сообщением:

Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.

com.android.builder.dexing.DexArchiveMergerException: невозможно объединить dex

Но я не знаю, как решить эту ошибку. Я искал это в течение нескольких часов, но безуспешно.

Мой проект gradle:

    // Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0-beta6'
        classpath "io.realm:realm-gradle-plugin:3.7.1"
        classpath 'com.google.gms:google-services:3.1.0'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

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

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

Мой градиент приложения:

    apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {
        applicationId "parad0x.sk.onlyforyou"
        minSdkVersion 21
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
        }
    }
    compileOptions {
        targetCompatibility 1.7
        sourceCompatibility 1.7
    }
    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
    }
    lintOptions {
        checkReleaseBuilds false
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    //noinspection GradleCompatible
    compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
    compile project(path: ':loginregisterview')


}

И мой модуль gradle:

    apply plugin: 'com.android.library'
apply plugin: 'realm-android'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"

    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 26
        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:appcompat-v7:26.0.2'
    compile 'com.android.support:support-v4:26.1.0'
    compile 'com.github.bumptech.glide:glide:4.0.0'
    testCompile 'junit:junit:4.12'
    compile project(path: ':parser')

}

Мой второй модуль:

     apply plugin: 'com.android.library'
apply plugin: 'realm-android'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    realm {
        syncEnabled = true
    }
    useLibrary 'org.apache.http.legacy'

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile 'junit:junit:4.12'
    //  compile 'com.android.support:appcompat-v7:23.1.0'

    //   compile 'com.fasterxml.jackson.core:jackson-core:2.9.0'
 //   compile 'com.fasterxml.jackson.core:jackson-annotations:2.9.0'
 //   compile 'com.fasterxml.jackson.core:jackson-databind:2.9.0'
    compile 'com.google.code.gson:gson:2.6.2'
}

____________ поиск _________

Когда я не импортировал второй модуль (парсер), приложение не вылетало на dex, но когда модуль не был импортирован, приложение не работало. : D: D


person Parad0X    schedule 17.09.2017    source источник
comment
Если у кого-то такая же проблема возникает в стабильной версии Android Studio 3.0, я настоятельно рекомендую вам просмотреть ответ stackoverflow.com/questions/46949761/ и посмотреть, поможет ли это вам.   -  person Bhavesh Patadiya    schedule 27.10.2017
comment
У меня была такая же проблема, и я следовал всем методам, упомянутым на этой странице, но мне это не помогло, поэтому я перехожу к градиенту и удерживаю курсор на каждой библиотеке, чтобы проверить, доступна ли их новая версия. те, у кого есть новая версия, поэтому я обновил, синхронизирую gradle и бегу. это сработало.   -  person Shahzad Afridi    schedule 13.11.2017


Ответы (62)


У меня была такая же проблема при обновлении с com.google.android.gms:play-services:11.2.2 до com.google.android.gms:play-services:11.4.0. Это решило это для меня:

  1. чистый
  2. перестроить
person Zohidjon Akbarov    schedule 23.09.2017
comment
Вы только откладываете реальную проблему с этим решением. вероятно, версия 11.4.0 содержит меньше методов. Смотрите мой ответ ниже. вы получите эту ошибку в следующей зависимости, которую вы добавите, я думаю - person itzhar; 07.11.2017
comment
Это решает мою проблему, когда только multiDexEnabled true не - person Yuri Brigance; 08.11.2017
comment
тот же isse с com.google.android.gms: play-services-location: 11.6.0 ... это недопустимое решение - person issamux; 20.11.2017
comment
Это решение сработало для меня, когда у меня возникла проблема совместимости с использованием библиотек аналитики Google. В режиме AS просмотреть панель навигатора проекта Android как Project, вы должны увидеть Внешние библиотеки, если вы развернете внешние библиотеки, вы увидите все jar-файлы и модули, используемые для компиляции проекта. Это должно помочь вам определить несовместимые комбинации модулей. - person angryITguy; 22.12.2017
comment
Если приведенный выше код не работает в случае compileSdkVersion 26, попробуйте это .. перейдите к - build.gradle (Module: app) - добавьте multiDexEnabled true в категорию defaultConfig и последний шаг. Перейдите в File | Настройки | Сборка, выполнение, развертывание | Мгновенный запуск и попробуйте включить / отключить - person Sumit Saxena; 12.03.2018
comment
Ошибка: не удалось выполнить задачу ': app: processDebugGoogleServices'. ›Устраните конфликт версий, обновив версию плагина google-services (информация о последней версии доступна по адресу bintray.com/android/android-tools/) или обновив версию com.google.android.gms до 11.4.0. - person vinidog; 29.03.2018

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

app / build.gradle:

android {
    defaultConfig {
       multiDexEnabled true
    }
}
person itzhar    schedule 05.10.2017
comment
Спасибо. Я думаю, проблема заключалась в том, что большинство ответов не учитывают включение файлов JAR из других источников, которые вы не можете восстановить. multiDex, кажется, позволяет комбинировать несовместимый код. - person Brendon Whateley; 22.10.2017
comment
Это решение сработало для меня, но, кроме того, мне пришлось явно включить multidex для API ‹= 21 developer.android.com/studio/build/multidex.html - person hamou92; 19.12.2017
comment
Несмотря на то, что это более актуально, чем принятый ответ, я все еще получаю Невозможно объединить сообщение dex - person John; 11.05.2018
comment
Также необходимо добавить multiDexEnabled true для всех модулей - person mindeh; 27.06.2018
comment
У меня не сработало. С этим изменением я получил другую ошибку: Выполнение не удалось для задачи ': app: transformClassesWithMultidexlistForDebug - person Atul; 17.08.2018
comment
Да, 5 часов я жила с совершенно разными ответами. Но каким-то образом я понял, что это проблема Multidex, и угодил сюда. Я был прав. Спасибо чувак - person sud007; 02.10.2018

Обратите внимание на предупреждения!

Иногда вам нужно всего лишь удалить предупреждения, и ошибка исчезнет автоматически. См. Ниже специальный случай:


У меня были эти две зависимости в моем build.gradle файле на уровне модуля:

implementation 'com.android.support:appcompat-v7:27.0.2'
implementation 'com.android.support:recyclerview-v7:27.0.2'

и Studio предупредили (помимо проблемы слияния dex):

Все com.android.support библиотеки должны использовать одну и ту же спецификацию версии (смешивание версий может привести к сбоям во время выполнения). Нашел версии 27.0.2, 21.0.3. Примеры включают com.android.support:animated-vector-drawable:27.0.2 и com.android.support:support-v4:21.0.3

Итак, я явно определил версию com.android.support:support-v4 (подробности см. здесь) и оба проблемы (предупреждение и предупреждение, связанное со слиянием dex) решено:

implementation 'com.android.support:support-v4:27.0.2'  // Added this line (according to above warning message)
implementation 'com.android.support:appcompat-v7:27.0.2'
implementation 'com.android.support:recyclerview-v7:27.0.2'

См. комментарии ниже для других подобных ситуаций.

person Mir-Ismaili    schedule 11.01.2018
comment
Спасибо, это устранило проблему для меня. Первоначально это было вызвано добавлением eu.inloop: androidviewmodel: 1.3.4 - person lsrom; 26.01.2018
comment
Собственно, я просто хочу, чтобы ошибка была более точной - person Amin Keshavarzian; 05.03.2018
comment
Большое спасибо. Я была такая же проблема. Я использовал v26, обновился до sdk 27 ​​и решил проблему. - person Johnny; 10.03.2018
comment
Это должен быть правильный ответ. Мои сборки перестали работать после добавления одной библиотеки (airbnb / epoxy), которая зависела от support:design:26.1.0, а у меня этой зависимости еще не было. Версия моих других поддерживаемых библиотек была 27.1.0. После добавления support:design зависимости с версией 27.1.0 моя проблема была решена. - person alashow; 18.03.2018
comment
Спасибо. Вы спасаете мне день. - person Nithinjith; 23.03.2018

В моем случае, к сожалению, у меня не сработали ни решения Мишеля, ни Сурагча.

Итак, я решил эту проблему, выполнив следующие действия:

В gradle: 3.0 конфигурация компиляции устарела и должна быть заменена на реализацию или api. Для получения дополнительной информации вы можете прочитать здесь. Вы можете прочитать официальную документацию по адресу Инструмент сборки Gradle

Конфигурация компиляции все еще существует, но не должна использоваться, поскольку она не предлагает гарантий, которые предоставляют конфигурации api и реализации.

лучше использовать реализацию или api, а не компиляцию

просто замените compile на implementation, debugCompile на debugImplementation, testCompile на testImplementation и androidtestcompile с androidTestImplementation

Например: вместо этого

compile 'com.android.support:appcompat-v7:26.0.2'
compile 'com.android.support:support-v4:26.1.0'
compile 'com.github.bumptech.glide:glide:4.0.0'

использовать как это

implementation 'com.android.support:appcompat-v7:26.0.2'
implementation 'com.android.support:support-v4:26.1.0'
implementation 'com.github.bumptech.glide:glide:4.0.0'

После этого

  • Удалите папку .gradle внутри вашего проекта (обратите внимание, что для просмотра .gradle вам нужно переключиться в представление «Проект» в навигаторе в левом верхнем углу)
  • Удалите все папки сборки и кеш Gradle.
  • В меню "Сборка" нажмите кнопку Очистить проект.
  • После завершения задачи нажмите кнопку Rebuild Project в меню Build.

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

person King of Masses    schedule 15.11.2017
comment
Спасибо, все, что мне нужно было сделать, это изменить компиляцию на реализацию, и она была успешно построена, не нужно было выполнять другие шаги. Сборка начала сбоить после того, как я обновил Facebook SDK - person Shayno; 19.11.2017
comment
Сработало для меня - понимание того, почему? - person Alex; 05.12.2017
comment
Удаляемая папка должна быть .gradle, а не ./gradle. - person Gary Bak; 19.01.2018
comment
Также testImplementation вместо testCompile. - person Zon; 22.01.2018
comment
Я уже упоминал об этом в своем ответе. в любом случае спасибо, что сказал - person King of Masses; 22.01.2018
comment
Почему implementation работает, а compile нет? Они должны были сделать его обратно совместимым. В любом случае большое спасибо! - person Nabin Bhandari; 11.03.2018
comment
Единственный ответ, который действительно сработал для меня. Спасибо! - person Michael Richardson; 13.03.2018
comment
Где кеш Gradle? - person Alyoshak; 04.04.2018
comment
Спасибо, это самый крутой ответ. Он должен быть в топе поиска. Работал у меня. - person Danger; 16.11.2018

  1. Удалите каталог .gradle.

  2. Снова запустите приложение.

Примечания

  • Каталог .gradle находится в корневой папке вашего проекта. (Возможно, сначала вам придется показать скрытые файлы.)
  • Мне приходится делать это каждый раз, когда я обновляю модуль зависимостей с помощью Android 3.0. (Более поздние версии Android Studio 3, похоже, решили проблему.)
person Suragch    schedule 18.09.2017
comment
это помогло мне, когда я также сделал недействительный кеш и перезапустил - person Vasili Fedotov; 05.10.2017
comment
Я был в недоумении, когда это устранило мою проблему ... Я пытался обновить все, удалить все ключевые слова компиляции, обновить несколько подозрительных версий ilb ... когда я, наконец, сделал это, это сработало ... - person hanzolo; 02.03.2018

Мне было недостаточно удаления .gradle, предложенного Сурагчем. Вдобавок мне пришлось выполнить Build > Clean Project.

Обратите внимание, что для того, чтобы увидеть .gradle, вам нужно переключиться в представление «Проект» в навигаторе в левом верхнем углу:

Перейти к просмотру проекта

person Michel Jung    schedule 19.09.2017

Я пробовал все другие решения, но у меня никто не работал. В конце концов, я решил это, используя ту же версию зависимости, отредактировав build.gradle. Я думаю, что эта проблема возникает при добавлении библиотеки в gradle, которая использует другую версию зависимостей поддержки или библиотеки Google.

Добавьте следующий код в свой файл градиента сборки. Потом clean и rebuild проект.

ps: это было старое решение для меня, поэтому вам следует использовать обновленную версию следующих библиотек.

configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
    def requested = details.requested
    if (requested.group == 'com.android.support') {
        if (!requested.name.startsWith("multidex")) {
            details.useVersion '26.1.0'
        }
    } else if (requested.group == "com.google.android.gms") {
        details.useVersion '11.8.0'
        } else if (requested.group == "com.google.firebase") {
            details.useVersion '11.8.0'
          }
      }
}
person Ali Gürelli    schedule 21.03.2018
comment
пробовал все другие решения, в итоге помогло только это: / - person Ante; 21.03.2018
comment
@Ali Gurelli Большое спасибо, я пробовал много решений, но только это работает. - person Bipin Bharti; 03.05.2018
comment
Спасибо, но для меня я использую сведения о версии. UseVersion '15 .0.0 ' - person Elsunhoty; 11.05.2018
comment
Спасибо за решение. Та же проблема случилась и со мной. Google Tap and Pay был 10.0.0, а остальные библиотеки находятся в последней версии - person R World; 08.06.2018
comment
Работает гладко, спасибо - person Sankalp; 06.07.2018
comment
Я должен сказать, ты спас мое утро! - person Ben-Hur Batista; 27.06.2019

если (1. Попробуйте почистить и восстановить работу) тогда хорошо

иначе, если (2. Попробуйте удалить работу Gradle), тогда хорошо

else- ›3. Попробуйте добавить в grade.properties

android.enableD8 = false

Изменить 2021: этот третий вариант сейчас устарел, используйте другие варианты

else- ›4. Добавьте multiDexEnabled true в свой build.gradle

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

и добавляем зависимость

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

Возможно, первый работает для вас и так далее, но для меня это действительно зависит от характера вашей проблемы, например

Я получил сообщение об ошибке, как только добавил эту библиотеку

implementation 'com.jjoe64:graphview:4.2.2'

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

compile 'com.jjoe64:graphview:4.2.1'

и это решает проблему. Так что обратите на это внимание.

person DINA TAKLIT    schedule 14.05.2018
comment
Самый полезный способ решения этой проблемы. Я хочу упомянуть, что для получения более подробной информации вы можете использовать команду gradlew app: transformDexArchiveWithExternalLibsDexMergerForDebug --stacktrace. Спасаю, обнаружил, что надо включить мультидекс. Надеюсь, это поможет. - person panda; 01.07.2018
comment
@DINA, android.enableD8 = false устарел. - person Daniel; 13.01.2021
comment
Ок я обновлю ответ - person DINA TAKLIT; 14.01.2021

В моем случае проблема была связана с библиотекой комнаты:

compile 'android.arch.persistence.room:runtime:1.0.0-alpha1'

Изменив его на:

compile 'android.arch.persistence.room:runtime:1.0.0'

работал.

person Shashi    schedule 01.12.2017
comment
Большое спасибо, это мне очень помогло! - person Phil; 06.01.2018
comment
Так рада найти этот ответ. Спасибо! - person callOfCode; 14.01.2018

Просто чтобы добавить к вышеуказанным решениям:

Убедитесь, что у вас нет повторяющихся зависимостей, указывающих на разные их версии, в разных местах (или даже в одном файле).

person android developer    schedule 29.11.2017
comment
Я думаю, что это следует сначала проверить, прежде чем добавлять multiDexEnabled true и пробовать другие ответы. Спасибо! - person Aleksandr A; 02.10.2018

Привет, у меня такая же проблема, пробовал почти все. Итак, наконец, я решил после 6-часовой борьбы, отлаживая все построчно.

classpath 'com.google.gms:google-services:3.0.0'

Google-services 3.0 Не поддерживает firebase с Studio 3.0 с playServiceVersion: 11.6.0 или ниже.

implementation "com.google.firebase:firebase-messaging:$rootProject.ext.playServiceVersion"
implementation "com.google.firebase:firebase-core:$rootProject.ext.playServiceVersion"
implementation "com.firebase:firebase-jobdispatcher-with-gcm-dep:$rootProject.ext.jobdispatcherVersion"

Решение:

Я изменил службы Google на

classpath 'com.google.gms:google-services:3.1.1'

И он поддерживает службы firebase.

Надеюсь, кто-нибудь сэкономит свое время.

person Saveen    schedule 18.11.2017
comment
У меня та же проблема, что и при использовании playServiceVersion в качестве реализации 11.4.0 com.google.firebase: firebase-core: 11.4.0, измените ее на реализацию com.google.firebase: firebase-core: 11.6.2 исправила мою проблему. Поэтому, пожалуйста, проверьте зависимость версии для разных библиотек - person durgeshtrivedi; 15.12.2017

  1. Давать возможность

    defaultConfig {multiDexEnabled true}

  2. Если шаг 1 не работает, тогда

    Перейдите к структуре проекта и узнайте, какая внешняя библиотека использует другую версию. Дважды щелкните по нему и удалите его jar-файл. Закройте проект и снова откройте его. Студия Android восстановит проект. Проблема должна исчезнуть.

person Abhisek Mallick    schedule 12.01.2018
comment
+1 - у меня была поддержка lib, rxjava и сторонняя зависимость (13k строк). Мои глаза чуть не вылезли, когда я увидел счет метода. - person snodnipper; 13.02.2018

Одна из возможностей: наличие одной и той же библиотеки, но с разными версиями в зависимостях.

У меня была эта проблема со следующими строками в файле gradle:

  • compile fileTree(include: ['*.jar'], dir: 'libs')
  • compile 'com.google.code.gson:gson:2.8.2'

Библиотека gson находилась в моем каталоге libs, но с предыдущей версией. Я удалил gson-2.3.1.jar из каталога libs, и все вернулось к норме.

person Philippe Grain    schedule 28.12.2017
comment
удаление compile fileTree(include: ['*.jar'], dir: 'libs') исправлено и для меня .. спасибо (у) - person Dinuka Salwathura; 12.05.2018

Если эта ошибка возникла у вас после включения поддержки kotlin и ни одно из других решений не работает, попробуйте изменить зависимость kotlin модуля приложения build.gradle на:

implementation ("org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version") {
    exclude group: 'org.jetbrains', module: 'annotations'
}

Это работает для меня в Android Studio 3.0 Beta 6. См. этот ответ для дальнейшего объяснения.

person aksh1618    schedule 02.10.2017
comment
Да, похоже, что введение Kotlin может нарушить сборку, если не исключить аннотации. - person Stoycho Andreev; 23.02.2018
comment
Спасибо. Это было исправлением для меня. Я борюсь 3 дня, чтобы определить свою проблему. - person Naveen Kumar M; 09.03.2018
comment
Попробуйте вместо этого перейти на плагин Kotlin версии 1.2.30 (только что выпущенный). Теперь мгновенный запуск тоже можно включить! - person KTCO; 17.03.2018

С стабильной сборкой Android Studio 3.0 Ниже приведены шаги, которые работали для меня:

  1. Зайдите в SdkManager -> Android Sdk -> Sdk Tools и обновите сервисы Google Play до последней версии до 46.
  2. Очистите проект и перестройте проект.
person pulkeet    schedule 27.10.2017

[НЕВОЗМОЖНО MERGE DEX SOLVED] После нескольких часов переполнения стека я решил "UNABLE TO MERGE DEX ERROR"

  1. Обновите все строки com.android.support в вашем gradle до версии 27.1.0

Причина - Android обновил свои библиотеки поддержки до версии 27.1.0, поэтому вам нужно изменить все строки поддержки Android в вашем файле gradle на 27.1.0 с 26.1.0.

  1. Убедитесь, что в разделе репозиториев есть раздел maven с конечной точкой "https://maven.google.com". . Например:

    allprojects {репозитории {jcenter () maven {url "https://maven.google.com"}}}

Причина: - Android не может обновить библиотеки поддержки в диспетчере SDK, и теперь он использует maven.google.com для обновления, поэтому вы должны включить это, чтобы использовать библиотеки поддержки 27.1.0.

После изменения версии: 1. Очистите проект 2. Перестройте проект.

person Taha Ali    schedule 12.03.2018

добавьте команды ниже:

android {
...

    dexOptions {

        jumboMode true
        javaMaxHeapSize "4g"

    }
}
person zyc zyc    schedule 30.10.2017

Установка сервисов Google play (последняя версия) + в том числе

android {
    defaultConfig {
        multiDexEnabled true
        }
}

в build.gradle решил проблему для меня, обязательно очистите и перестройте проект!

person Harmandeep Gill    schedule 21.12.2017

В моем случае это был gson-2.8.1.jar, который я добавил в папку libs проекта. Но ссылка уже была там SDK. Таким образом, не нужно было добавлять gson-2.8.1.jar в папку libs.

Когда я вынул его, проект gson-2.8.1.jar компилировался без этой серьезной ошибки.

Поэтому попробуйте изменить папку libs и зависимости.

person DmitryBoyko    schedule 11.12.2017

Я согласен с Крисом-младшим. Если вы используете Firebase для встраивания своих объявлений AdMob (или даже если вы не используете), play-services-analytics включает play-services-ads, даже если вы не добавляете это как зависимость. Очевидно, что Google допустил ошибку при развертывании 11.4.0, поскольку аналитика включает версию 10.0.1 рекламы, а не 11.4.0 (это показывает подсказка мыши в градиенте).

Я вручную добавил compile 'com.google.android.gms: play-services-ads: 11.4.0' вверху, который работал, но только после того, как я отключил Instant Run: http://stackoverflow.com/a/35169716/530047

Так что либо вернитесь к 10.0.1, либо добавьте рекламу и отключите Instant Run. Вот что я обнаружил, если это поможет.

person Jonathan    schedule 24.09.2017
comment
Упоминал ли OP о Play Services? - person IgorGanapolsky; 25.10.2017
comment
Утвержденный ответ сделал. Если эта проблема возникает без этого сценария, я не знаю! - person Jonathan; 26.10.2017

Я столкнулся с той же проблемой и нашел настоящую причину своего дела. Раньше я также снова пробовал все предыдущие ответы, но это не решало проблему. У меня есть два модуля в моем проекте приложения Wear и build.gradle следующим образом :

модуль износа build.gradle:

implementation project(':common')
implementation files('libs/farmer-motion-1.0.jar')

общий модуль build.gradle:

implementation files('libs/farmer-motion-1.0.jar')

Перед обновлением до Gradle 3.x «реализация» все «компилируется».

Я запускаю gradlew с параметром --stacktrace, чтобы получить трассировку стека, вы можете просто щелкнуть по нему в окне консоли gradle, когда возникнет эта проблема. И обнаружил, что зависимость от пакета jar повторяется:

Caused by: com.android.dex.DexException: Multiple dex files define Lcom/farmer/motion/common/data/pojo/SportSummary$2;

Class SportSummary в пакете farmer-motion-1.0.jar после прочтения официальное руководство по миграции, я изменил свой build.gradle на следующее:

модуль износа build.gradle:

implementation project(':common')
// delete dependency implementation files('libs/farmer-motion-1.0.jar')

общий модуль 的 build.gradle:

api files('libs/farmer-motion-1.0.jar') // change implementation to api

Теперь модуль износа будет зависеть от экспорта farmer-motion-1.0.jar общим модулем. Если не зависит от пакета jar во время выполнения, зависимость "реализация" пакета jar также может быть изменена на compileOnly.

person FarmerLi    schedule 19.01.2018

У меня тоже была проблема.

Я смог решить, изменив compileSdkVersion и targetSdkVersion на последнюю версию.

person akhil as    schedule 03.03.2018

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

person Ifta    schedule 22.03.2018
comment
Это решило мою проблему. Я создавал проект внутренней библиотеки Android, и в его папке libs у меня было два файла jar, один из которых является просто резервной копией другого, но с другим именем файла. - person hopia; 26.03.2018

Возможно, это не ваша проблема, но я получил эту ошибку, когда случайно включил две идентичные (но с разными именами) библиотеки в раздел dependencies {} проекта.

person DontPanic    schedule 10.07.2018

Для меня это было обновление обмена сообщениями firebase в app \ build.gradle:

compile 'com.google.firebase:firebase-messaging:10.0.1'

to

compile 'com.google.firebase:firebase-messaging:11.4.2'
person milamber    schedule 04.11.2017

Одна из возможных основных причин: повторяющиеся временные зависимости, которые не обрабатывались должным образом при импорте многомодульных проектов Android Studio. Проверьте свой список и удалите их. Для меня исправление было буквально таким:

--- a/project/module/build.gradle
+++ b/project/module/build.gradle
@@ -21,5 +21,4 @@ android {
 dependencies {
     implementation project(':upstream-dependency-project')
     implementation 'com.android.support:support-v4:18.0.0'
-    implementation files('libs/slf4j-android-1.6.1-RC1.jar')
 }
person vt.    schedule 27.11.2017

Я выясняю причину этой проблемы для своего проекта. Мне дважды добавляли одну зависимость в build.gradle. Один раз, добавив зависимость, и еще раз, добавив зависимость jar:

compile 'org.achartengine: achartengine: 1.2.0'
...
файлы реализации ('../ achartengine-1.2.0.jar')

после удаления первой строки проблема решена.

person Mansour    schedule 23.01.2018

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

Вот несколько советов по отладке. В этом примере кода com.google.code.findbugs:jsr305:3.0.0 - это библиотека, вызывающая нарушение.

Всегда очищайте и восстанавливайте каждый раз, когда вносите изменения, чтобы проверить свое решение!

  1. Для получения более подробной информации используйте флаг --stacktrace. Он будет жаловаться на класс, погуглите этот класс, чтобы найти библиотеку. Вот как можно настроить Android Studio, чтобы всегда запускать gradle с --stacktrace флагом.

  2. Взгляните на консоль Gradle в Android Studio View > Tool Windows > Gradle Console после сборки

  3. Проверьте наличие повторяющихся зависимостей, запустив ./gradlew -q app:dependencies. Вы можете повторно запускать это каждый раз, когда изменяете свой build.gradle.

  4. В build.gradle

    android {
            ...
            configurations.all {
                resolutionStrategy {
                    // Force a particular version of the library 
                    // across all dependencies that have that dependency
                    force 'com.google.code.findbugs:jsr305:3.0.0'
                }
            }
    }
    
  5. В build.gradle

    dependencies {
        ...
        implementation('com.google.auth:google-auth-library-oauth2-http:0.6.0') {
            // Exclude the library for this particular import
            exclude group: 'com.google.code.findbugs'
        }
    }
    
  6. В build.gradle

    android {
        ...
        configurations.all {
            resolutionStrategy {
                // Completely exclude the library. Works for transitive
                // dependencies.
                exclude group: 'com.google.code.findbugs'
            }
        }
    }
    
  7. Если некоторые из ваших зависимостей находятся в файлах jar, откройте файлы jar и посмотрите, есть ли какие-либо конфликтующие имена классов. Если это так, вам, вероятно, придется пересобрать jar-файлы с новыми именами классов или изучить затенение. .

Еще немного справочной литературы:

person J Wang    schedule 16.02.2018

В моем случае эта проблема возникает из-за библиотеки, библиотека была успешно добавлена ​​в проект, но когда я запускаю свое приложение, она показывает мне эту ошибку. Так что, если это произойдет и с вами, вы можете зайти на github и проверить проблемы или поднять новую проблему. Если вы не нашли решения относительно библиотеки, я предлагаю вам заменить ее.

person Suraj Vaishnav    schedule 24.09.2018

У меня была такая же проблема. Я только что включил Instant Run (он был отключен), и мой проект заработал. Вы можете найти его в-

File->Settings-> Build,Execution,Deployment->Instant Run

В Android Studio 3.5 были удалены Instant Run. См. здесь для справки

person Rasel    schedule 11.03.2019
comment
В пути под названием Build, Execution, Deployment нет Instant Run, ваш ответ не имеет значения. - person Bay; 05.09.2019
comment
@Bay в Android Studio 3.5 Instant Run недоступен. Мой ответ обновлен. - person Rasel; 18.09.2019

К сожалению, ни решения Мишеля, ни Сурагча у меня не сработали.

В конечном итоге мне пришлось просто откатить мой com.google.firebase:firebase-database до версии 10.0.1, поскольку 11.4.0 вызывал предупреждение о несогласованности зависимостей в моем файле gradle приложения.

person Chris - Jr    schedule 23.09.2017

В моем случае я дважды импортирую одну библиотеку android_support, поэтому удаляю ее в каталоге libs и перестраиваю.

person fredzzt    schedule 15.11.2017

попробуйте вот так, у меня работает.

В app / build.gradle:

dependencies {
    ....

    compile project(':grow-notification')

    /** Firebase Start **/
    compile 'com.google.firebase:firebase-messaging:11.4.0'
    compile 'com.firebase:firebase-jobdispatcher:0.6.0'
    /** Firebase End **/
}

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

в то время как в модуле grow-notification / build.gradle:

dependencies {
    ....

    /** Firebase Start **/
    provided 'com.google.firebase:firebase-messaging:11.4.0'
    provided 'com.firebase:firebase-jobdispatcher:0.6.0'
    /** Firebase End **/
}
person ibrothergang    schedule 02.12.2017

В моем случае проблема заключалась в том, что я дважды реализовал одну и ту же библиотеку в своем файле build.gradle. Удаление повторяющейся записи сработало для меня. И даже не нужно было чистить, пересобирать проект.

person Mithun Adhikari    schedule 02.12.2017

У меня сработало простое решение:

  1. Не компилируйте / не реализуйте две версии одних и тех же зависимостей.
  2. Не используйте файл .jar в папке libs вашего проекта, если вы компилируете его прямо из gradle. Вышеупомянутое применимо и здесь.

Затем выберите Очистить и Восстановить проект.

person global_warming    schedule 06.12.2017
comment
Как это узнать? Don't compile/implement two versions of same dependencies. - person DmitryBoyko; 15.12.2017
comment
'com.google.firebase:firebase-messaging:10.0.1' с другой версией 'com.google.firebase:firebase-messaging:11.0.2' или .jar файл в библиотеках с firebase-messaging**-**12.3.2.jar - person global_warming; 15.12.2017

У меня такая же проблема. Я решил это, выполнив чистку, а затем построив проект из меню Android Studio 3.0:

  1. сборка -> чистый проект
  2. build-> перестроить проект
person Community    schedule 09.12.2017
comment
это не помогает - person DmitryBoyko; 11.12.2017

./gradlew :app:assembleStubLiveDebug -debug -stacktrace

Или аналогичный (получить имя задачи (:app:assembleStubLiveDebug) из Android Studio).

person Alex E    schedule 12.12.2017

В большинстве случаев это работает. Меня устраивает . Удачи, если это сработает и для вас.

Шаг 1. В build.gradle (Модуль: приложение) добавьте следующее: defaultConfig {multiDexEnabled true}

Шаг 2: сделайте следующее: Build => Clean Project

Шаг 3: сделайте следующее: Build => Rebuild Project

person vivek yadav    schedule 11.12.2017

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

person Shubhamhackz    schedule 17.12.2017

В моем проекте у меня более двух модулей и SDK, я пробую все предложения или ответы, перечисленные выше, например

  • добавить multiDexEnabled true в defaultConfig
  • Очистить и перестроить проект
  • замена компиляции реализацией
  • обновить все зависимости

Все это работает временно, но когда я открываю структуру проекта (cntrl + altr + shift + s), я обнаружил, что в моем свойстве проекта ничего не будет выбрано, как - - скомпилировать версию SDK, построить версию sdk - во вкусах то же

Я обновляю все это и выполняю чистый и перестраиваемый проект, и это работает для меня.

person Virendra Varma    schedule 26.12.2017

    android {
        defaultConfig {
            multiDexEnabled true
            }
    }

   compile 'com.google.android.gms:play-services:11.0.4'

   compile 'com.google.android.gms:play-services-location:11.0.4'

очистить сборку и построить перестроить

person Keshav Gera    schedule 11.01.2018

После обновления некоторых зависимостей я нашел решения. Мы должны использовать последнюю версию игрового сервиса. В зависимости build.gradle [app].

compile 'com.android.support:multidex:1.0.2'
compile 'com.google.android.gms:play-services:11.8.0'
compile 'com.google.firebase:firebase-core:11.8.0'

В build.gradle [project] мы должны использовать последний плагин Google.

classpath 'com.google.gms:google-services:3.1.1'

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

    android {
    compileSdkVersion 26
    buildToolsVersion '26.0.2'
    defaultConfig {
        applicationId "com.***.user"
        minSdkVersion 17
        targetSdkVersion 26
        versionCode 26
        versionName "1.0.20"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
        vectorDrawables.useSupportLibrary = true

        aaptOptions {
            cruncherEnabled = false
        }

    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
person Md Shihab Uddin    schedule 28.01.2018

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

Для 1 из этих банок мне нужно было исключить классы:

jar {
    exclude('com/files/to/exclude/**')
}
person tonisives    schedule 29.01.2018

В моем случае ошибка заключалась в импорте зависимости:

реализация 'com.firebaseui: firebase-ui: 2.3.0'

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

  • Изменение соответствия к реализации во всем приложении.
  • Изменение testcomplie на testimplementation во всем app.grade
  • Убедитесь, что у меня есть multidexenabled true
  • Обновите compileSdk до 26
  • Удален файл .gradle (найден в проекте), очистите проект и перекомпилируйте

и наконец...

  • Удалена реализация com.firebaseui: firebase-ui: 2.3.0 (поскольку я не использовал ее в своем коде)
person Jmz    schedule 31.01.2018

Может быть дублированная зависимость (возможно, вложенная в другую зависимость). Используйте «gradlew app: dependencies» в командной строке, чтобы проверить все ваши зависимости.

После удаления дубликатов проблема решилась за меня.

person Jacob Lewis    schedule 14.02.2018

Я трачу больше 3 часов на чтение и тестирование всех ответов. Наконец, проблема заключалась в библиотеке "joda time",

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

person Pablo Cegarra    schedule 20.02.2018

    apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.xyz.name"
        minSdkVersion 14
        targetSdkVersion 27
        versionCode 7
        versionName "1.6"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    implementation 'com.android.volley:volley:1.0.0'
    implementation 'com.wang.avi:library:2.1.3'
    implementation 'com.android.support:design:27.1.0'
    implementation 'com.android.support:support-v4:27.1.0'
    implementation 'de.hdodenhof:circleimageview:2.1.0'
    implementation 'com.github.bumptech.glide:glide:3.7.0'
    implementation 'com.theartofdev.edmodo:android-image-cropper:2.6.0'
    implementation 'com.loopj.android:android-async-http:1.4.9'
    implementation 'com.google.firebase:firebase-messaging:11.8.0'
    implementation 'com.felipecsl.asymmetricgridview:library:2.0.1'
    implementation 'com.android.support:recyclerview-v7:27.1.0'
    implementation 'com.github.darsh2:MultipleImageSelect:3474549'
    implementation 'it.sephiroth.android.library.horizontallistview:hlistview:1.2.2'
    implementation 'com.android.support:multidex:1.0.1'
}

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

Примечание: обновите всю вашу библиотеку поддержки до 27.1.0, как указано выше, и удалите дубликаты.

person Ashwin H    schedule 01.03.2018

проверьте версию зависимостей, если они не совпадают, затем сделайте то же самое, что решит вашу проблему

compile 'com.android.support:appcompat-v7:27.0.2'
compile 'com.android.support:recyclerview-v7:27.0.2'
compile 'com.android.support:cardview-v7:27.0.2'
person Nikul Vadher    schedule 07.03.2018

Проверьте, есть ли у вас debugCompile и releaseCompile в build.gradle. Измените его на debugImplementation и releaseImplementation. Вот как я решил это, gradle должен пройти через эти успешно отмеченные инструкции как устаревшие, но внезапно он застрял именно на этих двух.

person Dmytro Nasyrov    schedule 25.03.2018

Убедитесь, что все исходные библиотеки имеют одинаковый номер версии. В моем случае я использовал разные версии API Google. Я использовал 11.6.0 для всех библиотек Google, но 10.4.0 для API Google Place. После обновления API Google Place до 11.6.0 проблема устранена.

Обратите внимание, что мой мультидекс также включен для проекта.

person asish    schedule 03.04.2018

Измените buildToolsVersion на другую версию и синхронизируйте, верните обратно и снова выполните синхронизацию. Он снова будет работать.

person Rodrigo Salomao    schedule 04.05.2018

Если вы используете Firebsae в своем плагине, эта проблема возникнет из-за проблемы с версией игровых сервисов, попробуйте этот `cordov

cordova.system.library.4=com.google.gms:google-services:3.3.0
    cordova.system.library.5=com.google.android.gms:play-services-tagmanager:+
    cordova.system.library.6=com.google.firebase:firebase-core:16.0.1
    cordova.system.library.7=com.google.firebase:firebase-messaging:17.1.0
    cordova.system.library.8=com.google.firebase:firebase-crash:16.0.1
    cordova.system.library.9=com.google.firebase:firebase-config:16.0.0
    cordova.system.library.10=com.google.firebase:firebase-perf:16.0.0 

Измените свой project.properties следующим образом, тогда эта проблема будет решена Справочник

person Ramesh Krishnan    schedule 12.07.2018

Это работает для меня-

Добавьте наконец код в платформы \ android \ build.gradle

configurations.all { 
 resolutionStrategy{
    force 'com.android.support:support-v4:26.0.0'
    }

    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
    def requested = details.requested
    if (requested.group == 'com.android.support') {
       if (!requested.name.startsWith("multidex")) {
      details.useVersion '26.0.0'
     }
   }
  }
}
person Aditya Kumar    schedule 14.01.2019

добавьте это в свой app / build.gradle. Это будет работать

реализация 'com.android.support:design:27.1.0'

person kaushal    schedule 06.05.2019

Просто добавьте ниже в build.gradle,

defaultConfig {multiDexEnabled true}

person abhi.nalavade    schedule 22.05.2019
comment
Спасибо за этот фрагмент кода, который может оказать некоторую немедленную помощь. правильное объяснение значительно улучшило бы его долгосрочную ценность, показав, почему это хорошее решение проблемы и могло бы сделайте его более полезным для будущих читателей, задав другие похожие вопросы. Пожалуйста, отредактируйте свой ответ, чтобы добавить пояснения, включая сделанные вами предположения. - person Dwhitz; 22.05.2019

Этим здесь еще не поделились, так что, надеюсь, это может кому-то помочь.

Переход по этой ссылке решил ту же проблему для меня.

Для начала отмечу, что мне не нужно было устанавливать для multiDexEnabled значение true.

Сначала я установил зависимости в своем pubspec.yaml на

dependencies:
  flutter:
    sdk: flutter
  cloud_firestore: ^0.8.2 

и запустил flutter packages get в моем терминале IDE.

Также мне пришлось изменить минимальную целевую версию SDK:

  1. Откройте android / app / build.gradle, затем найдите строку с надписью minSdkVersion 16.
  2. Измените эту строку на minSdkVersion 21.
  3. Сохраните файл.

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

Мне пришлось открыть android/app/build.gradle, а затем добавить следующую строку в качестве последней строки в файле: apply plugin: 'com.google.gms.google-services'

Затем мне пришлось открыть android/build.gradle, затем внутри тега buildscript добавить новую зависимость:

buildscript {
   repositories {
       // ...
   }

   dependencies {
       // ...
       classpath 'com.google.gms:google-services:3.2.1'   // new
   }
}

После этого мое приложение наконец-то запустилось на эмуляторе Android.

По ссылке есть более полное пошаговое руководство, если вы застряли.

Также следует отметить, что мне не нужно устанавливать для multiDexEnabled значение true.

person Casey Schneider    schedule 24.07.2019

В моем случае следующие работы

implementation 'com.google.android.gms:play-services-ads:17.2.0'
implementation 'com.google.firebase:firebase-core:16.0.9'
implementation 'com.google.firebase:firebase-analytics:16.5.0'
implementation 'com.google.firebase:firebase-messaging:18.0.0'

В моем app модуле. Проблема заключалась в том, что это последняя библиотека firebase-analytics, она не работает должным образом с другими последними библиотеками.

person Mushfiqur Rahman    schedule 25.09.2019

Просто добавьте эту строку в app / build.gradle

defaultConfig {
       multiDexEnabled true 
    }
person Sanjay Mali    schedule 05.07.2020

Зайдите Unity >> Edit Project settings>>player, найдите раздел Minify и выберите вариант Proguard

person raVen    schedule 09.11.2020

Пробовал их все, прежде чем сосредоточиться на зависимостях.

Ниже, где убийцы:

//implementation 'org.apache.httpcomponents:httpcore:4.3.1'
//implementation 'org.apache.httpcomponents:httpmime:4.3.1'

Сейчас работает как задумано.

person czane    schedule 24.01.2018
comment
Вероятно, это должен быть комментарий к ответу от @Mansour. Повторяющиеся ссылки приведут к сбою. Этот ответ сам по себе не предлагает нового понимания этой проблемы. OP уже принял ответ на эту тему, поэтому убедитесь, что ваш ответ объясняет, почему он отличается от других, и имеет такое же высокое качество со ссылками на справочные материалы и подробным объяснением. Некоторые другие ответы на этот вопрос являются действительно хорошими примерами хорошо структурированных публикаций со ссылками. - person Chris Schaller; 25.01.2018

Если вы используете

compile ("org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.1")

вы должны изменить это на

compile ("org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.1"){
    exclude group:'org.apache.oltu.oauth2' , module: 'org.apache.oltu.oauth2.common'
}

Поскольку клиентская библиотека уже содержит общую библиотеку, она создает повторяющуюся запись класса, которая выдает ошибку:

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

person Jens    schedule 12.10.2017

person    schedule
comment
Не могли бы вы уточнить? - person sg7; 18.03.2018
comment
У меня тоже была такая же проблема, но я понял, что решил мою проблему в тот момент, но в будущих обновлениях все может действительно измениться. - person Eben Watts; 24.05.2018