【Android筆記】Unable to execute dex: Multiple dex files define 解決方法

問題:項目裏常常須要添加第三方jar包,加入新的jar包後編譯時可能報錯Unable to execute dex: Multiple dex files define。ui

個人報錯信息以下:google

1 [2015-06-11 09:54:32 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/google/protobuf/AbstractMessage$1;
2 [2015-06-11 09:54:32 - SharePDF] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/google/protobuf/AbstractMessage$1;

上網查別人的問題和解決方法,檢查本身的lib目錄後發現有兩個jar包裏都含有google.protobuf,試着刪除其中一個jar包裏的google.protobuf,發現編譯經過了。spa

1 [2015-06-11 10:10:45 - SharePDF] Dx 
2 trouble writing output: already prepared

可是!!!!!.net

在運行時報class not find 之類的,而後又試着換成保留這個包的而刪除另一jar包裏的,編譯經過,運行成功。插件

我以爲是:第三方jar包他們在生成時可能把某些類作了關聯,直接刪除可能會出現錯誤。因此遇到這種jar包裏類衝突的狀況,不能隨便刪除其中一個,還要看會不會有某種關聯關係致使其餘類不可用。code

 

》》》這裏請教下這種關聯關係究竟是怎樣的嗎,鄙人對於編譯,dx這方面不太懂。orm

 

附網上其餘解決辦法:blog

方法一:
       Eclipse->Project->去掉Build Automatically->Clear ->Build Project->Build Automatically,關閉Eclipse,再打開(試過,個人問題不是出在這)ip

方法二:           
      更新ADT插件,刪除workspace目錄下的.metadata目錄,(未試過)
ci

方法三:
      在你的項目下某個文件夾中有一個後綴爲*.APK的文件,刪掉,重啓Eclipse便可。(未試過

方法四:
      緣由是有重複的。jar被引用,能夠查看你的build path,尤爲是Android Dependencies必定有重複引入的.jar包,解決的方法是在libs刪除重複的jar便可。(不是這種狀況)

方法五:
      在項目中,有一個類的包名和引用的jar包中的類和包名一致,若是用的是jar包中的類,因此工程中的這個類就是重複引用的,刪除工程中重複引用的類後,成功打包啓動。(個人狀況跟這個相似,不過是兩個jar包中的類和包名一致或衝突)

 

參考原文:http://blog.csdn.net/mxlxiao7/article/details/8978930

相關文章
相關標籤/搜索