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

307

У меня есть 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
}

Мой app gradle:

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

____________finding_________

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

Parad0X
источник
6
Если у кого-то возникла такая же проблема в стабильной версии Android Studio 3.0, я настоятельно рекомендую вам ознакомиться с ответом stackoverflow.com/questions/46949761/… и посмотреть, поможет ли он вам.
Бхавеш Патадия
1
У меня была та же самая проблема, и я следовал за каждым методом, который упомянут на этой странице, но не помог мне, поэтому я иду к gradle и держу курсор на каждой библиотеке, чтобы проверить, доступна ли их новая версия или нет. те, у кого новая версия, поэтому я обновился, синхронизировал gradle и запускаю. это сработало.
Шахзад Африди,

Ответы:

293

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

  1. чистый
  2. перестраивать
Зохиджон Акбаров
источник
Вы только задержите реальную проблему с этим решением. вероятно, версия 11.4.0 содержит меньше методов. Смотрите мой ответ ниже. вы получите эту ошибку в следующей зависимости, которую вы добавите, я думаю
itzhar
2
Это решает мою проблему, где multiDexEnabled trueне один
Юрий Бриганс
28
То же самое с com.google.android.gms: play-services-location: 11.6.0 ... это
неверное
3
Это решение работало для меня, когда у меня была проблема совместимости с использованием библиотек Google Analytics. В AS просмотрите панель навигатора проекта Android как «Проект», вы должны увидеть «Внешние библиотеки», если вы развернете внешние библиотеки, вы увидите все jar-файлы и модули, использованные для компиляции проекта. Это должно помочь вам определить несовместимые комбинации модулей.
angryITguy
3
Если приведенный выше код не работает в случае «compileSdkVersion 26», попробуйте это. Перейти к - build.gradle (Модуль: приложение) - добавить «multiDexEnabled true» в категорию defaultConfig и последний шаг Перейти к файлу | Настройки | Сборка, выполнение, развертывание | Мгновенный запуск и попробуйте включить / отключить
Sumit Saxena
325

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

Приложение / build.gradle:

android {
    defaultConfig {
       multiDexEnabled true
    }
}
itzhar
источник
11
Спасибо. Я думаю, что проблема заключалась в том, что большинство ответов не учитывают включение файлов JAR из других источников, которые вы не можете восстановить. Кажется, что multiDex позволяет комбинировать несовместимый код.
Брендон Уэйтли
2
Это решение работало для меня, но, кроме того, мне пришлось явно включить multidex для API <= 21 developer.android.com/studio/build/multidex.html
hamou92
2
Несмотря на то, что я более релевантен, чем принятый ответ, я все еще получаю сообщение «Невозможно объединить dex»
Джон
13
Не работал для меня С этим изменением я получил другую ошибку: «Ошибка выполнения задачи»: app: transformClassesWithMultidexlistForDebug
Atul
1
Да, в течение 5 часов я жил с совершенно разными ответами. Но как-то я понял, что это проблема Multidex и приземлился здесь. Я был правдой. Спасибо человеку
sud007
59

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

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


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

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

и студия предупредила ( в дополнение к проблеме слияния декс ):

Все 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 (см. Здесь для деталей), и обе проблемы (предупреждение и та, что касалась слияния декс) решены :

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'

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

Мир-исмаилиты
источник
1
Спасибо, это исправило проблему для меня. Первоначально это было вызвано добавлением eu.inloop: androidviewmodel: 1.3.4
от
1
Точно, я только хотел бы, чтобы ошибка могла быть более точной
Амин Кешаварзян
1
Большое спасибо. Я была такая же проблема. Я использовал v26, обновился до SDK 27 и решил проблему.
Джонни
2
Это должен быть правильный ответ. Мои сборки перестали работать после добавления одной библиотеки (airbnb / epoxy), которая имела зависимость support:design:26.1.0, и у меня еще не было этой зависимости. Мои другие библиотеки поддержки версии были 27.1.0. После добавления support:designзависимости от 27.1.0версии моя проблема была решена.
Увы,
2
Спасибо. Ты спас мой день.
Nithinjith
37

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

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

