Android Studio : Gradle-빌드 실패 — ': 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 (actionbarsherlock)

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 (vertretungsplan)

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

정답은 일부 jar 파일이 컴파일되지 않는다는 것입니다. 프로젝트의 build.gradle 파일로 이동하여 종속성을 확인해야합니다.

일부 jar 파일 만 가져 오는 경우 제거하고 한 번에 하나씩 추가 할 수 있습니다. 이렇게하면 오류를 일으키는 원인을 파악하는 데 도움이됩니다.

제 경우에는 그렇게했고 마지막으로 가져올 때 앱이 컴파일되었습니다. 그래서 진짜 문제는 한꺼번에 너무 많이 가져 왔다는 것입니다. 그러나 이제 모든 것이 작동합니다.


20
당신이 ./gradlew이 --stacktrace을 조립하여 컴파일하면 당신이 정확히 어떤을 항아리 나쁜 알려드립니다 --info
Nir 씨 하트만

@NirHartmann 빠른 질문, 명령은 빌드 gradle에 배치 할 것입니까? 어디에 두어야할지 모르겠습니다.
Fallenreaper 2015-08-05

2
@Fallenreaper는 내가 당신의 질문을 이해했는지 확신하지 못합니다. 루트 프로젝트 디렉토리에 exec gradlew 파일이 있음을 의미합니다. 내가 말한 것처럼 터미널 또는 cmd에서 실행하면 문제가 어디에 있는지 알고 해결할 수 있습니다. .
Nir Hartmann

@ Fallenreaper- 터미널에서 gradle / gradle로 이동하고 ./gradlew assemble --stacktrace --info를 입력했지만 그런 디렉토리가 없습니다. 이것이 귀하의 제안에서 의미하는 바입니까?
dancingbush

이것은 나를 위해 정말 완전한 도움이됩니다
bhavesh kaila

68

눈에 띄는 변화가 없었는데 갑자기 같은 문제가 발생했습니다.

app/build디렉토리 를 삭제하여 해결하고 gradle이 전체 프로젝트를 새로 빌드하도록했습니다.


2
주요 활동을 대체하기 위해 활동을 추가 할 때도 동일한 문제가 있습니다. 나는 청소를 수행했지만 작동하지 않았습니다. 이 솔루션에 감사드립니다.
2015

1
또한 앱에 포함 할 수있는 라이브러리 프로젝트의 앱 / 빌드 폴더를 정리해보세요
Voy

1
좋은 시도지만 내 문제를 해결하지 못했습니다 : /
Maxime T

1
내 문제를 고쳐라. 당신 감사
다이애나

1
빌드 폴더를 삭제하면 정말 도움이됩니다.
bhavesh kaila

16

동일한 JAR을 다시 가져 오는지 확인해야합니다. 제 경우에는 다른 항아리에서 가져온 항아리 안에 클래스가있었습니다. 따라서 전체 프로젝트에 lib / class 파일이 두 번 포함되어 있는지 확인하십시오!


1
이것은 기술적으로 나에게 맞았지만 build.gradle 파일의 종속성에 프로젝트에 새 활동을 추가 한 후 두 가지 버전으로 두 번 포함 된 Android 지원 라이브러리가 있었기 때문에 발생했습니다.
Josh

이 문제가 해결되었을 때 나는 끝나지 않았지만 그것은 나를 인도합니다. 감사.
Andreas Rudolph

나를 위해 문제를 해결했지만 오류 메시지에서 JAR이 복제되는 문제에 대해 결코 생각하지 못했을 것입니다. 프로젝트 수준에서 Volley를 모듈로 가져 왔지만 AS로 빌드와 Cordova로 빌드간에 전환 할 수 있기를 원했기 때문에 Volley를 Cordova 플러그인으로 가져 오도록 환경을 설정했습니다. 어느 시점에서 플랫폼을 다시 생성 한 후이 오류 메시지가 나타납니다. 동일한 라이브러리를 두 번 가져 오는 것에 대한 귀하의 의견으로 인해 '가져온 라이브러리로 밸리'설정을 제거해야한다는 것을 깨달았으므로 감사합니다.
Mark Birbeck 2015

4

Java JRE 1.8을 사용하여 Eclipse에서 utils 라이브러리 jar를 컴파일하고 Android Studio 1.1.0의 / libs /에서 사용하려고 할 때 같은 종류의 오류가 발생했습니다.

