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