Неможливо об'єднати 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
}

Мій додаток:

    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


6
Якщо хтось отримує таку ж проблему в стабільній версії Android Studio 3.0, я настійно рекомендую вам переглянути відповідь stackoverflow.com/questions/46949761/… і побачити, чи може вам це допомогти.
Bhavesh Patadiya

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
той же isse з com.google.android.gms: play-services-location: 11.6.0 ... це
невірне

3
Це рішення працювало для мене, коли у мене виникли проблеми сумісності з використанням бібліотек Google Analytics. У AS переглядайте панель навігатора проектів Android на "Проект", ви повинні побачити "Зовнішні бібліотеки", якщо розгорнути зовнішні бібліотеки, ви побачите всі банки та модулі, які використовуються для складання проекту. Це має допомогти вам визначити несумісні комбінації модулів.
сердитийТіг

3
Якщо вищезгаданий код не працює у випадку "compileSdkVersion 26", спробуйте це. Налаштування | Збірка, виконання, розгортання | Миттєвий запуск та спробуйте увімкнути / вимкнути
Sumit Saxena

325

Я спробував усе вищесказане, і жодне з них не допомагає. нарешті, я знаходжу цю роботу для мене:

app / build.gradle:

android {
    defaultConfig {
       multiDexEnabled true
    }
}

11
Дякую. Я думаю, що проблема полягала в тому, що більшість відповідей не враховують включення файлів JAR з інших джерел, які ви не можете відновити. здається, що multiDex дозволяє комбінувати інакше несумісний код.
Брендон Уотлі

2
Це рішення працювало для мене, але крім того, мені довелося чітко включити мультидекс для API <= 21 developer.android.com/studio/build/multidex.html
hamou92

2
DESPite є більш релевантною, ніж прийнята відповідь, я все одно отримую повідомлення "Неможливо об'єднати 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'

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

Дивіться коментарі нижче для інших подібних ситуацій.


1
Дякую, це вирішило проблему для мене. Спочатку це було додано eu.inloop: androidviewmodel: 1.3.4
lsrom

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, а не компілювати

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

Сподіваюся, це допоможе!


2
Дякую, все, що мені потрібно було зробити, це змінити компіляцію на реалізацію, і вона склалася успішно, не потрібно було виконувати інші кроки. Збірка почалася невдало після того, як я оновив SDK у Facebook
Шайно

2
Працювали для мене - розуміння, чому?
Олексій

1
Папка для видалення повинна бути, .gradleа не./gradle
Гері Бак,

1
Єдина відповідь, яка насправді працювала на мене. Дякую!
Майкл Річардсон

1
Дякую, це найкрутіша відповідь. Це має бути вгорі пошуку. Працювали для мене.
Небезпека

27
  1. Видаліть .gradleкаталог.

  2. Запустіть додаток ще раз.

Примітки

  • .gradleКаталог знаходиться в кореневій папці проекту. (Можливо, вам доведеться спочатку показати приховані файли.)
  • Це потрібно робити щоразу, коли я оновлюю модуль залежності за допомогою Android 3.0. (Більше останні випуски Android Studio 3, здається, вирішили проблему.)

4
це допомогло мені, коли я також зробив недійсний кеш і перезапустив
Василь Федотов

Я був у невірі, коли це вирішило мою проблему .. Я спробував оновити все, видаливши всі ключові слова компіляції, оновивши декілька підозрюваних версій ilb .. коли я нарешті це зробив, це спрацювало ..
hanzolo

Ти врятував мені життя! Спасибі
Masterfego

24

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

Зауважте, що для того, щоб побачити .gradle, вам потрібно перейти до подання "Проект" у навігаторі зліва вгорі:

Перехід до перегляду проекту


23

Я намагався будь-яке інше рішення, але ніхто не працював на мене. Зрештою, я вирішив це, використовуючи ту саму версію залежності, редагуючи build.gradle. Я думаю, що ця проблема виникає при додаванні бібліотеки в gradle, яка використовує різні версії залежності бібліотек підтримки або google.

Додайте наступний код до файлу gradle 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
спробував усі інші рішення, врешті-решт, це лише допомогло: /
Анте-

@Ali Gurelli Дякую вам дуже багато, я спробував багато рішень, але тільки ця робота.
Біпін Бхарті

Дякую, але для мене я використовую
деталі версії.useVersion

Дякуємо за рішення. Зі мною трапилось те саме питання. google tap і оплата становила 10.0.0, а всі залишки на останній версії
R World

Працював плавно завдяки
Sankalp

14

якщо (1. Спробуйте очистити та відновити роботу), тоді добре

інакше, якщо (2. Спробуйте зняти роботи з граді), тоді добре

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 додаток: 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

Просто для додання до вищезазначених рішень:

Переконайтеся, що у вас немає дублікатів залежностей, що вказують на різні їх версії в декількох місцях (або навіть у одному файлі).


Я думаю, що це слід спочатку перевірити, перш ніж додати true multiDexEnabled, та спробувати інші відповіді. Дякую!
Олександр А

11

Привіт, я ж питання випробував майже все. Отже, нарешті я вирішив після 6 годинної боротьби, налагоджуючи все по черзі.

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

Google-сервіси 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" виправлено мій проблема . Тому, будь ласка, перевірте залежність версії для різних lib
durgeshtrivedi

9
  1. Увімкнути

    defaultConfig {multiDexEnabled true}

  2. Якщо крок 1 не працює, тоді

    Перейдіть до структури проекту та знайдіть зовнішню бібліотеку, яка використовує іншу версію. Двічі клацніть по ній і видаліть файл jar. Закрийте проект і відкрийте знову, андроїд-студія відновить проект. Проблеми не повинно бути.


+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')зафіксовано і для мене .. дякую (у)
Dinuka 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. Див. Цю відповідь для подальшого пояснення.


Так, здається, що введення Котліна може порушити складову, якщо анотації не будуть виключені.
Стойчо Андрєєв

Дякую. Це було виправданням для мене. Я борюся 3 дні, щоб визначити свою проблему.
Naveen Kumar M

Спробуйте оновити плагін Kotlin до версії 1.2.30 (тільки що вийшов). Тепер миттєвий запуск також можна ввімкнути ще раз!
КТКО 17.03.18


5

[UNABLE TO MERGE DEX SOLVED] Після кількох годин переповнення стека я вирішив "UNABLE TO MERGE DEX ERROR"

  1. Оновіть всі рядки com.android.support у вашому градусі до v27.1.0

Причина - Android оновив бібліотеки підтримки до v27.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 включає в себе рекламні ігри-послуги, навіть якщо ви не додаєте це як залежність. 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, або додавання реклами та відключення миттєвого запуску. Це я знайшов, якщо це допомагає.


Чи згадував ОП 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')

Перед оновленням до 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;

Клас 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" .


2

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

Мені вдалося вирішити, змінивши compileSdkVersionта targetSdkVersionостанню версію.


2

Для нашого проекту ми випадково два рази додали ту саму банку з різною назвою. Видалення одного з них вирішило проблему.


Це вирішило моє питання. Я будував внутрішній проект бібліотеки для Android, і під його libsпапкою у мене було два файли jar, один з яких - це резервне копіювання іншого, але з іншим ім’ям файлів.
hopia

2

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


1

Для мене це було оновлення повідомлень Firebase в застосунку \ 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-студію, щоб завжди запускати gradle з --stacktraceпрапором .

  2. Погляньте на консоль Gradle в студії Android 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.