JDK1.8.0을 사용하도록 Android Studio를 설정했습니다.

내 Eclipse를 JRE 1.7에서 작동하도록 전환했고 오류가 수정되었습니다. Eclipse : Window-> Preferences-> Java 탭-> Compiler-> Compliance level 1.7. JRE 시스템 라이브러리를 jdk1.7.x_x로 전환하라는 메시지가 표시 될 가능성이 높습니다.

내보낼 때 'compress jar'를 선택 취소해야 할 수도 있습니다. 나는 그것이 효과가 있는지 여부를 테스트하지 않았습니다. 관련이있는 것 같지 않습니다.


감사! 이것은 Android Studio 1.4 및 Gradle experiment-0.2.1에서 내 문제를 해결했습니다.;)이 문제를 완전히 해결하려면 JDK 1.7.1로 되돌려 야했습니다
Stef

4

나도 같은 문제가 있었다. 제 경우에는 재부팅 후 문제가 시작되었습니다. 앱을 닫은 다음 Android Studio (내 경우 V1.1.0)를 닫고 마지막으로 정상 종료했습니다. 그 후 하나의 Java 파일을 수정하여 RadioGroup 객체를 추가하면 문제가 발생했습니다.

문제의 근본 원인이 Gradle 실행 프로세스에서 생성 되었기 때문에 Gradle 구성 파일에서 '1'에 대한 간단한 '0'만 변경하여 문제를 해결했습니다. 이전에는 버전 '1.0.0'이 있었는데 그림에서 언급했듯이 '1.1.0'으로 변경했습니다.

변경된 Gradle 구성의 위치 변경된 Gradle 구성의 위치

(파일-> 설정-> Gradle-> 실험적)에서 올바른 버전을 가져온 위치 (파일-> 설정-> Gradle-> 실험적)에서 올바른 버전을 가져온 위치


gradle toots 버전 1.1.0으로 변경하면 저에게 효과적이었습니다. 감사!
kalan nawarathne 2015

4

문제는 Execution failed for task ':dexDebug'

빨간색으로 표시된 오류 위를 보면

여기에 이미지 설명 입력

이 문제를 영구적으로 해결하려면 build.gradle파일에 다음 줄을 추가 하십시오.

android {
    dexOptions {
        jumboMode = true
    }
}

자세한 내용은이 질문을 확인하십시오 : 여기


3

AndroidManifest 파일이 매니페스트 노드에 패키지 이름을 포함하는지 확인합니다. 패키지 이름을 설정하면이 문제가 해결되었습니다.


제 경우에는 패키지 이름이 2 개의 라이브러리 하위 프로젝트에서 중복되었습니다.
sasha_trn

3

ANDROID STUDIO 사용자 는 이것을 시도하십시오 :-

gradle 파일 종속성에 다음을 추가해야합니다.

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

그런 다음 매니페스트의 application태그 에 아래 줄 (multidex 지원 애플리케이션)을 추가합니다 .

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

2

추가하여 해결할 수 있습니다.

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

vertretungsplan build.gradle의 종속성에 대해이 줄을 컴파일 한 다음 제거하고 다시 컴파일하십시오.

이제 작동합니다


왜 'v4 : 18.0.0'입니까? 'v4 : +'가 아닌 이유
IgorGanapolsky

4
@IgorGanapolsky는 일반적으로 동적 버전이 예상치 못한 결과를 초래하기 때문입니다.
aga

1

나는 똑같은 문제가 있었다.

File -> Invalidate Caches / Restart


1

지원 라이브러리와 appcompat를 모두 사용하려고했기 때문에이 문제가 발생했습니다.

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

Android Studio 및 웹 브라우저로의 mircrosoft 업그레이드에서 매우 흥미로운 문제를 발견했습니다. 나는 "어리석게"ie의 최신 버전으로 업그레이드했습니다. 물론 Microsoft는 무한한 지혜로 보안을 어떻게해야할지 정확히 알고 있습니다. 내 앱을 컴파일하려고 할 때 Gradle-build fails-Execution failed for task라는 오류가 계속 발생합니다. 스택을 살펴보면 java.exe의 경로를 인식하지 못함을 알았습니다. 전날 컴파일 할 수 있었기 때문에 이상하다는 것을 알았습니다. 시스템의 환경 변수에 JAVA_HOME을 추가하고 Android Studio를 닫은 다음 다시 열었습니다. 낮고 모든 jave.exe를 통해 원하는지 묻는 방화벽 잔소리 화면이 나타나지 않는지 확인하십시오.

