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


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

我的報錯信息如下:

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,發現編譯通過了。

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

但是!!!!!

在運行時報class not find 之類的,然后又試着換成保留這個包的而刪除另外一jar包里的,編譯通過,運行成功。

我覺得是:第三方jar包他們在生成時可能把某些類做了關聯,直接刪除可能會出現錯誤。所以遇到這種jar包里類沖突的情況,不能隨便刪除其中一個,還要看會不會有某種關聯關系導致其他類不可用。

 

》》》這里請教下這種關聯關系到底是怎樣的嗎,鄙人對於編譯,dx這方面不太懂。

 

附網上其他解決辦法:

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

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

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

方法四:
      原因是有重復的。jar被引用,可以查看你的build path,尤其是Android Dependencies一定有重復引入的.jar包,解決的方法是在libs刪除重復的jar即可。(不是這種情況)

方法五:
      在項目中,有一個類的包名和引用的jar包中的類和包名一致,如果用的是jar包中的類,所以工程中的這個類就是重復引用的,刪除工程中重復引用的類后,成功打包啟動。(我的情況跟這個類似,不過是兩個jar包中的類和包名一致或沖突)

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM