問題:項目裏常常須要添加第三方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包中的類和包名一致或衝突)