एंड्रॉइड स्टूडियो 3.0 निष्पादन कार्य के लिए विफल रहा: डेक्स को मर्ज करने में असमर्थ


85

निम्नलिखित के साथ निष्पादन करते समय android स्टूडियो को बिल्ड एरर मिल रहा था:

त्रुटि: कार्य के लिए निष्पादन विफल रहा ': ऐप: 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'

कोई समाधान

संपादित करें: मैंने फायरबेस गितुब साइट के माध्यम से नमूने के साथ किया है और हल किया है


आप अपने एप्लिकेशन में multiDex समर्थन शामिल करने के लिए है
सुधीश आर

और सफाई की कोशिश करो, अपने प्रोजेक्ट का पुनर्निर्माण कर रहे हैं
सुदेश आर

मेरा सुझाव है कि आप अपने प्रश्न को संपादित करें और अपने ग्रेडेल कंसोल के पूरे आउटपुट को पोस्ट करें, न कि केवल एक पंक्ति में। आपकी समस्या का विवरण आउटपुट में कहीं और निहित है।
कॉमन्सवेअर

@CommonsWare मैंने अपनी पूरी त्रुटि पोस्ट की है .. इसकी केवल दो लाइन है।
अंगुरज

2
अपने प्रोजेक्ट को तुरंत चलाने के लिए अक्षम करें और Android {defaultConfig {multiDexEnabled true}} को जोड़ने का प्रयास करें
Tara

जवाबों:


65

कॉर्डोवा आधारित परियोजना के लिए, cordova clean androidनिर्माण से पहले फिर से चलाएं , जैसा कि @mkimmet ने सुझाव दिया है।


1
कोई कृपया इस उत्तर को सही चिह्नित करें। यह समस्या को हल करता है।
pamekar

1
मेरे लिए, 'कॉर्डोवा-प्लगइन-एंड्रॉइडएक्स' और 'कॉर्डोवा-प्लगइन-एंड्रॉइड-एडेप्टर' को स्थापित करने से समस्या हल हुई
ssz

57

यह त्रुटि तब होती है जब आप एक बाहरी पुस्तकालय जोड़ते हैं जो आपके अनुरूप नहीं हो सकता है compileSdkVersion

जब आप जोड़ रहे हैं तो सावधान रहें external library

मैंने इस समस्या पर 2 दिन बिताए और आखिरकार इन कदमों के बाद यह हल हो गया।

  • सुनिश्चित करें कि आपके सभी समर्थन पुस्तकालय मेरे मामले में compileSdkVersionआपके समान हैं ।build.gradle(Module:app)26यहां छवि विवरण दर्ज करें

  • अपने defaultConfig श्रेणी में मल्टीडेक्नेबल ट्रू टाइप करें । यह महत्वपूर्ण हिस्सा है।मल्टीडेक्सेनबल ट्रू इमेज

  • फ़ाइल पर जाएँ | सेटिंग्स | निर्माण, निष्पादन, तैनाती | झटपट चलाएं और गर्म स्वैप के लिए झटपट सक्षम / अक्षम करने का प्रयास करें ... और ठीक पर क्लिक करें त्वरित स्वैप को हॉट स्वैप में सक्षम करें ... छवि

  • Sync आपका प्रोजेक्ट।

  • अंत में, निर्माण करने के लिए जाओ | Rebuild Project पर क्लिक करें ।

  • नोट: प्रोजेक्ट का पुनर्निर्माण पहले साफ़ करता है और फिर प्रोजेक्ट बनाता है।


यह मुझे मददगार है, धन्यवाद।
सुमित सक्सेना

जानकर ख़ुशी हुई की। हैप्पी Androiding।
नियामतुल्लाह बख्शी

1
@YajliMaclo बढ़िया!
नियामतुल्ला बख्शी

47

इसको ग्रेड में जोड़ने का प्रयास करें

    android {
      defaultConfig {
        multiDexEnabled true
        }
   }