В Gradle: 3.0 компиляции конфигурации теперь устарели и должны быть заменены реализации или API . Более подробную информацию вы можете прочитать здесь. Вы можете прочитать официальные документы в Gradle Build Tool.

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

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

просто замените compile на реализацию , 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, вам нужно переключиться на представление «Project» в навигаторе вверху слева)
  • Удалите все папки сборки и кеш-память.
  • В меню Build нажмите кнопку « Очистить проект» .
  • После завершения задачи нажмите кнопку « Перестроить проект» в меню «Сборка».

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

Король масс
источник
2
Спасибо, все, что мне нужно было сделать, это изменить компиляцию на реализацию, и она была успешно собрана, не нужно было выполнять другие шаги.
Сборка
2
Работал для меня - понимание почему?
Алекс
1
Папка для удаления должна быть, .gradleа не./gradle
Гари Бак
1
Единственный ответ, который на самом деле работал для меня. Спасибо!
Майкл Ричардсон
1
Спасибо, это самый крутой ответ. Это должно быть в верхней части поиска. Работал на меня.
Опасность
27
  1. Удалить .gradleкаталог.

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

Ноты

  • .gradleКаталог находится в корневой папке проекта. (Возможно, вам придется сначала показать скрытые файлы.)
  • Я должен делать это каждый раз, когда обновляю модуль зависимости с помощью Android 3.0. (Более поздние выпуски Android Studio 3, похоже, решили эту проблему.)
Suragch
источник
4
это помогло мне, когда я также сделал Invalidate Cache и перезапустил
Василий Федотов
Я был в неверии, когда это исправило мою проблему .. я пытался обновить все, удалив все ключевые слова компиляции, обновив несколько подозрительных версий ilb ... когда я наконец сделал это, это сработало ...
hanzolo
Ты спас мне жизнь! Спасибо
Masterfego
24

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

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

Переключиться на вид проекта

Мишель Юнг
источник
23

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

Добавьте следующий код в ваш файл Gradle сборки. Тогда 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'
          }
      }
}
Али Гюрелли
источник
5
перепробовал все остальные решения, в итоге только это помогло: /
Ante
@ Али Гурелли Спасибо большое, я перепробовал много решений, но только эту работу.
Бипин Бхарти
Спасибо, но для меня я использую версию details.useVersion '15 .0.0 '
Elsunhoty
Спасибо за решение. Та же самая проблема произошла со мной. гугл тап и оплата была 10.0.0 и остальные все библиотеки на последней версии
R World
Работал
гладко,
14

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

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

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

android.enableD8 = false

else-> 4. Добавьте multiDexEnabledtrue в свой 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'

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

ДИНА ТАКЛИТ
источник
3
Самый полезный способ для этой проблемы. Здесь я хочу упомянуть, что вы можете использовать 'gradlew app: transformDexArchiveWithExternalLibsDexMergerForDebug --stacktrace' cmd для более подробной информации. Я спас меня, обнаружил, что я должен включить мультидекс. Надеюсь полезно.
панда
13

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

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

Меняя это на:

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

работал.

Шаши
источник
Большое спасибо, это мне очень помогло!
Фил
Так рада найти этот ответ. Спасибо!
callOfCode
12

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

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

разработчик Android
источник
Я думаю, что это должна быть первая проверка, прежде чем добавить multiDexEnabled true и попробовать другие ответы. Спасибо!
Александр А
11

Привет у меня такой же вопрос перепробовал почти все. Итак, наконец, я решил после 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.

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

Saveen
источник
1
У меня та же проблема, что и при использовании playServiceVersion, в качестве реализации 11.4.0 "com.google.firebase: firebase-core: 11.4.0" изменить его на реализацию "com.google.firebase: firebase-core: 11.6.2" исправил мой выпускать Поэтому, пожалуйста, проверьте зависимость версии для разных
библиотек
9
  1. включить

    defaultConfig {multiDexEnabled true}

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

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

