[android] Android Studio : Gradle-빌드 실패 — ‘: dexDebug’작업에 대한 실행 실패

오류:

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'

이 오류를 어떻게 수정할 수 있습니까?



답변

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

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

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


답변

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

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


답변

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


답변

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 (내 경우 V1.1.0)를 닫고 마지막으로 정상 종료했습니다. 그 후 하나의 Java 파일을 수정하여 RadioGroup 객체를 추가하면 문제가 발생했습니다.

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

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

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


답변

문제는 Execution failed for task ':dexDebug'

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

여기에 이미지 설명 입력

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

android {
    dexOptions {
        jumboMode = true
    }
}

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


답변

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