2017-09-05 67 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 
    } 
} 
相關問題