이 얼마나 클러스터!


0

(문제가 더 구체적으로 보이기 때문에 잘못된 스레드 일 수 있지만 문제의 키워드를 검색 할 때 찾은 스레드입니다.)

모든 좋은 힌트에도 불구하고 저를 도왔고 다른 모든 것이 작동하지 않는 경우를 대비하여 공유하고 싶습니다.

홈 디렉터리에서 .gradle 디렉터리를 제거 하고 Android 스튜디오에서 다시 빌드 / 다시 다운로드하도록합니다.

Android Studio 자체 나 SDK를 다시 설치해도 해결할 수 없었던 모든 종류의 이상한 오류를 수정했습니다.


0

Eclipse IDE에서 가져온 후 중복 된 라이브러리가 원인 일 수 있습니다.

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

앱에 오류가 없습니다.


libs 폴더에서 로컬 jar를 제거하고 Central 저장소에 의존해야합니다.
WonderCsabo 2015 년

0

나는 같은 문제에 직면했다. actionbarsherlock-> 모듈 설정-> 종속성으로 이동하십시오. 지원 v4 라이브러리를 제거하십시오. 왼쪽 하단에는 더하기 버튼이 있으며 거기에서 1 개의 라이브러리 종속성을 추가하십시오 (support-v4 선택). gradle이 완료되면 프로젝트를 다시 동기화하고 정리하십시오.


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

제 경우에는 두 개의 다른 Parse 라이브러리에로드되는 두 개의 가져온 모듈이있었습니다. 내 프로젝트를 하나만로드하면 내 문제가 해결되었습니다.


0

내 클래스 파일 중 하나의 패키지 철자가 잘못되었을 때도이 오류가 발생했습니다. 이러한 답변 중 대부분은 즉시 Jar 파일로 이동하지만 패키지 철자가 올바른지 확인합니다.


0

build.gradle을 추가하십시오.

'com.parse.bolts : bolts-android : 1. +'컴파일

'com.parse : parse-android : 1.11.0'컴파일

프로젝트를 Gradle 파일과 동기화 여기에 이미지 설명 입력 하지만 libs에 구문 분석 Jar를 추가하지 마십시오. :) OKK


0

또한 사용 중이 Dagger거나 classpath와 같은 주 파일 Butterknife에 guava를 종속성으로 추가해야하는 경우 build.gradle:

com.google.guava:guava:20.0

반면에 Gradle 데몬의 더 큰 힙에 문제가있는 경우 radle파일 추가를 늘릴 수 있습니다.

 dexOptions {
        javaMaxHeapSize "4g"
    } 

0

제 경우에는 그렇게 Build > Clean Project했고 효과가있었습니다!


-1

메뉴 바에서 빌드를 사용하여 프로젝트를 정리하면 Android Studio의 많은 오류 시나리오에서 작동하므로이 경우에도 마찬가지입니다.


이 문제가 해결되는 이유에 대한 정보가 있습니까?
Greg Bair

1
Coz는 어떤 방법으로 build.gradle에서 라이브러리를 제외 할 수 없으며 허용 된 솔루션은 컴파일 할 수없는 jar 파일을 제거하고 추가하도록 우리에게 지시합니다. , 그들은 문제가 나타나기 전에 작동 중이었고 내가 언급 한 방법을 사용하여 문제를 해결 한 후에도 여전히 작동하므로 빌드 문제이며 코드가 컴파일되지 않았습니다. 따라서 빌드가 실패 할 때 가장 좋은 방법은 프로젝트를 정리하고 다시 빌드하는 것입니다. 감사합니다!
code4salvation

대부분의 사람들에게이 메시지는 프로젝트를 빌드 할 때 나타납니다. 이 확실히 솔루션 그래서
maysi

1
나는 당신이 컴파일되지 않은 종속성으로 인한 빌드 실패에 대한 답변을 읽고 "프로젝트를 빌드"할 때만 나타납니다. Android Studio와 동기화 상태를 유지하려면 Java를 사용 가능한 최신 버전으로 업데이트하십시오. coz 그것은 전후의 다른 이야기입니다.
code4salvation
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.