Android Studio: Gradle - build विफल - कार्य के लिए निष्पादन विफल रहा: 'dexDebug'


82

त्रुटि:

Gradle: Execution failed for task ':vertretungsplan:dexDebug'.
> Failed to run command:
    P:\Android-Studio\sdk\build-tools\18.0.1\dx.bat --dex --output P:\Projekte\VertretungsplanProject\vertretungsplan\build\libs\vertretungsplan-debug.dex P:\Projekte\VertretungsplanProject\vertretungsplan\build\classes\debug P:\Projekte\VertretungsplanProject\vertretungsplan\build\dependency-cache\debug P:\Android-Studio\sdk\extras\android\m2repository\com\android\support\support-v4\18.0.0\support-v4-18.0.0.jar P:\Projekte\VertretungsplanProject\vertretungsplan\libs\commons-io-2.4.jar P:\Projekte\VertretungsplanProject\vertretungsplan\build\exploded-bundles\VertretungsplanProjectLibrariesActionbarsherlockUnspecified.aar\classes.jar
Error Code:
    2
Output:
    trouble processing:
    bad class file magic (cafebabe) or version (0033.0000)
    ...while parsing de/MayerhoferSimon/Vertretungsplan/LoginActivity$2.class
    ...while processing de/MayerhoferSimon/Vertretungsplan/LoginActivity$2.class
    trouble processing:
    bad class file magic (cafebabe) or version (0033.0000)
    ...while parsing de/MayerhoferSimon/Vertretungsplan/MainActivity$1.class
    ...while processing de/MayerhoferSimon/Vertretungsplan/MainActivity$1.class
    trouble processing:
    bad class file magic (cafebabe) or version (0033.0000)
    ...while parsing de/MayerhoferSimon/Vertretungsplan/YQL/YqlVplanParser.class
    ...while processing de/MayerhoferSimon/Vertretungsplan/YQL/YqlVplanParser.class
    3 warnings
    UNEXPECTED TOP-LEVEL EXCEPTION:
    com.android.dx.util.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
        at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:592)
        at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:550)
        at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:531)
        at com.android.dx.merge.DexMerger.mergeDexBuffers(DexMerger.java:168)
        at com.android.dx.merge.DexMerger.merge(DexMerger.java:186)
        at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:300)
        at com.android.dx.command.dexer.Main.run(Main.java:232)
        at com.android.dx.command.dexer.Main.main(Main.java:174)
        at com.android.dx.command.Main.main(Main.java:91)

परियोजना संरचना:

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

build.gradle (एक्शनबर्शर)

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android-library'

dependencies {
    compile 'com.android.support:support-v4:18.0.0'
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 11
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            res.srcDirs = ['res']
        }
    }
}

build.gradle (लंब्रेटुंगस्प्लान)

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android'

dependencies {
    compile files('libs/commons-io-2.4.jar')
    compile project(':libraries:actionbarsherlock')
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 11
    }
}

settings.gradle

include ':vertretungsplan', ':libraries:actionbarsherlock'

मैं इस त्रुटि को कैसे ठीक कर सकता हूं?

जवाबों:


90

सही उत्तर यह है, कि आपकी कुछ जार फाइलें संकलित नहीं होती हैं। आपको अपने प्रोजेक्ट में अपनी build.gradle फ़ाइल में जाना चाहिए, और अपनी निर्भरता में देखना चाहिए।

यदि आप कुछ जार फाइलें आयात कर रहे हैं, तो आप उन्हें हटाने और एक बार में उन्हें जोड़ने का प्रयास कर सकते हैं। यह आपको यह निर्धारित करने में मदद करेगा कि उनमें से कौन सी त्रुटि का कारण है।

मेरे मामले में, मैंने बस यही किया, और जब मैं पिछले एक को आयात कर रहा था, तो ऐप संकलित किया गया। इसलिए मुझे लगता है कि असली समस्या यह थी कि मैं एक ही बार में बहुत अधिक आयात कर रहा था। लेकिन अब यह सब काम करता है।


20
आप ./gradlew --stacktrace इकट्ठा का उपयोग कर संकलन तो --info यह आप वास्तव में कौन-जार बुरा है पता चल जाएगा
Nir हार्टमैन

@NirHartmann क्विक क्वेश्चन, कमांड है जिसे मैं बिल्ड ग्रेडेल में रखूंगा? मुझे यकीन नहीं था कि इसे कहाँ रखा जाना चाहिए।
फॉलनरेपर

