17

我知道以前曾經報告過多次dex問題,但沒有一個解決方案似乎適用於我的情況。無法執行dex:多個dex文件定義Lbolts/AggregateException

控制檯:

Unable to execute dex: Multiple dex files define Lbolts/AggregateException; 
    Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lbolts/AggregateException; 

其中一個流行的解決方案是取消標記從構建路徑的「Android的私人圖書館的容器。我不能那樣做,因爲我需要那個容器中有更多的庫。

另一種解決方法是取消標記任何以.jar格式明確添加的重複庫。我沒有這樣的圖書館。

在我的情況下,重複的圖書館是:android-support-v7-appcompat.jar 我有它在這兩個容器(從SDK文件夾中直接引用):

1)Android的私家藏書

2)Android的依賴

問題是我不能完全取消這兩個容器中的任何一個,因爲它們都包含其他必要的庫。但我也無法從任何容器中刪除這個重複的.jar文件。

編輯: N.B.當我將android-support-v7-appcompat library_project添加到我的項目中時,它會進入兩個容器。必須有某種方式才能融入其中。

任何人都可以幫助我如何做到這一點嗎?

screenshot

screenshot2 (unable to delete)

+0

請檢查你的任何依賴關係是否已經包含android-support-v7-appcompat.jar。此外,您可以在屏幕左側的樹狀視圖中看到有兩個android-support-v7元素。 – chteuchteu

+0

我意識到已經。問題是,我無法從任一容器中刪除重複的jar文件。我得到的唯一選擇是刪除整個容器(Android依賴項或Android專用庫) 如果您的意思是我應該從dexedLibs文件夾中刪除一個,那沒有幫助。他們將在我下次編譯時重新出現。它們是可執行的字節碼 –

+1

「但是我也無法從任一容器中刪除這個重複的.jar文件。」爲什麼這個? 您是否嘗試將它從兩個容器中移除,並將它們作爲單獨的庫添加到它們之外? – chteuchteu

回答

21

莫名其妙地解決

bolts-android庫是真正的麻煩在這裏。它有兩個不同版本它導致衝突。 FacebookSDK庫帶來bolts-android-1.1.2android-support-v7-appcompat帶來bolts-android-1.1.4

我在FacebookSDK庫項目中包含bolts-android-1.1.2的未標記Android專用庫容器。因此,我的項目現在只有一個版本,bolts-android-1.1.4,解決了衝突。現在運行良好。

此外,事實證明,重複的android-support-v7-appcompat條目不是問題。

+0

是的,我發現版本不匹配很可疑,但是你的意思是取消標記。 。你的意思是從構建路徑中刪除? – reubenjohn

+0

是的,但是你知道什麼...我必須取消標記它每次我打開eclipse。/還沒有資助這個解決方案呢:/我認爲這是一個日食錯誤或東西 –

+2

從主項目中刪除bolt-android和android-support庫爲我工作。:) – vinesh

7

我最近在我的反應原生項目上遇到過這個問題,你可以去你的項目的android文件夾。並在終端中點擊此命令「./gradlew app:dependencies」查看依賴關係樹。我在facebook sdk下找到了兩個用於android bolt的包。如果你排除這個封裝從Facebook SDK的東西將再次正常工作

compile ('com.facebook.react:react-native:+') { 
    exclude group: 'com.parse.bolts', module: 'bolts-tasks' 
} 
+1

感謝Hasan,我的問題是一樣的,但是與圓頂不同的軟件包似乎反應原生使用一些不同的依賴版本' react-native-firebase-analytics'和'react-native-fcm',這個不同使得dexDebug在我的項目上失敗了。還有一些'dexOptions'像'preDexLibraries'對於找到最重要的版本非常有用。在package.json中將這些包的版本更改爲與gradle運行相匹配的內容,而不是排除主應用程序build.gradle中的某些包。 –

0

作爲反應版本已更新至0.31。0,當你想整合com.facebook.fresco:animated-gif:0.10.0具有com.parse.bolts具有很好,你可以這樣做:

compile ('com.facebook.react:react-native:+') { 
    exclude group: 'com.parse.bolts', module: 'bolts-tasks' 
} 
compile ('com.facebook.fresco:animated-gif:0.10.0'){ 
    exclude group: 'com.parse.bolts', module: 'bolts-tasks' 
} 
2

加入Facebook的SDK到Android時,會發生這種情況,你可以解決它:

compile ("com.facebook.android:facebook-android-sdk:4.1.0") { 
    exclude group: 'com.parse.bolts', module: 'bolts-android' 
} 
相關問題