Android Gradle-DexException:多个dex文件定义

Android Gradle-DexException:多个dex文件定义,android,android-studio,gradle,android-gradle-plugin,dex,Android,Android Studio,Gradle,Android Gradle Plugin,Dex,我知道已经有人问过这个问题,但我无法在可用的解决方案中找到适合我问题的答案。我希望你们能帮我 异常说明定义了多个dex文件,我尝试了几种常见的方法来解决这个问题。不幸的是,这没有帮助 * What went wrong: Execution failed for task ':app:transformClassesWithDexForDebug'. > com.android.build.api.transform.TransformException: com.android.ide.

我知道已经有人问过这个问题,但我无法在可用的解决方案中找到适合我问题的答案。我希望你们能帮我

异常说明定义了多个dex文件,我尝试了几种常见的方法来解决这个问题。不幸的是,这没有帮助

* What went wrong:
Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2



Cause: com.android.dex.DexException: Multiple dex files define Lnet/jcip/annotations/GuardedBy;
        UNEXPECTED TOP-LEVEL EXCEPTION:
        com.android.dex.DexException: Multiple dex files define Lnet/jcip/annotations/GuardedBy;
            at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:579)
            at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:535)
            at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:517)
            at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:164)
            at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
            at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:504)
            at com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)
            at com.android.dx.command.dexer.Main.run(Main.java:277)
            at com.android.dx.command.dexer.Main.main(Main.java:245)
            at com.android.dx.command.Main.main(Main.java:106)
  • 我试图清理和重建项目。

    • 构建->清洁项目
    • 构建->重建项目
  • 然后我尝试使缓存无效并重新启动。

    • 文件->使缓存无效并重新启动
  • 我还运行此命令以了解依赖项中的重复:

    ./gradlew-q依赖项应用程序:依赖项--配置编译--堆栈跟踪

  • 这是输出。正如你所看到的,没有复制品

    +--- com.jakewharton.hugo:hugo-annotations:1.2.1
    +--- com.google.code.findbugs:annotations:3.0.1
    |    +--- net.jcip:jcip-annotations:1.0
    |    \--- com.google.code.findbugs:jsr305:3.0.1
    +--- com.michaelpardo:activeandroid:3.1.0-SNAPSHOT
    +--- com.android.support:appcompat-v7:23.1.1
    +--- com.crashlytics.sdk.android:crashlytics:2.3.0
    |    +--- com.crashlytics.sdk.android:crashlytics-core:2.3.0
    |    |    \--- io.fabric.sdk.android:fabric:1.3.1
    |    +--- io.fabric.sdk.android:fabric:1.3.1
    |    \--- com.crashlytics.sdk.android:beta:1.1.2
    |         \--- io.fabric.sdk.android:fabric:1.2.0 -> 1.3.1
    +--- com.greenhalolabs:emailautocompletetextview:1.3.0
    +--- com.facebook.android:facebook-android-sdk:4.2.0
    |    \--- com.parse.bolts:bolts-android:1.2.0
    +--- com.android.support:cardview-v7:23.1.1
    +--- com.jakewharton.hugo:hugo-runtime:1.2.0
    |    +--- com.jakewharton.hugo:hugo-annotations:1.2.0 -> 1.2.1
    |    \--- org.aspectj:aspectjrt:1.8.5
    +--- joda-time:joda-time:2.0
    +--- io.keen:keen-client-api-android:2.1.2
    +--- com.googlecode.libphonenumber:libphonenumber:6.3.1
    +--- net.simonvt.menudrawer:menudrawer:3.0.6
    +--- com.squareup:otto:1.3.0
    +--- com.google.android.gms:play-services-base:8.4.0
    |    \--- com.google.android.gms:play-services-basement:8.4.0
    +--- com.google.android.gms:play-services-analytics:8.4.0
    +--- com.google.android.gms:play-services-gcm:8.4.0
    |    \--- com.google.android.gms:play-services-measurement:8.4.0
    +--- com.jeremyfeinstein.slidingmenu:library:1.3
    +--- com.android.support:support-v4:23.1.1
    |    \--- com.android.support:support-annotations:23.1.1
    +--- com.jakewharton.timber:timber:3.1.0
    +--- com.viewpagerindicator:library:2.4.1
    +--- com.ouralabs:ouralabs:2.7.0
    +--- com.android.support.test.espresso:espresso-idling-resource:2.2.1
    +--- project :domain
    |    \--- joda-time:joda-time:2.0
    \--- project :remote
         +--- com.squareup.retrofit:retrofit:1.6.0
         |    \--- com.google.code.gson:gson:2.2.4
         +--- com.squareup.okhttp:okhttp:2.4.0
         |    \--- com.squareup.okio:okio:1.4.0
         \--- com.squareup.okhttp:okhttp-urlconnection:2.4.0
    
  • 我也读过关于
    multiDexEnabled true
    的文章,但我确信我没有超过方法的限制。这个问题立即出现,没有添加任何库。我甚至不能汇编代码的较旧的生产版本。它们正在生产中,完全可以编译。
  • 模块的build.gradle:

    dependencies {
        apply plugin: 'idea'
    
        compile "com.michaelpardo:activeandroid:${rootProject.ext.activeandroid}"
        compile(group: 'com.google.code.findbugs', name: 'annotations', version: "${rootProject.ext.findbugs}") {
            exclude(group: 'net.jcip', module: 'jcip-annotations')
        }
        compile(group: 'com.android.support', name: 'appcompat-v7', version: "${rootProject.ext.supportv4}") {
            exclude(group: 'com.android.support', module: 'support-v4')
        }
        compile(group: 'com.crashlytics.sdk.android', name: 'crashlytics', version: "${rootProject.ext.crashlytics}") {
            exclude(group: 'com.crashlytics.sdk.android', module: 'answers')
        }
        compile "com.greenhalolabs:emailautocompletetextview:${rootProject.ext.emailautocomplete}"
        compile(group: 'com.facebook.android', name: 'facebook-android-sdk', version: "${rootProject.ext.facebook}") {
            exclude(group: 'com.android.support', module: 'support-v4')
        }
        compile "com.android.support:cardview-v7:${rootProject.ext.supportv4}"
        compile "com.jakewharton.hugo:hugo-runtime:${rootProject.ext.hugo}"
        compile "joda-time:joda-time:${rootProject.ext.jodatime}"
        compile "io.keen:keen-client-api-android:${rootProject.ext.keen}"
        compile "com.googlecode.libphonenumber:libphonenumber:${rootProject.ext.libphonenumber}"
        compile "net.simonvt.menudrawer:menudrawer:${rootProject.ext.menudrawer}"
        compile "com.squareup:otto:${rootProject.ext.otto}"
        compile(group: 'com.google.android.gms', name: 'play-services-base', version: "${rootProject.ext.playservices}") {
            exclude(group: 'com.android.support', module: 'support-v4')
        }
        compile(group: 'com.google.android.gms', name: 'play-services-analytics', version: "${rootProject.ext.playservices}") {
            exclude(group: 'com.google.android.gms', module: 'play-services-basement')
        }
        compile(group: 'com.google.android.gms', name: 'play-services-gcm', version: "${rootProject.ext.playservices}") {
            exclude(group: 'com.google.android.gms', module: 'play-services-base')
            exclude(group: 'com.google.android.gms', module: 'play-services-basement')
        }
        compile "com.jeremyfeinstein.slidingmenu:library:${rootProject.ext.slidingmenu}"
        compile "com.android.support:support-v4:${rootProject.ext.supportv4}"
        compile "com.jakewharton.timber:timber:${rootProject.ext.timber}"
        compile "com.viewpagerindicator:library:${rootProject.ext.viewpagerindicator}"
        compile "com.ouralabs:ouralabs:${rootProject.ext.ouralabs}"
        compile "com.android.support.test.espresso:espresso-idling-resource:$rootProject.ext.espressoVersion"
    
        compile project(':domain')
        compile(project(':remote')) {
            exclude module: 'domain'
        }
    
        // Local Unit testing
        testCompile "junit:junit:$rootProject.ext.junit"
        testCompile "org.mockito:mockito-all:$rootProject.ext.mockitoVersion"
        testCompile "org.hamcrest:hamcrest-all:$rootProject.ext.hamcrestVersion"
    
        // Instrumentation Testing
        androidTestCompile "com.android.support.test.espresso:espresso-core:$rootProject.ext.espressoVersion"
        androidTestCompile "com.android.support.test.espresso:espresso-contrib:$rootProject.ext.espressoVersion"
        androidTestCompile "com.android.support.test.espresso:espresso-intents:$rootProject.ext.espressoVersion"
        androidTestCompile "com.android.support.test.uiautomator:uiautomator-v18:$rootProject.ext.uiautomator"
        androidTestCompile "com.android.support.test:runner:$rootProject.ext.runnerVersion"
        androidTestCompile "com.android.support.test:rules:$rootProject.ext.runnerVersion"
        androidTestCompile "org.mockito:mockito-core:$rootProject.ext.mockitoVersion"
        androidTestCompile "com.google.dexmaker:dexmaker:$rootProject.ext.dexmaker"
        androidTestCompile "com.google.dexmaker:dexmaker-mockito:$rootProject.ext.dexmaker"
    }
    
    更新

    我检查了项目的
    GuardedBy
    。它看起来像复制品吗


    看起来像是雨果注释被包含了两次。它是hugo runtime的一个依赖项,是从其他地方添加的。尝试将其从hugo运行时中排除

    compile("com.jakewharton.hugo:hugo-runtime:${rootProject.ext.hugo}") {
        exclude(group: 'com.jakewharton.hugo' module: 'hugo-annotations')
    }
    
    此外,由于错误是由jsr库引起的,因此可能需要将其从
    findbugs
    依赖项中排除

    compile(group: 'com.google.code.findbugs', name: 'annotations', version: "${rootProject.ext.findbugs}") {
        exclude(group: 'net.jcip', module: 'jcip-annotations')
        exclude(group: 'com.google.code.findbugs', module: 'jsr305')
    }
    
    编辑:

    如果你真的找不到它,有一个核选择,但我不确定它是否会破坏其他东西,或者是最佳实践。这将从类路径中完全删除
    jsr305

    dependencies {
        ...
    }
    configurations.all*.exclude module: 'jsr305'
    

    检查您的jar文件。可以在项目资源管理器中展开文件。
    如果它有不必要的路径和BuildConfig,则应该发生DexException。

    发生这种情况是因为您添加了更多的net/jcip/annotations/GuardeBy类。检查jar文件。@GabrieleMariotti但如何排除此重复?请你写一个答案好吗?我想了解你的问题。首先,检查您是在libs文件夹中使用这些jar,还是从其他库中获取它们。问题可能是您使用的是同一类的不同版本。@GabrieleMariotti我不使用'libs'文件夹。我想,它们来自其他图书馆。可能会导致出错。不幸的是,我也有同样的例外。谢谢您的回答。您可以尝试编辑,但当findbugs运行时,这可能会对工具产生不利影响