2
@Fallenreaper को यकीन नहीं है कि मैं आपको सवाल समझ रहा हूं, मेरा मतलब था कि आपकी रूट प्रोजेक्ट डायरेक्टरी में आपके पास एक एग्जील ग्रेडलेव फाइल है, अगर आप इसे टर्मिनल या cmd से फायर करते हैं, जैसे कि मैंने कहा, आपको पता होगा कि समस्या कहां है और फिर आप इसे ठीक कर सकते हैं ।
Nir हार्टमैन

@ Fallenreaper- ने टर्मिनल और इनपुट में ग्रेडिंग / ग्रेडिंग के लिए नेविगेट किया है।
डांसबश

यह वास्तव में मेरे लिए पूरी मदद है
भावेश कैला

68

मैं अचानक एक ही समस्या थी, कोई उल्लेखनीय परिवर्तन के बाद।

मैंने app/buildनिर्देशिका को हटाकर इसे हल कर दिया और चलो पूरी परियोजना को नया बनाने दिया।


2
मुख्य गतिविधि को बदलने के लिए एक गतिविधि जोड़ते समय यहां समान समस्या। मैंने साफ-सुथरा प्रदर्शन किया, लेकिन यह कारगर नहीं हुआ। इस समाधान के लिए धन्यवाद।
Climbatize

1
इसके अलावा, पुस्तकालय परियोजनाओं में एप्लिकेशन / निर्माण फ़ोल्डर सफाई आप अपने एप्लिकेशन में सहित जा सकता है कि कोशिश
Voy

1
अच्छी कोशिश लेकिन इसने मेरी समस्या को ठीक नहीं किया: /
मैक्सिमे टी

1
मेरी समस्या को ठीक करो। धन्यवाद
Dian

1
बिल्ड फ़ोल्डर को हटाना वास्तव में पूर्ण मदद है।
भावेश कैला १५'१६ को

16

आपको जांचना होगा कि क्या वही JAR फिर से आयात किया जा रहा है। मेरे मामले में एक जार के अंदर एक वर्ग था जो दूसरे जार में आयात हो रहा था। तो बस जांचें कि क्या पूरे प्रोजेक्ट में कोई भी लिब / क्लास फाइल दो बार शामिल की जा रही है!


1
यह मेरे लिए तकनीकी रूप से सही था, लेकिन इसलिए हुआ क्योंकि बिल्ड.ग्रेडल फ़ाइल में मेरी निर्भरता में प्रोजेक्ट में एक नई गतिविधि जोड़ने के बाद दो अलग-अलग संस्करणों के साथ दो बार एंड्रॉइड सपोर्ट लाइब्रेरी शामिल थी।
जोश

जब यह हल हो गया था, तो मुझे नहीं किया गया था, लेकिन इसने मुझे अपने रास्ते पर ले लिया। धन्यवाद।
एंड्रियास रूडोल्फ

मेरे लिए एक समस्या का हल है, लेकिन मैंने कभी भी त्रुटि संदेश से, JAR की नकल करने वाली समस्या के बारे में नहीं सोचा होगा। मैं परियोजना स्तर पर एक मॉड्यूल के रूप में वॉली का आयात कर रहा था, लेकिन क्योंकि मैं एएस के साथ निर्माण और कॉर्डोवा के साथ निर्माण करने में सक्षम होना चाहता था, इसलिए मैंने वॉली में कॉर्डोवा प्लगइन के रूप में लाने के लिए अपना वातावरण स्थापित किया। कुछ बिंदु पर प्लेटफ़ॉर्म को पुनः प्राप्त करने के बाद, मुझे तब यह त्रुटि संदेश मिला। दो बार आयात की जा रही समान पुस्तकालयों के बारे में आपकी टिप्पणी ने मुझे एहसास दिलाया कि मुझे 'वॉली के रूप में आयातित पुस्तकालय' सेटिंग्स को हटा देना चाहिए था, इसलिए धन्यवाद।
मार्क बिर्बेक

4

मुझे उसी तरह की त्रुटि मिली जब मैंने जावा जेआरई 1.8 का उपयोग करके ग्रहण में एक बर्तन लाइब्रेरी जार को संकलित करने की कोशिश की, और इसे एंड्रॉइड स्टूडियो 1.1.0 में मेरे / libs / में उपयोग करें।

मेरे पास JDK1.8.0 का उपयोग करने के लिए मेरा Android स्टूडियो सेट था।