क्या आपने एंड्रॉइड स्टूडियो में कैश को अमान्य करने की कोशिश की? @ एंगुराज
ईशान फर्नांडो

मल्टीडेक्स को सक्षम करने के लिए एकमात्र कदम नहीं है। नए एपीआई स्तरों में भी ज़रूरत नहीं है
OneCricketeer

25

संकल्प:

इस लिंक का संदर्भ लें : चूंकि minSdkVersion के आधार पर चेतावनी को बंद करने के लिए कई विकल्प हैं , यह नीचे दिया गया है :

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

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

यदि आपके पास अपने निर्माण में 20 से अधिक minSdkVersion है । चेतावनी सेट को बंद करने के लिए निम्न सेट का उपयोग करें:

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

अद्यतन निर्भरताएँ निम्नानुसार हैं:

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

फिर से एकमात्र अंतर निर्भरता में कीवर्ड है:

20 से नीचे minSdkVersion: संकलन का उपयोग करें

20 से ऊपर minSdkVersion: कार्यान्वयन का उपयोग करें

  1. मुझे उम्मीद है कि यह मददगार था, कृपया अपवोट करें यदि यह आपकी समस्या को हल करता है, तो आपके समय के लिए धन्यवाद।
  2. इसके अलावा अधिक जानकारी के लिए, पर क्यों इस होता है , तो कृपया लिंक में पहले पैराग्राफ पढ़ते हैं, इसे अच्छी तरह से समझा जाएगा क्यों? और इस चेतावनी का क्या मतलब है।

24

बस "बिल्ड -> क्लीन प्रोजेक्ट" करने की कोशिश करें। इससे मेरे लिए समस्या हल हो गई।


5
धन्यवाद यह मेरे लिए एक Ionic / कॉर्डोवा परियोजना में कॉर्डोवा क्लीन एंड्रॉइड चलाकर काम किया, जबकि मैंने कॉर्डोवा -एंड्रॉइड-सपोर्ट-ग्रेड-रिलीज़ प्लगइन स्थापित किया था।
mkimmet

जब कोई साधारण चीज़ ठीक हो जाए तो उसे प्यार करो !! धन्यवाद!
5

रिएक्ट नेटिव के साथ काम करते समय इसने मेरे लिए इसे ठीक कर दिया।
माइकल ऑडर

धन्यवाद, यह इस मुद्दे का सबसे आसान समाधान है, मैंने इस मुद्दे को हल करने के लिए अपने 3 दिन बिताए और आपका जवाब मेरी सारी समस्या को हल करता है। एक बार फिर से शुक्रिया मेरे भाई !!!
गौतमसिंह मोरी

धन्यवाद। एंड्रॉइड स्टूडियो 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

नीचे के रूप में मल्टीडेक्नेबल ट्रू का उपयोग करें।

{
 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

मैंने कई समाधानों की कोशिश की जैसा कि ऊपर उल्लिखित है जिसमें मल्टीडेक्नेबल ट्रू भी शामिल है लेकिन इनमें से किसी ने भी मेरे लिए काम नहीं किया है।

यहाँ समाधान है जो मेरे लिए काम किया है - इस कोड को 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 को क्लीन करना सुनिश्चित करें


मैंने minSdkVersion को बदल दिया, यह पर्याप्त है
श्री स्पेशल

2

मेरे साथ भी यही हुआ, मुझे लगा कि मैं 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
}

केवल वही मेरे लिए काम करता है। मुझे बल = सच्चा जोड़ने की आवश्यकता नहीं थी
पाउलो लिनेरेस - पैकअप्स

1

यह भी सुनिश्चित करें कि आपका ऐप MultiDexApplication को कम कर रहा है

import android.support.multidex.MultiDexApplication

class App : MultiDexApplication()

या यदि एप्लिकेशन क्लास को उप-वर्ग नहीं कर रहा है, तो AndroidManifest.xml में जोड़ें

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