Абхисек Маллик
источник
+1 - у меня была поддержка lib, rxjava и сторонняя зависимость (13k строк). Мои глаза почти высунулись, когда я увидел счетчик методов.
snodnipper
6

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

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

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

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

Филипп Грейн
источник
удаление compile fileTree(include: ['*.jar'], dir: 'libs')исправлено для меня тоже .. спасибо (у)
Динука Salwathura
5

Если эта ошибка появилась для вас после включения поддержки 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. Смотрите этот ответ для дальнейшего объяснения.

aksh1618
источник
Да, кажется, что введение Kotlin могло сломать сборку, если аннотации не исключены.
Стойчо Андреев
Спасибо. Это было исправление для меня. Я борюсь 3 дня, чтобы определить мою проблему.
Навин Кумар М
Попробуйте вместо этого перейти на плагин Kotlin версии 1.2.30 (только что выпущенный). Теперь Instant Run можно снова включить!
KTCO
5

С Android Studio 3.0 стабильная сборка У меня сработали следующие шаги:

  1. Перейдите в SdkManager -> Android Sdk -> Sdk Tools и обновите сервисы Google play до последней версии до 46.
  2. Очистить проект и перестроить проект.
Pulkeet Katiyar
источник
5

[НЕВОЗМОЖНО MERGE DEX РЕШЕНО] После нескольких часов переполнения стека я решил «ОШИБКА НЕОБХОДИМОЙ MERGE DEX»

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

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

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

    allprojects {repositories {jcenter () maven {url " https://maven.google.com "}}}

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

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

Таха Али
источник
4

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

android {
...

    dexOptions {

        jumboMode true
        javaMaxHeapSize "4g"

    }
}
Zyc Zyc
источник
4

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

android {
    defaultConfig {
        multiDexEnabled true
        }
}

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

Harmandeep Gill
источник
3

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

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

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

разработчик
источник
3

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

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

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

Джонатан
источник
OP упомянул Play Services?
Игорь Ганапольский
Утвержденный ответ сделал. Если эта проблема всплывает без этого сценария, то я не знаю!
Джонатан
2

Я столкнулся с той же проблемой и нашел реальную причину своего дела. Ранее я также попробовал все предыдущие ответы снова, но это не решило проблему. У меня есть два модуля в моем проекте приложения износа, и 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')

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

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

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

Класс 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 общим модулем. Если не имеет зависимости от пакета банки во время выполнения , « реализация » зависимость пакета банки также может быть изменена на «compileOnly» .

FarmerLi
источник
2

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

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

ахил как
источник
2

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

IFTA
источник
Это решило мою проблему. Я строил проект внутренней библиотеки Android, и в его libsпапке у меня было два jar-файла, один из которых является просто резервной копией другого, но с другим именем файла.
Хопия
2

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

DontPanic
источник
1

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

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

в

compile 'com.google.firebase:firebase-messaging:11.4.2'
milamber
источник
1

Одна из возможных основных причин: дублированные переходные зависимости, которые не были должным образом обработаны при импорте из 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')
 }
Vt.
источник
1

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

скомпилировать 'org.achartengine: achartengine: 1.2.0'
...
файлы реализации ('../ achartengine-1.2.0.jar')

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

Mansour
источник
1

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

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

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

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

  2. Посмотрите на Gradle Console в 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-файлы и посмотрите, есть ли конфликтующие имена классов. Если это так, вам, вероятно, придется пересобрать банки с новыми именами классов или изучить затенение .

Еще немного справочного чтения:

Дж Ван
источник
1
android {
    defaultConfig {
        ...
        minSdkVersion 15 
        targetSdkVersion 26
        multiDexEnabled true
    }
    ...
}

dependencies {
  compile 'com.android.support:multidex:1.0.1'
}
Эбен Уоттс
источник
2
Не могли бы вы уточнить?
sg7
У меня тоже была такая же проблема, но я понял, что решил эту проблему в тот момент, но в будущих обновлениях все может измениться.
Эбен Уоттс
1

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

Сурадж Вайшнав
источник