Не вдалося виконати Android Studio 3.0 для завдання: не вдалося об’єднати dex


85

android studio отримував помилку збірки під час виконання збірки з наступним:

Помилка: Помилка виконання для завдання ': app: transformDexArchiveWithExternalLibsDexMergerForDebug'. java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Неможливо об'єднати dex "

Мій додаток: файл build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion '26.0.2'
    defaultConfig {
        applicationId "com.pdroid.foodieschoice"
        minSdkVersion 16
        targetSdkVersion 25
        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.constraint:constraint-layout:1.0.2'
    compile 'com.firebaseui:firebase-ui-auth:2.3.0'

    testCompile 'junit:junit:4.12'
}
configurations.all {
    resolutionStrategy {
        force 'com.android.support:appcompat-v7:26.0.1'
        force 'com.android.support:support-compat:26.0.1'
        force 'com.android.support:support-core-ui:26.0.1'
        force 'com.android.support:support-annotations:26.0.1'
        force 'com.android.support:recyclerview-v7:26.0.1'
    }
}

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

будь-які рішення

Редагувати: я зробив із зразком через сайт firebase github і вирішив


ви повинні включити підтримку multiDex у свій додаток
Sudheesh R,

і спробуйте почистити, перебудувати свій проект
Sudheesh R

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

@CommonsWare я опублікував всю свою помилку .. це лише два рядки.
Ангурадж

2
Спробуйте вимкнути миттєвий запуск, очистіть свій проект і додайте андроїд {defaultConfig {multiDexEnabled true}}
Тара

Відповіді:


65

Для проекту на основі Кордови запустіть cordova clean androidперед збіркою ще раз, як запропонував @mkimmet .


1
Хтось, будь ласка, позначте цю відповідь правильно. Це вирішує проблему.
pamekar

1
Для мене встановлення 'cordova-plugin-androidx' та 'cordova-plugin-androidx-adapter' вирішило проблему
ssz

57

Ця помилка трапляється, коли ви додаєте зовнішню бібліотеку, яка може бути несумісною з вашою compileSdkVersion.

Будьте обережні, додаючи external library.

Я витратив 2 дні на цю проблему, і нарешті її вирішили, виконавши ці дії.

  • Переконайтесь, що всі ваші бібліотеки підтримки такі ж, як compileSdkVersionі build.gradle(Module:app)у моєму випадку 26.введіть тут опис зображення

  • У вашій категорії defaultConfig введіть multiDexEnabled true . Це важлива частина.multiDexEnabled Справжнє зображення

  • Перейдіть до Файл | Налаштування |Збірка, виконання, розгортання | Миттєвий запуск та спробуйте увімкнути / вимкнути миттєвий запуск для гарячої заміни ... та натисніть гаразд Увімкнути миттєвий запуск для гарячої заміни ... Зображення

  • Sync Ваш проект.

  • Нарешті, перейдіть до Build | натисніть на Відновити проект .

  • Примітка: Rebuild Project спочатку очищає, а потім створює проект.


мені корисно, дякую.
Суміт Саксена

радий це чути. Щасливого Androiding.
Ніаматулла Бахші

1
@YajliMaclo чудово!
Ніаматулла Бахші,

47

Спробуйте додати це у gradle

    android {
      defaultConfig {
        multiDexEnabled true
        }
   }

Ви намагалися зробити недійсною кеш-пам’ять в андроїд-студії? @Anguraj
Fernando

Не єдиний крок для увімкнення мультидексу. Також не потрібен на новіших рівнях API
OneCricketeer

25

Дозвіл:

Зверніться до цього посилання : Оскільки існують різні варіанти відключення попередження залежно від minSdkVersion, воно встановлюється нижче 20 :

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

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

Якщо у вашому наборі build.gradle minSdkVersion більше 20, використовуйте наступне, щоб вимкнути попередження:

  android {
      defaultConfig {
          ...
          minSdkVersion 21 
          targetSdkVersion 26
          multiDexEnabled true
      }
      ... }

Оновіть залежності таким чином:

     dependencies {
        implementation 'com.android.support:multidex:1.0.3'
     }

Знову ж таки, єдина різниця - це ключові слова в залежностях:

minSdkVersion нижче 20: використовуйте компіляцію