मैंने JRE 1.7 के साथ काम करने के लिए अपने ग्रहण को बदल दिया, और त्रुटि ठीक हो गई। ग्रहण: विंडो-> प्राथमिकताएं-> जावा टैब-> संकलक -> अनुपालन स्तर 1.7। यह आपके JRE सिस्टम लाइब्रेरी को jdk1.7.x_x पर स्विच करने के लिए सबसे अधिक संभावना है।

निर्यात करते समय आपको 'कंप्रेस जार' को अनचेक करने की आवश्यकता हो सकती है। मैंने यह परीक्षण नहीं किया है कि इसका प्रभाव था या नहीं। मुझे संदेह है कि यह संबंधित था।


धन्यवाद! इसने एंड्रॉइड स्टूडियो 1.4 और ग्रेडल प्रायोगिक-0.2.1 के साथ मेरे मुद्दे को हल किया;) हालांकि मुझे इस मुद्दे को पूरी तरह से ठीक करने के लिए JDK 1.7.1 पर वापस आना पड़ा
Stef

4

मुझे भी यही समस्या थी। मेरे मामले में एक रिबूट के बाद समस्या शुरू हुई। मैंने अपना ऐप बंद कर दिया, फिर मैंने एंड्रॉइड स्टूडियो (मेरे मामले में V1.1.0) बंद कर दिया, और अंत में एक सामान्य शटडाउन। उसके बाद, मैंने RadioGroup ऑब्जेक्ट जोड़ने के लिए एक जावा फ़ाइल को संशोधित किया और फिर समस्या दिखाई दी।

मैंने अपनी ग्रेडल कॉन्फ़िगरेशन फ़ाइल में '1' के लिए केवल एक सरल '0' को बदलते हुए अपनी समस्या को हल किया, क्योंकि समस्या का मूल कारण ग्रेडल निष्पादन प्रक्रिया में उत्पन्न हुआ था। पहले मेरे पास '1.0.0' संस्करण हुआ करता था, फिर मैंने इसे '1.1.0' में बदल दिया, जैसा कि चित्रों में बताया गया है।

ग्रैडल कॉन्फ़िगरेशन का स्थान एक परिवर्तित ग्रैडल कॉन्फ़िगरेशन का स्थान एक परिवर्तित

वह स्थान जहाँ मैंने सही संस्करण लिया (फ़ाइल -> सेटिंग्स -> ग्रेडल -> प्रायोगिक वह स्थान जहाँ मैंने सही संस्करण लिया (फ़ाइल -> सेटिंग्स -> ग्रेडल -> प्रायोगिक


1.1.0 tolele toots संस्करण में बदलना मेरे लिए काम किया। धन्यवाद!
कलान नवाथने

4

समस्या के बारे में नहीं है Execution failed for task ':dexDebug'

यदि आप लाल रंग में दिखाई गई त्रुटि से ऊपर देखते हैं तो आप यह देखने जा रहे हैं

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

इस समस्या को स्थायी रूप से हल करने के लिए बस इन लाइनों को अपनी build.gradleफ़ाइल में जोड़ें

android {
    dexOptions {
        jumboMode = true
    }
}

अधिक जानकारी के लिए इस प्रश्न की जाँच करें: यहाँ


3

सुनिश्चित करें कि आपके AndroidManifest फ़ाइल में मेनिफ़ेस्ट नोड में एक पैकेज नाम है। पैकेज नाम सेट करना मेरे लिए इस समस्या को निर्धारित करता है।


मेरे मामले में पैकेज का नाम 2 पुस्तकालय उप-परियोजनाओं में दोहराया गया था।
sasha_trn

3

ANDROID STUDIO उपयोगकर्ता इसे आज़माते हैं: -

आपको अपनी श्रेणी फ़ाइल निर्भरता में निम्न जोड़ने की आवश्यकता है:

compile 'com.android.support:multidex:1.0.0'

और फिर नीचे लाइन (मल्टीडेक्स सपोर्ट एप्लिकेशन) को अपने मैनिफ़ेस्ट applicationटैग में जोड़ें:

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

2

जोड़कर इसे ठीक कर सकता था

compile 'com.android.support:support-v4:18.0.0'

vertretungsplan build.gradle, संकलन में निर्भरता और फिर इस लाइन को हटा दें और फिर से संकलित करें।

अब यह काम कर रहा है


क्यों 'v4: 18.0.0'? क्यों नहीं
ap

4
@IgorGanapolsky क्योंकि सामान्य संस्करण में अनपेक्षित परिणाम के लिए गतिशील संस्करण।
आगा

1

मुझे भी यही समस्या थी, आपको करना चाहिए:

File -> Invalidate Caches / Restart


1

मुझे यह समस्या थी क्योंकि मैंने समर्थन पुस्तकालय और एप्कोम्पैट दोनों का उपयोग करने की कोशिश की:

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile 'com.android.support:support-v4:23.1.0'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.google.android.gms:play-services:8.3.0'
}

बाद में मैंने समर्थन लाइब्रेरी को हटा दिया और पुराने संस्करण में बदल दिया, इसे संकलित किया:

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    /*compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'*/
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile 'com.android.support:design:22.2.0'
    compile 'com.google.android.gms:play-services:8.3.0'
}

