Android Studio 3.0 Execution ล้มเหลวสำหรับงาน: ไม่สามารถผสาน dex ได้


87

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'

โซลูชันใด ๆ

แก้ไข: ฉันได้ทำตัวอย่างผ่านไซต์ github firebase และแก้ไขแล้ว


คุณต้องรวมการสนับสนุน multiDex ไว้ในแอปของคุณ
Sudheesh R

และลองทำความสะอาดสร้างโครงการของคุณใหม่
Sudheesh R

ฉันขอแนะนำให้คุณแก้ไขคำถามของคุณและโพสต์ผลลัพธ์ทั้งหมดของคอนโซล Gradle ของคุณไม่ใช่แค่บรรทัดเดียว รายละเอียดของปัญหาของคุณอยู่ที่อื่นในผลลัพธ์
CommonsWare

@CommonsWare ฉันโพสต์ข้อผิดพลาดทั้งหมดของฉัน .. มันเป็นเพียงสองบรรทัดเท่านั้น
Anguraj

2
พยายามปิดใช้งานการรันทันทีล้างโปรเจ็กต์ของคุณและเพิ่ม android {defaultConfig {multiDexEnabled true}}
Tara

คำตอบ:


66

สำหรับโครงการที่ใช้ Cordova ให้เรียกใช้cordova clean androidก่อนสร้างอีกครั้งตามที่@mkimmetแนะนำ


1
ใครบางคนโปรดทำเครื่องหมายคำตอบนี้ถูกต้อง มันช่วยแก้ปัญหาได้
pamekar

2
สำหรับฉันการติดตั้ง 'Cordova-plugin-androidx' และ 'cordova-plugin-androidx-adapter' ช่วยแก้ปัญหาได้
ssz

58

ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณเพิ่มไลบรารีภายนอกซึ่งอาจเข้ากันไม่ได้กับcompileSdkVersionไฟล์.

ระมัดระวังเมื่อคุณเพิ่มexternal libraryไฟล์.

ฉันใช้เวลา 2 วันกับปัญหานี้และในที่สุดก็แก้ไขได้ตามขั้นตอนเหล่านี้

  • ตรวจสอบให้แน่ใจทุกห้องสมุดการสนับสนุนของคุณเช่นเดียวกับcompileSdkVersionคุณในกรณีของฉันมันเป็นbuild.gradle(Module:app)26ใส่คำอธิบายภาพที่นี่

  • ในหมวดหมู่ defaultConfig ประเภทmultiDexEnabled จริง นี่คือส่วนสำคัญmultiDexEnabled True image

  • ไปที่ไฟล์ | การตั้งค่า | สร้างการดำเนินการการปรับใช้ | Instant Runและลองเปิด / ปิดการใช้งาน Instant Run เพื่อ hot swap ... แล้วคลิกตกลง เปิดใช้งาน Instant Run เป็น Hot swap ... Image

  • Sync โครงการของคุณ

  • สุดท้ายไปที่Build | คลิกที่สร้างโครงการ

  • หมายเหตุ: สร้างโครงการใหม่ก่อนทำความสะอาดแล้วจึงสร้างโครงการ


มันเป็นประโยชน์กับฉันขอบคุณ
Sumit Saxena

ดีใจที่ได้ยินเช่นนั้น. มีความสุขกับ Androiding
Niamatullah Bakhshi

1
@YajliMaclo เยี่ยม!
Niamatullah Bakhshi

48

ลองเพิ่มสิ่งนี้ใน gradle

    android {
      defaultConfig {
        multiDexEnabled true
        }
   }

คุณพยายามทำให้แคชใน Android Studio เป็นโมฆะหรือไม่? @Anguraj
Ishan Fernando

ไม่ใช่ขั้นตอนเดียวในการเปิดใช้งาน multidex ยังไม่จำเป็นในระดับ API ที่ใหม่กว่า
OneCricketeer

25

ความละเอียด:

อ้างถึงลิงค์นี้ : เนื่องจากมีตัวเลือกมากมายในการปิดคำเตือนขึ้นอยู่กับminSdkVersion จึงตั้งค่าไว้ต่ำกว่า 20 :

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

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

หากคุณมีminSdkVersion มากกว่า 20ในชุด build.gradle ของคุณให้ใช้สิ่งต่อไปนี้เพื่อปิดคำเตือน:

  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 บันทึกวันของฉัน
Atif

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 ก่อนที่จะรันโค้ด


1
ฉันเปลี่ยน minSdkVersion ก็เพียงพอแล้ว
Mr Special

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
}

เท่านั้นที่ใช้ได้ผลสำหรับฉัน ฉันไม่จำเป็นต้องเพิ่มแรง = จริง
Paulo Linhares - Packapps

1

ตรวจสอบให้แน่ใจว่าแอปของคุณเป็นคลาสย่อยของ MultiDexApplication

import android.support.multidex.MultiDexApplication

class App : MultiDexApplication()

หรือถ้าไม่ใช่คลาสแอปพลิเคชันย่อยให้เพิ่มใน AndroidManifest.xml

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

0