minSdkVersion вище 20: використовуйте реалізацію

  1. Сподіваюсь, це було корисним. Проголосуйте, якщо це вирішило вашу проблему. Дякуємо за ваш час.
  2. Також для отримання додаткової інформації про те, чому це відбувається , будь ласка, прочитайте перший абзац у посиланні, він буде детально пояснити, чому? і що означає це попередження.

24

Просто спробуйте виконати "Збірка -> Чистий проект". Це вирішило проблему для мене.


5
Дякую, це спрацювало для мене в проекті Ionic / Cordova, запустивши cordova clean android, тоді як у мене також був встановлений плагін cordova-android-support-gradle-release.
mkimmet

Любіть, коли щось просте виправляє речі !! Дякую!
tonejac

Це виправлено для мене під час роботи з React Native.
Michael Auderer

Дякую, це найпростіше рішення для цієї проблеми. Я витратив свої 3 дні, щоб вирішити цю проблему, і ваша відповідь вирішує всі мої проблеми. Ще раз дякую, брате !!!
gautamsinh mori

Дякую. Допоміг мені на Android Studio 4.1. Врятував мій день.
Атіф

7

Для мене додавання

multiDexEnabled true

і

packagingOptions {
        exclude 'META-INF/NOTICE' 
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/notice'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/license'
        exclude 'META-INF/license.txt'
    }

у файл додатка Build.gradle вирішив проблему


5

Перейдіть до build.gradleфайлу рівня модуля та додайте наступні рядки до коду

    defaultConfig {
        ...
        minSdkVersion 15 
        targetSdkVersion 28
        multiDexEnabled true
    }
    ...
}

dependencies {
  implementation 'com.android.support:multidex:1.0.3'
}

Це вирішило проблему легко. Перевірте цю документацію


4

Використовуйте multiDexEnabled true, як показано нижче.

{
 minSdkVersion 17
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}

і

implementation 'com.android.support:multidex:1.0.3'

це Рішення спрацювало для мене.


4

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

Ось рішення, яке працювало для мене - скопіюйте цей код у файл app \ build.gradle

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support' && requested.name != 'multidex') {
            details.useVersion "${rootProject.ext.supportLibVersion}"
        }
    }
}

Перед запуском коду обов’язково запустіть gradlew clean


Я змінив minSdkVersion, цього досить
містер Спеціальний

2

Те саме трапилось зі мною, з’ясувавши, що я був посеред оновлення до AS 3.0.1, і після того, як я зробив оновлення, очистив і відновив додаток, все було виправлено.


2

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

від цього :

compile('com.google.android.gms:play-services-gcm:+') {
    force = true
}

До цього :

compile('com.google.android.gms:play-services-gcm:11.8.0') {
    force = true
}

Тільки це працювало на мене. Мені не потрібно було додавати force = true
Пауло Лінхарес - Пакети

1

Також переконайтеся, що ваш додаток підкласує MultiDexApplication

import android.support.multidex.MultiDexApplication

class App : MultiDexApplication()

або якщо не підкласує клас Application, додайте до AndroidManifest.xml

<application
  android:name="android.support.multidex.MultiDexApplication"

0

Ви знаходитесь між SDK або оновленнями платформи? Якщо так, заповніть їх повністю, а потім спробуйте продовжити. Зазвичай я оновлюю окремі пакети, які потрібно оновити, щоб взяти все оновлення, яке іноді може досягати 2,5 Гб. Виконання цього повного оновлення іноді не вдається. Після оновлення до Android Studio 3.0 у мене було кілька оновлень SDK, і з’явилася вищевказана помилка, оскільки всі пакети не були оновлені. Як тільки я оновив усі пакети, вищезазначена помилка зникла.


Сподіваємось, ви очистили або втратили чинність кеш-пам’яті та перезапустили Android Studio? Для мене Android Studio 3 здається помилковим порівняно з попередніми версіями.
Vineet Jain

хто-небудь коли-небудь це виправляв? не можу обійти це!
68060,

0

У моєму випадку зміна версії бібліотеки Firebase з 2.6.0 на 2.4.2 виправила проблему


0

Для мене проблемою було використання Java 1.8 в модулі, але не в модулі програми. Я додав це у програму побудови програм і працював:

android{
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

0

Та сама проблема. Я увімкнув multidex: defaultConfig {applicationId "xxx.xxx.xxxx" minSdkVersion 24 targetSdkVersion 26 multiDexEnabled true

Я очистив кеш, запустив gradle clean, rebuild, make, спробував переконатись у відсутності конфліктів в імпортованих бібліотеках (видалив усі перехідні залежності) та зробив всі оновлення. Ще:

Помилка: Помилка виконання для завдання ': app: transformDexArchiveWithExternalLibsDexMergerForDebug'. java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Неможливо об'єднати dex

Виявляється, побудова не сподобалася: реалізація 'org.slf4j: slf4j-android: 1.7.21'


0

Коли версія Android Studio - 3.0.1, Gradle - 4.1 і Android PluginVersion - 3.0.0, вона зіткнеться з цією проблемою. Тоді я знижую версію Gradle до версії 3.3, Android Android дорівнює нулю, такої проблеми немає.


0

У мене це було, коли запитувана версія SDK не відповідала залежностям. Ви можете клацнути виділену лінію та виправити це, натиснувши червону лампочку. Не потрібно знаходити фактичну версію, просто нехай IDE розбере це для вас. І додайте google repo до конфігурації maven.


0

Я отримував ту саму помилку, і в моєму випадку помилку було усунуто, коли я виправив помилку збірки, яка була пов'язана з іншим варіантом збірки, ніж той, який я наразі будував.

Я будував варіант збірки, на який я дивився чудово, без помилок, але спроба налагодження спричинила app:transformDexArchiveWithExternalLibsDexMergerForDebugпомилку. Після того, як я перейшов на створення іншого варіанту збірки, я виявив свою помилку в процесі збірки і виправив її. Здавалося, це вирішило мою app:transformDexArchiveWithExternalLibsDexMergerForDebugпроблему для всіх варіантів збірки.

Зверніть увагу, що ця помилка була не у згаданому зовнішньому модулі, а в окремому наборі джерел варіанту збірки, який посилався на зовнішній модуль. Сподіваюся, це корисно для когось, хто може бачити такий самий випадок, як я!


0

Я зробив і вирішив цю проблему, просто виконуючи цю роботу в моєму коді

Відкрити -> build.gradle Змінити значення з

compile 'com.google.code.gson:gson:2.6.1'

до

compile 'com.google.code.gson:gson:2.8.2'

0

Щоб видалити цю проблему Dex, просто застосуйте одну залежність. Ця проблема виникає, коли ми використовуємо кілька різних служб з одного сервера. Припустимо, ми використовуємо рекламу та Firestore у проекті, і обидва мають сховище maven. тому нам потрібно викликати різні дані за допомогою репозиторію, для реалізації якого нам потрібна залежність dex. Нова залежність оновлення: -

 implementation 'com.android.support:multidex:1.0.3'

Я впевнений, що це вирішить проблему назавжди


його залежність поклала це на градацію
Прадіп Шеоран,

0
1) Будь ласка, додайте multiDexEnabled true
2) якщо ви отримуєте помилку компіляції, перевірте рівень додатка build.gradle, якщо однакові залежності реалізовані в різних версіях.
3) Видаліть одну, якщо виявите однакові залежності.

android {compileSdkVersion 28 defaultConfig {

    minSdkVersion 17
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}
сподіваюся, це добре працює :) Щасливе кодування

0

Найпростіший спосіб уникнути таких помилок:

-Змінити бібліотеку combilesdkversion так само, як і вашу програму compilesdkversion

-Змінити версію підтримки бібліотеки бібліотеки такою ж, як і ваша build.gradle (програма)


0

Це те, що працює для мене. чисто підготуватися і бігти.

cordova clean android;
ionic cordova prepare andriod;
ionic cordova run andriod;

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


0

Я також отримав подібну помилку.

Проблема :

введіть тут опис зображення

Рішення :

Основною основною причиною цієї проблеми є multimex, не ввімкнено. Таким чином , в / Android / додаток / build.gradle проекту , включити multiDex

Для отримання додаткової інформації зверніться до документації: https://developer.android.com/studio/build/multidex#mdex-gradle

введіть тут опис зображення


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.