1

मेरी दो असंगत निर्भरताएँ थीं।

नीचे की निर्भरताएं त्रुटि का कारण बनीं।

compile 'com.google.android.gms:play-services-fitness:8.3.0'
compile 'com.google.android.gms:play-services-wearable:8.4.0'

फिटनेस निर्भरता को 8.4.0 संस्करण में बदलकर मैं ऐप को चलाने में सक्षम था।

compile 'com.google.android.gms:play-services-fitness:8.4.0'
compile 'com.google.android.gms:play-services-wearable:8.4.0'

0

मुझे एंड्रॉइड स्टूडियो के साथ एक बहुत ही दिलचस्प मुद्दा मिला और वेब ब्राउज़र के लिए mircrosoft अपग्रेड। मैंने "बेवकूफी" को नवीनतम संस्करण में नवीनीकृत किया। निश्चित रूप से Microsoft अपने असीम ज्ञान में जानता है कि सुरक्षा का क्या करना है। जब मैंने अपने ऐप को संकलित करने की कोशिश की तो मुझे त्रुटि मिलती रही ग्रेडल - बिल्ड विफल - कार्य के लिए निष्पादन विफल रहा। स्टैक में देखकर मैंने देखा कि यह java.exe के लिए पथ को नहीं पहचानता है। मुझे वह अजीब लगा, जैसा कि मैं सिर्फ एक दिन पहले संकलित करने में सक्षम था। मैंने सिस्टम के लिए env var में JAVA_HOME जोड़ा, Android Studio को बंद किया और इसे फिर से खोल दिया। कम और निहारना अगर आग की दीवार नाग स्क्रीन पूछ नहीं पॉप अगर मैं सभी jave.exe के माध्यम से करना चाहता था।

क्या क्लस्टर है!


0

(यह गलत धागा हो सकता है, जैसा कि आपकी समस्या अधिक विशिष्ट लगती है, लेकिन यह वह धागा है जो मैंने इस मुद्दे के कीवर्ड को खोजते समय पाया था)

सभी अच्छे संकेतों के बावजूद, केवल एक चीज जिसने मेरी मदद की, और वह यह है कि मैं केवल मामले में साझा करना चाहूंगा, अगर बाकी सब काम नहीं करेंगे:

अपनी होम निर्देशिका में अपनी .gradle निर्देशिका निकालें और इसे Android Studio द्वारा आपके लिए पुनः-निर्माण / पुनः-डाउनलोड करें।

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


0

ग्रहण आईडीई से आयात करने के बाद एक कारण पुस्तकालयों को दोहराया जा सकता है।

dependencies {
compile 'com.github.japgolly.android:svg-android:2.0.5'
compile 'com.google.android.gms:play-services:+'
compile 'com.android.support:appcompat-v7:21.0.3'
compile files('libs/androidannotations-api-2.7.1.jar')
compile files('libs/androidasync-2.1.2.jar')
//compile files('libs/google-play-services.jar')
compile files('libs/universal-image-loader-1.8.2.jar')}

मैं एक ही समस्या थी, टिप्पणी के बाद:

//compile files('libs/google-play-services.jar')

एप्लिकेशन को कोई त्रुटि नहीं मिलती है।


आपको स्थानीय फ़ोल्डर को लिबर फ़ोल्डर से निकालना चाहिए, और सेंट्रल रिपॉजिटरी पर निर्भर होना चाहिए।
वंडरसकाबो

0

मैं एक ही मुद्दे का सामना करना पड़ा। ऐसा करके। Actionbarsherlock -> मॉड्यूल सेटिंग्स -> निर्भरता पर जाएं। समर्थन v4 लाइब्रेरी को हटाएं। नीचे बाईं ओर एक प्लस बटन है, वहां से 1 लाइब्रेरी डिपेंडेंसी (सपोर्ट-वी 4 चुनें) जोड़ें। एक बार पूरा होने के बाद रिसेल और स्वच्छ प्रोजेक्ट को छोड़ दें।


0

