Android Studio构建错误-Multiple dex files define Landroid/support/v4/。

24

我无法在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个回答

44

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


这不是我遇到的同样问题的原因...等我找到解决方案后,我会发布我的想法。 - JMRboosties
1
谢谢,问题解决了。我猜是拥有两个相同的支持库副本导致了这个错误。 - alicanbatur
1
这个方法可行,但我必须重新构建项目才能真正消除错误。 - Lee
如果我只有一个模块并且出现了这个错误怎么办?@IgorGanapolsky - Kaushal28
@NoOne,这可能是由于Gradle中存在冲突的传递依赖项。运行“./gradlew -q app:dependencies”以查找它们。 - IgorGanapolsky
显示剩余3条评论

16

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

1- 进入MyProject文件夹 -> build -> intermediate -> dex-cache -> cache.xml,并删除所有support-v4.jar项。

2- 同样地,在我的项目的每个模块中 -> lib文件夹中,也删除了support-v4.jar。

然后清理了项目并运行它,感谢上帝它可以工作了:)


解决方案可行,我在使用 okhttp-2.5.0.jar 时遇到了问题。完成这些步骤后,项目已经构建成功。 - Alexandr

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

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'

在我努力工作了三天试图弄清楚AS的问题后,你拯救了我的生命。看到Google的工程师什么都不做来缓解我们的痛苦,真是让人感到非常恼火。 - The_Martian

3
清理并重新构建就足以让我的工作正常运行。

3

在我的情况下,问题出在sdk版本上。我将其从2.2更改为4.4,问题得到了解决。


你是指 minSdkVersion 还是 targetSdkVersion? - IgorGanapolsky
1
我指的是构建者的SDK版本。 请查看:项目结构->模块->模块SDK。 - 3akat

3

我遇到了同样的错误。

从my-project/app/libs文件夹中删除一个库(jtwitter.jar)有所帮助。

然后清理项目并运行,就可以正常工作了。


3

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

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


2

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

到目前为止工作得很好,希望这能帮助某些人!但这是一种hack方式,因为我已经厌倦了做许多事情,并且由于其他开发人员正在使用没有Gradle的Eclipse ADT,所以我无法使用Gradle。

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


听起来不错。据说你可以在Eclipse中使用Gradle,尽管我从未尝试过。无论如何,我处于类似的位置 - 我在Android Studio中使用Gradle,而我的队友们没有。但我发现我仍然可以使用它而不会与其他人冲突。 - IgorGanapolsky

1

对于其他人想知道为什么即使做了所有建议的事情,这个问题仍然存在,这可能有所帮助。

对我而言,问题始于添加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'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接