java.util.zip.ZipException:重复条目:android / support / v4 / view / MotionEventCompatEclair.class

时间:2015-11-12 16:43:52

标签: android android-studio build.gradle

我是android studio的新手,我正试图从eclipse导入一个项目,但我觉得我遇到了每一个问题。我目前得到的错误是:

Error:Execution failed for task ':jobFlexwithInvoice:packageAllDebugClassesForMultiDex'.
> java.util.zip.ZipException: duplicate entry: android/support/v4/view/MotionEventCompatEclair.class

我见过类似herehere等问题的答案。但我认为我需要更多帮助,因为它不会消失。我已经在build.gradle文件的几乎所有内容中添加了异常,包括仅用于踢的实际支持4v依赖,并且仍然出现此错误。而且由于包含项目,我还有多个build.gradle文件?看起来项目build.gradle文件可以忽略,我只需要在模块build.gradle文件中添加例外? (当有人说要在build.gradle文件中添加内容时,这很烦人,我不总是确定哪一个)

无论如何,这是我目前的每个build.gradle文件的依赖项部分:

对myApp:

dependencies {
    compile ('com.android.support:multidex:1.0.0'){
        exclude module: 'support-v4'
    }
    compile project(':facebook') {
        exclude module: 'support-v4'
    }
    compile project(':apptentive')
    compile project(':androidsdkui'){
        exclude module: 'support-v4'
    }
    compile ('com.google.android.gms:play-services:+'){
        exclude module: 'support-v4'
    }
    compile files('libs/android-support-v13.jar') {
        exclude module: 'support-v4'
    }
    compile files('libs/DynamicPDF.jar')
    compile files('libs/picasso-2.5.0.jar')
    compile ('com.android.support:support-v4:22.0.0'){
        exclude module: 'support-v4'
    }
}

Facebook的:

dependencies {
    compile files('libs/bolts-android-1.2.1.jar')
    compile ('com.android.support:support-v4:22.0.0'){
        exclude module: 'support-v4'
    }
}

androidsdkui:

dependencies {
    compile files('libs/appboy.jar')
    compile ('com.android.support:support-v4:22.0.0'){
        exclude module: 'support-v4'
    }
}

还有一个apptentive build.gradle文件,但它没有任何依赖项。在添加所有这些异常之前,我得到的错误与第一个链接中的错误相同,现在唯一的区别是android/support/v4/view/MotionEventCompatEclair.class而不是android/support/v4/util/TimeUtils.class

如果有办法查看重复项的来源,那也很棒,我无法通过快速谷歌搜索找到任何内容。

2 个答案:

答案 0 :(得分:2)

我更新了问题,以便您可以看到我做错事的一些方法。我的一些项目包括支持v4,我没有将它们排除在外。从项目中排除事物的正确方法是:

compile (project(':facebook')) {
    exclude module: 'support-v4'
}

你必须在编译后将所有括号括起来。我假设同样从文件中排除东西

即。

compile file(myfile.jar)

会变成

compile (file(myfile.jar)) { 
    exclude module: 'support-v4'
}

答案 1 :(得分:0)

您可以尝试在build.gradle元素内的顶级allprojects文件中添加以下内容吗?它看起来应该如下所示。

allprojects {
    configurations {
        all*.exclude group: 'com.android.support', module: 'support-v4'
    }
}

希望这有帮助。