Android Studio构建错误 - 多个dex文件定义Landroid / support / v4 /

时间:2013-08-18 17:23:39

标签: android android-support-library

我无法在Android Studio中构建我的项目。我收到以下错误:

Error:Android Dex: [RaditazAndroid] Unable to execute DX
Error:Android Dex: [RaditazAndroid] com.android.dx.util.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
Error:Android Dex: [RaditazAndroid] at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:592)
Error:Android Dex: [RaditazAndroid] at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:550)
Error:Android Dex: [RaditazAndroid] at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:531)
Error:Android Dex: [RaditazAndroid] at com.android.dx.merge.DexMerger.mergeDexBuffers(DexMerger.java:168)
Error:Android Dex: [RaditazAndroid] at com.android.dx.merge.DexMerger.merge(DexMerger.java:186)
Error:Android Dex: [RaditazAndroid] at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:300)
Error:Android Dex: [RaditazAndroid] at com.android.dx.command.dexer.Main.run(Main.java:232)
Error:Android Dex: [RaditazAndroid] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Error:Android Dex: [RaditazAndroid] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
Error:Android Dex: [RaditazAndroid] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
Error:Android Dex: [RaditazAndroid] at java.lang.reflect.Method.invoke(Method.java:597)
Error:Android Dex: [RaditazAndroid] at org.jetbrains.android.compiler.tools.AndroidDxRunner.runDex(AndroidDxRunner.java:147)
Error:Android Dex: [RaditazAndroid] at org.jetbrains.android.compiler.tools.AndroidDxRunner.main(AndroidDxRunner.java:276)
Error:Android Dex: [RaditazAndroid] at com.intellij.rt.execution.CommandLineWrapper.main(CommandLineWrapper.java:121)

然而,这个错误对我来说毫无意义。它没有提供关于我应该从哪里开始修复我的项目的线索。有没有人遇到类似的东西?

11 个答案:

答案 0 :(得分:44)

对于任何有兴趣的人,我解决了自己的问题。我的错误是我在所有项目的模块lib文件夹中粘贴了 android-support-v4.jar google-play-services.jar (我的项目包含3个模块)。我需要做的是将这些jar只粘贴到我主模块的lib文件夹中,其他模块会自动引用它们。

答案 1 :(得分:16)

远离Android Studio,我在finder / workspace中打开了项目并执行了此操作:

1- MyProject文件夹 - >构建 - >中间体 - > dex-cache - > cache.xml,并删除了所有support-v4.jar项目。

2-远离Android Studio,去了我项目中的每个模块 - > lib文件夹 - >并删除了support-v4.jar。

然后清理项目并运行它,感谢上帝:)

答案 2 :(得分:6)

我有同样的错误。通过添加到gradle文件来解决它。

    dependencies{
        compile 'com.google.android.gms:play-services:8.3.0'
        compile 'com.android.support:appcompat-v7:23.1.0'
        compile 'com.android.support:support-v4:23.1.0'
    } 

答案 3 :(得分:6)

如果你有:

compile 'com.android.support:recyclerview-v7:24.2.0'
compile('com.android.support:appcompat-v7:23.2.0') { exclude group: 'com.google.android', module: 'support-v4' }

在您的项目中,还添加:

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

compile 'com.android.support:design:24.2.0'

答案 4 :(得分:3)

在我的情况下,问题出在模块sdk版本中。我把它从2.2改为4.4,问题解决了。

答案 5 :(得分:3)

我遇到了同样的错误。

从my-project / app / libs文件夹中删除库(jtwitter.jar)帮助了我。

然后清理项目并运行它并且工作正常。

答案 6 :(得分:3)

清洁和重建是我开始工作所需的一切。

答案 7 :(得分:2)

我使用了一种不同的方法,将ABS res文件夹与我的res文件夹合并,并使用ActionBarSherlock.jar作为全局库。

到目前为止效果很好,希望这有助于某人!但这是一个黑客攻击,因为我厌倦了做很多事情而且我不能使用Gradle,因为其他一些开发人员在没有Gradle的情况下使用Eclipse ADT。

问题的根本原因是在ABS和我的项目中都使用了android-support-v4,这使得DEX变得复杂。

答案 8 :(得分:2)

如果其他人通过Github提供的Project Tango示例遇到此问题,我通过在应用程序的build.gradle文件中注释以下行来解决这个问题:对于那些无法运行的项目:

compile fileTree(dir: external_lib_prefix + '/jar', include: ['**/*.jar'])

答案 9 :(得分:1)

我在Android Studio 2.3中遇到了同样的问题,在我的情况下,我有一个版本号的混合物,它将构建完成,我改变了:

dependencies {
    compile 'com.google.android.gms:play-services-wearable:7.5.0'
    compile 'com.google.android.gms:play-services-analytics:7.5.0'
    compile 'com.google.android.gms:play-services-drive:8.4.0'
}

dependencies {
    compile 'com.google.android.gms:play-services-wearable:8.4.0'
    compile 'com.google.android.gms:play-services-analytics:8.4.0'
    compile 'com.google.android.gms:play-services-drive:8.4.0'
}

答案 10 :(得分:0)

对于其他想知道为什么即使按照建议的其他所有方法解决问题仍然存在的人,这可能会有所帮助。

对我来说,当我添加 Glide库

时,问题就开始了
dependencies {
  .........
  implementation 'com.github.bumptech.glide:glide:4.8.0'
  .........
}

我已经添加了。

implementation 'com.android.support:design:26.1.0'

与某处的Glide支持库矛盾的地方。

解决方案:删除或降级您的Glide支持版本。

 implementation 'com.github.bumptech.glide:glide:4.0.0'