2017-09-05 36 views
42
Error:java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex 
Error:java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex 
Error:com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex 
Error:com.android.dex.DexException: Multiple dex files define Lcom/google/zxing/integration/android/IntentResult; 
+0

显示'build.gradle' –

+1

@IntelliJAmiya这不是重复的报告问题。至少对我而言,问题始于AS 3.0 beta 4,我已经使用multidex。 – ADev

+0

如何?我没有特权,我认为 – ADev

回答

15

所以我通过执行以下操作来解决这个问题:

  • 删除您的项目中的./gradle文件夹
  • 删除所有建立文件夹和gradle这个缓存 。我跑了以下命令:

怎么样?

cd ~/[your project root folder] && find . -name build -exec rm -rf {} \; && rm -rf $HOME/.gradle/caches/ 

假设你的gradle 配置文件都在$HOME/.gradle文件夹中。

  • 在Android Studio中,进入File > Invalidate caches/Restart...并使缓存失效并重新启动它。
+2

删除.gradle文件夹修复了我的问题。感谢帮助! –

+20

在AS 3.0 Beta 7上的问题相同,不幸的是这仍然不适用于我的情况。 – Kikiwa

+3

已经尝试了以上所有解决方案,但不适用于AS 3.0 beta 7.请帮助 –

48

我有与Android Studio 3.0 beta 4相同的问题。我找到了解决方案。

1.Build菜单中,按Clean Project按钮。

Clean Project

2.任务完成后,按从Build菜单Rebuild Project按钮。

enter image description here

+0

我很高兴帮助你的问题的解决方案的一部分 –

+6

不适用于Android Studio 3.0 RC2 –

+0

我想知道为什么答案不是有用的,为什么报告 的答案? @SagarTrehan –

8

您应该能够通过gradle这个检查你的依赖,并寻找重复这样去这个错误的原因: ./gradlew -q app:dependencies

在我的情况下,下面的错误是在编译时发生:

Duplicate zip entry [httpcore-4.4.1.jar 

并且通过在我的build.gradle中执行此操作得到解决:

implementation ('me.dlkanth:stetho-volley:1.0') { 
    exclude group: 'org.apache.httpcomponents' 
} 
+1

在我的情况'com.android.volley'被添加了两次,我也添加了排除语句,现在它的工作正常。运行这个脚本的 –

+0

给了我'不能从9.0.1'确定java版本。我使用Android Studio 3.0更新了Gradle从4.1到4.2.1 – androidtitan

+0

@androidtitan只有Java 8与Android兼容 –

1

此错误可能有多种原因。 没有干净和重建或像这样做为我做这项工作。

对我来说,问题是依赖:

compile 'org.jetbrains:annotations-java5:15.0' 

我删除它,一切运行良好。

+0

您是如何得出这个结论的?通过试验和错误? –

22

了解Android Studio 3.0我做了什么,是要加入到我的gradle产出:

multiDexEnabled true 

和它的工作!

android { 
    compileSdkVersion 25 
    buildToolsVersion '26.0.2' 
    defaultConfig { 
     applicationId "com.xx.xxx" 
     minSdkVersion 15 
     targetSdkVersion 24 
     versionCode 9 
     versionName "1.0" 
     multiDexEnabled true //Add this 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     release { 
      shrinkResources true 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 
     } 
    } 
} 
+6

对我来说,这并没有解决问题...我仍然继续努力解决它.. – Hpsaturn

+0

请尝试这些步骤:删除您的.gradle,干净和重建。另外不要忘记添加multiDexEnabled。希望它有帮助 – Prodigy

0

在我的情况的罪魁祸首是SendGrid lib下,加入这一点,它得到了修正:

compile 'com.github.danysantiago:sendgrid-android:1',{ 
    exclude group: 'org.apache.httpcomponents', module: 'httpclient' 
} 
0

我使用Studio的3.0.0版本。在我的情况下,有唯一的解决方案:我已经从我的项目中的“libs”文件夹中删除旧的JAR:它是具有依赖性的“ksoap2”包。使用Gradle获得的包通常不会相互冲突,至少在使用最流行的包时。但是如果libs文件夹中包含所有自己的依赖关系,则可能会破坏您的构建。

6

检查您的依赖项以获取最新版本,通常它与您的任何依赖项的版本不一致。

1.Build>清理项目 2.重建项目

检查详细日志的依赖性导致合并问题,并更新相同。对每个依赖重复相同的操作。

1

将“compile”更改为“compileOnly” 这是对我有用的东西。

-1

通过移除Android的数据绑定库解决了这个:

dataBinding { 
    enabled = true 
} 
+0

这不是一个有效的答案,因为你将无法使用数据绑定。如果它对你很好,就意味着你不要在你的应用程序中使用数据绑定 – x10sion

7

尝试内摇篮这段代码,它的工作对我来说..

android { 
     defaultConfig { 
      multiDexEnabled true 
     } 
    } 
+0

如果上面的代码不起作用,那么通过按住光标,检查你的每个库,如果它有可用的新版本,然后更新它,同步,清理项目,重建项目并运行。希望它能为你工作。 – Opriday

+0

这个人做的诀窍:D – Fahad

+0

此代码适用于Android 5.1及以上...对于Android版本以下..有另一种方法来添加multidex支持。 https://developer.android.com/studio/build/multidex.html – Relsell

3

我Android Studio中3.0面临同样的问题。1,我尝试了所有可能的情况下,如上面提到的什么工作对我来说,我终于解决了这个问题通过

解决方法1:

  • 关闭Android Studio中
  • 删除位于C:\Users\YourComputerName\.gradle不是从应用程序的.gradle文件夹.gradle
  • 重新启动机器人工作室

它会下载所有必要的罐子,并添加到您的构建路径

溶液2:

  • 删除重复的罐子从库中的应用程序文件夹/库
  • 重新运行再次应用

因为如果有在build.gradle文件中已经定义的重复的jar文件它引起问题。

这解决了我的问题。它可以帮助别人..

+0

Linux用户呢?我得到同样的错误。请指导我 –

+0

做同样的事情,我在你的linux中提到。即转到终端的.gradle的位置就像'〜\ .gradle \' –

+0

我正在尝试,但它不可见..您试图解释哪个位置?我在哪里安装了我的Android工作室或项目位置? –

0

我使用 的Android 3.0.1工作室构建 #AI-171.4443003,建于2017年11月9日

我从libs文件夹中删除JAR文件。这对我来说很好

0

有时它可能由于同一个库(jar文件)出现两次或者您的项目已达到64k个方法限制而发生。

解决方法: 1)删除数据绑定,如果你的项目中使用这个 2)从lib文件夹中删除相同的类型库,或从C //用户删除.gradle文件// // your_pc的gradle中3 )应用此。你的build.gradle

android { 
    defaultConfig { 
     multiDexEnabled true 
    } 
} 
相关问题