0

क्या आप SDK या प्लेटफ़ॉर्म अपडेट के बीच में हैं? यदि हाँ, वे पूरी तरह से पूरा करते हैं और फिर जारी रखने का प्रयास करते हैं। मैं सामान्य रूप से उन व्यक्तिगत पैकेजों को अपडेट करता हूं जिन्हें संपूर्ण अद्यतन लेने के लिए अपडेट करने की आवश्यकता होती है जो कभी-कभी 2.5 जीबी तक जा सकते हैं। इस पूर्ण अद्यतन को करना कभी-कभी विफल हो जाता है। एंड्रॉइड स्टूडियो 3.0 में अपग्रेड होने के बाद मेरे पास कई एसडीके अपडेट थे और सभी पैकेज अपडेट नहीं होने के कारण उपरोक्त त्रुटि हो रही थी। एक बार जब मैंने सभी पैकेजों को अपडेट किया तो उपरोक्त त्रुटि हो गई।


आशा है कि आपने अपना कैश साफ़ कर दिया है या Android Studio को पुनः आरंभ कर दिया है? मेरे लिए एंड्रॉइड स्टूडियो 3 पिछले संस्करणों की तुलना में छोटी गाड़ी लगता है।
विनीत जैन

किसी ने कभी इसे ठीक किया? यह अतीत नहीं मिल सकता है!
68060

0

मेरे मामले में 2.6.0 से 2.4.2 तक बदलते फायरबेस लाइब्रेरी संस्करण ने समस्या को ठीक कर दिया


0

मेरे लिए, समस्या एक मॉड्यूल में जावा 1.8 का उपयोग थी, लेकिन ऐप मॉड्यूल में नहीं। मैंने इसे एप्लिकेशन बिल्ड ग्रेडेल में जोड़ा और काम किया:

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

0