यहां कई उत्तर डुप्लिकेट निर्भरता खोजने के लिए परीक्षण और त्रुटि हैं, लेकिन यदि आप Execution failed for task ':app:dexDebug'.लाइन से बस थोड़ा सा ऊपर स्क्रॉल करते हैं तो यह आपको डुप्लिकेट पर एक संकेत देगा

एक संकेत के साथ त्रुटि

मेरे मामले में मेरे पास निम्न त्रुटि थी:

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define L/com/parse/AbstractQueryController$1;
...
...
...
Execution failed for task ':app:dexDebug'.

इसलिए मुझे पता था कि इस बग को ठीक करने के लिए मुझे डुप्लिकेट निर्भरताओं को परिभाषित करने की आवश्यकता है parse.AbstractQueryController

मेरे मामले में मेरे पास दो आयातित मॉड्यूल थे जो दो अलग-अलग पार्स पुस्तकालयों में लोड हो रहे थे। मेरी परियोजना को केवल एक लोड करने से मेरी समस्या तय हो गई।


0

मैं भी इस त्रुटि में भाग गया हूं जब मेरी कक्षा की किसी एक फ़ाइल में पैकेज गलत तरीके से लिखा गया था। इनमें से कई जवाब तुरंत जार फाइलों पर कूद जाते हैं, लेकिन मैं यह सुनिश्चित करने के लिए भी जांच करूंगा कि आपके पैकेज सही तरीके से लिखे गए हैं।


0

सिर्फ build.gradle में जोड़ें

संकलन 'com.parse.bolts: बोल्ट-एंड्रॉइड: 1. +'

संकलन 'com.parse: parse-android: 1.11.0'

और ग्रेड फाइलों के साथ सिंक परियोजना, यहाँ छवि विवरण दर्ज करें लेकिन परिवाद में पार्स जार नहीं जोड़ें :) OKK


0

यदि आप भी उपयोग कर रहे हैं Daggerया Butterknifeआपको build.gradleक्लासपाथ की तरह अपनी मुख्य फ़ाइल में निर्भरता के रूप में अमरूद को जोड़ना चाहिए :

com.google.guava:guava:20.0

दूसरे हाथ में, अगर आपको ग्रैडल डेमॉन के लिए बड़े ढेर के साथ समस्या हो रही है, तो आप अपनी radleफ़ाइल में जोड़ सकते हैं :

 dexOptions {
        javaMaxHeapSize "4g"
    } 


-1

एंड्रॉइड स्टूडियो में कई त्रुटि परिदृश्यों के लिए मेनू बार में बिल्ड का उपयोग करके प्रोजेक्ट की सफाई करना और इसलिए इस मामले में ऐसा होता है।


क्या आपके पास कोई जानकारी है कि यह इस मुद्दे को क्यों हल करेगा?
ग्रेग बैयर

1
किसी भी तरीके से Coz में आप पुस्तकालयों को build.gradle में शामिल नहीं कर सकते हैं और स्वीकृत समाधान हमें उन जार फ़ाइलों को हटाने और जोड़ने के लिए भी कह रहा है जो संकलित नहीं हो सकीं। तो यह उन जार फ़ाइलों को नहीं था जो परेशानी पैदा कर रहे थे , वे इस समस्या के सामने आने से पहले काम कर रहे थे और अभी भी काम कर रहे हैं क्योंकि मैंने इसे बताई गई विधि का उपयोग करके हल किया है, इसलिए इसका निर्माण मुद्दा और कोड संकलित नहीं हुआ। तो जब एक बिल्ड आपको प्रोजेक्ट को साफ करने और पुनर्निर्माण करने में विफल रहता है तो सबसे अच्छा तरीका क्या है। धन्यवाद!
कोड

अधिकांश लोगों के लिए यह संदेश प्रकट होता है कि क्या वे अपना प्रोजेक्ट बनाने जा रहे हैं। तो यह निश्चित रूप से एक समाधान नहीं है
maysi

1
मुझे आशा है कि आपने उत्तर को इसकी विफलता का कारण पढ़ा होगा क्योंकि निर्भरताएं संकलित नहीं हो रही हैं और इसलिए यह तब दिखाई देगा जब आप केवल "प्रोजेक्ट का निर्माण" करते हैं। अपने एंड्रॉइड स्टूडियो के साथ सिंक में रहना भी सुनिश्चित करें कि आप जावा को नवीनतम उपलब्ध संस्करण coz में अपडेट करते हैं। इसके पहले और बाद की यह एक अलग कहानी है।
कोड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.