Невозможно объединить 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


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

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, похоже, решили эту проблему.)

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

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

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


Я думаю, что это должна быть первая проверка, прежде чем добавить 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.

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


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


Да, кажется, что введение Kotlin могло сломать сборку, если аннотации не исключены.
— Стойчо Андреев

Спасибо. Это было исправление для меня. Я борюсь 3 дня, чтобы определить мою проблему.
— Навин Кумар М

Попробуйте вместо этого перейти на плагин Kotlin версии 1.2.30 (только что выпущенный). Теперь Instant Run можно снова включить!
— KTCO


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"

    }
}

4

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

android {
    defaultConfig {
        multiDexEnabled true
        }
}

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


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» .


2

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

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


2

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


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

2

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


1

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

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

в

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

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

1

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

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

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


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 и проверить проблемы или поднять новую проблему. Если вы не нашли решения относительно библиотеки, я предлагаю вам заменить ее.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.