एक ही समस्या है। मैंने मल्टीडेक्स को सक्षम किया है: defaultConfig {applicationId "xxx.xxx.xxxx" minSdkVersion 24 targetSdkVersion 26 मल्टीडेक्स सक्षम

मैंने कैश को साफ़ कर दिया है, वर्गीकृत स्वच्छ, पुन: निर्माण, बना, आयातित पुस्तकालयों में कोई संघर्ष नहीं करने की कोशिश की है (सभी सकारत्मक निर्भरता को हटा दिया है) और सभी अपडेट किए हैं। फिर भी:

त्रुटि: कार्य के लिए निष्पादन विफल रहा ': ऐप: transformDexArchiveWithExternalLibsDexMergerForDebug'। java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: dex को मर्ज करने में असमर्थ

बिल्ड को पसंद नहीं आया: कार्यान्वयन 'org.slf4j: slf4j-android: 1.7.21'


0

जब एंड्रॉइड स्टूडियो का संस्करण 3.0.1 है, तो ग्रैडल संस्करण 4.1 है और एंड्रॉइड प्लगिन वर्जन 3.0.0 है, यह इस समस्या का सामना करेगा। फिर मैंने ग्रेडड वर्जन को डाउनग्रेड किया 3.3, एंड्रॉइड एंड्रॉइड शून्य है, ऐसी कोई समस्या नहीं है।


0

जब एसडीके संस्करण निर्भरता से मेल नहीं खाता, तो मैंने ऐसा किया था। आप हाइलाइट की गई रेखा को क्लिक कर सकते हैं और लाल बत्ती बल्ब पर क्लिक करके इसे ठीक कर सकते हैं। वास्तविक संस्करण खोजने की आवश्यकता नहीं है, बस आईडीई को आपके लिए यह पता लगाने दें। और maven config में google repo जोड़ें।


0

मुझे एक ही त्रुटि प्राप्त हो रही थी और मेरे मामले में, त्रुटि तब हल हो गई जब मैंने एक बिल्ड त्रुटि तय की जो कि वर्तमान में मेरे द्वारा बनाए जा रहे एक से भिन्न बिल्ड वेरिएंट के साथ संबद्ध थी।

मैं बिल्ड वेरिएंट का निर्माण कर रहा था जिसे मैं बिना किसी त्रुटि के ठीक देख रहा था, लेकिन डीबग करने के प्रयास में app:transformDexArchiveWithExternalLibsDexMergerForDebugत्रुटि हुई। एक बार जब मैंने दूसरे बिल्ड वेरिएंट को बनाने के लिए स्विच किया, तो मैंने बिल्ड प्रोसेस में अपनी त्रुटि पकड़ी और इसे ठीक किया। यह app:transformDexArchiveWithExternalLibsDexMergerForDebugसभी बिल्ड वेरिएंट के लिए मेरे मुद्दे को हल करने के लिए लग रहा था ।

ध्यान दें कि यह त्रुटि संदर्भित बाहरी मॉड्यूल के भीतर नहीं थी, लेकिन एक बिल्ड वेरिएंट के एक अलग स्रोत के भीतर जो बाहरी मॉड्यूल को संदर्भित करता है। आशा है कि जो मेरे जैसे ही मामला देख रहा हो सकता है किसी के लिए उपयोगी है!


0

मैंने अपने कोड में यह काम करके इस मुद्दे को पूरा किया है

Open -> build.gradle से मान बदलें

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

सेवा

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

0

इस डेक्स मुद्दे को हटाने के लिए सिर्फ एक निर्भरता को लागू करें। यह समस्या तब होती है जब हम एक ही सर्वर से कई अलग-अलग सेवा का उपयोग कर रहे हैं। मान लीजिए कि हम किसी प्रोजेक्ट में विज्ञापनों और फायरस्टार का उपयोग कर रहे हैं और दोनों के पास रिपॉजिटरी मैवेन है। इसलिए हमें रिपॉजिटरी के साथ विभिन्न डेटा को कॉल करने की आवश्यकता है जिसे लागू करने के लिए हमें डेक्स निर्भरता की आवश्यकता है। नया अपडेट निर्भरता: -

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

मुझे यकीन है कि यह आपके मुद्दे को स्थायी रूप से हल कर देगा


इसकी निर्भरता ने इसे ढाल में डाल दिया
प्रदीप श्योराण

0
1) कृपया MultDexEnabled सच जोड़ें
2) यदि आपको संकलन त्रुटि मिलती है, तो अपने ऐप के स्तर की जांच करें। उन्नत मौसम समान निर्भरताएं विभिन्न संस्करणों के साथ कार्यान्वित की जाती हैं।
3) एक को हटा दें यदि आप एक ही निर्भरता पाते हैं।

Android {compileSdkVersion 28 defaultConfig {

    minSdkVersion 17
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}
आशा है कि यह ठीक काम करता है :) हैप्पी कोडिंग

0

इस तरह की त्रुटि से बचने का सबसे आसान तरीका है:

-अपने app compilesdkversion के रूप में पुस्तकालय combilesdkversion के रूप में बदलें

-अपने build.gradle (app) के रूप में एक ही पुस्तकालय के समर्थन संस्करण बदलें


0

मेरे लिए यही काम करता है। स्वच्छ तैयारी करें और चलाएं।

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

आशा करता हूँ की ये काम करेगा।


0

मुझे भी ऐसी ही त्रुटि मिली।

समस्या :

यहां छवि विवरण दर्ज करें

समाधान :

इस समस्या के लिए मुख्य मूल कारण ismultiDex सक्षम नहीं है। तो प्रोजेक्ट / एंड्रॉइड / ऐप / बिल्ड.ग्रेड में , मल्टीडेक्स को सक्षम करें

अधिक जानकारी के लिए दस्तावेज़ देखें: https://developer.android.com/studio/build/multidex#mdex-gradle

यहां छवि विवरण दर्ज करें


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.