คุณอยู่ระหว่างการอัปเดต SDK หรือแพลตฟอร์ม? ถ้าใช่กรอกข้อมูลเหล่านั้นให้ครบถ้วนแล้วลองดำเนินการต่อ โดยปกติฉันจะอัปเดตแพ็กเกจแต่ละแพ็กเกจที่จำเป็นต้องอัปเดตเนื่องจากการอัปเดตทั้งหมดซึ่งอาจเพิ่มขึ้นถึง 2.5 GB ในบางครั้ง การอัปเดตที่สมบูรณ์นี้บางครั้งล้มเหลว ฉันมีการอัปเดต SDK หลายครั้งเมื่อฉันอัปเกรดเป็น Android Studio 3.0 และได้รับข้อผิดพลาดข้างต้นเนื่องจากไม่ได้อัปเดตแพ็คเกจทั้งหมด เมื่อฉันอัปเดตแพ็คเกจทั้งหมดข้อผิดพลาดข้างต้นก็หายไป


หวังว่าคุณจะล้างหรือทำให้แคชของคุณเป็นโมฆะและรีสตาร์ท Android Studio? สำหรับฉัน Android Studio 3 ดูเหมือนจะมีปัญหาเมื่อเทียบกับเวอร์ชันก่อนหน้า
Vineet Jain

ใครเคยแก้ปัญหานี้? ไม่สามารถผ่านมันไปได้!
68060

0

ในกรณีของฉันเปลี่ยนเวอร์ชันไลบรารี firebase จาก 2.6.0 เป็น 2.4.2 แก้ไขปัญหาได้


0

สำหรับฉันปัญหาคือการใช้ Java 1.8 ในโมดูล แต่ไม่ใช่ในโมดูลแอป ฉันเพิ่มสิ่งนี้ลงในแอป build gradle และใช้งานได้:

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

0

ปัญหาเดียวกัน. ฉันเปิดใช้งาน multidex: defaultConfig {applicationId "xxx.xxx.xxxx" minSdkVersion 24 targetSdkVersion 26 multiDexEnabled จริง

ฉันได้ล้างแคชรัน gradle clean สร้างสร้างใหม่พยายามตรวจสอบให้แน่ใจว่าไม่มีข้อขัดแย้งในไลบรารีที่นำเข้า (ลบการอ้างอิงการส่งผ่านข้อมูลทั้งหมด) และทำการอัปเดตทั้งหมด ยัง:

ข้อผิดพลาด: การดำเนินการล้มเหลวสำหรับงาน ': 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 Version คือ 4.1 และ Android PluginVersion เป็น 3.0.0 จะพบปัญหานี้ จากนั้นฉันดาวน์เกรด Gradle Version เป็น 3.3 Android Android เป็นศูนย์ไม่มีปัญหาดังกล่าว


0

ฉันมีสิ่งนี้เมื่อเวอร์ชัน SDK ที่ร้องขอไม่ตรงกับการอ้างอิง คุณสามารถคลิกเส้นที่ไฮไลต์และแก้ไขปัญหานี้โดยคลิกหลอดไฟสีแดง ไม่จำเป็นต้องค้นหาเวอร์ชันจริงเพียงแค่ให้ IDE คิดออกให้คุณ และเพิ่ม google repo ลงใน maven config


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 ในโปรเจ็กต์และทั้งสองมีพื้นที่เก็บข้อมูล ดังนั้นเราจึงจำเป็นต้องเรียกข้อมูลที่แตกต่างกันด้วยบนที่เก็บเราจำเป็นต้องมีการพึ่งพา dex เพื่อใช้งาน การอัปเดตใหม่ขึ้นอยู่กับ: -

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

ฉันแน่ใจว่าจะแก้ปัญหาของคุณได้อย่างถาวร


การพึ่งพานำไปสู่การไล่ระดับสี
Pradeep Sheoran

0
1) โปรดเพิ่ม multiDexEnabled true
2) หากคุณได้รับข้อผิดพลาดในการคอมไพล์ให้ตรวจสอบระดับแอพ build.gradle weather การอ้างอิงเดียวกันกับเวอร์ชันต่างๆ
3) ลบออกหากคุณพบการอ้างอิงเดียวกัน

android {compileSdkVersion 28 defaultConfig {

    minSdkVersion 17
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}
หวังว่าจะใช้งานได้ดี :) Happy Coding

0

วิธีที่ง่ายที่สุดในการหลีกเลี่ยงข้อผิดพลาดประเภทการดูดคือ:

-Change ไลบรารี combilesdkversion เหมือนกับแอพของคุณ compilesdkversion

- เปลี่ยนเวอร์ชัน supportLibrary ของไลบรารีเช่นเดียวกับ build.gradle (แอป) ของคุณ



0

ฉันยังได้รับข้อผิดพลาดที่คล้ายกัน

ปัญหา :

ใส่คำอธิบายภาพที่นี่

วิธีแก้ไข :

สาเหตุหลักของปัญหานี้ ismultiDex ไม่ได้เปิดใช้งาน ดังนั้นในโครงการ / Android / แอป / build.gradle , เปิดใช้งาน multiDex

สำหรับข้อมูลเพิ่มเติมโปรดดูเอกสาร: https://developer.android.com/studio/build/multidex#mdex-gradle

ใส่คำอธิบายภาพที่นี่


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.