Android:打release包時遇到的一個花式報錯-ZipException: duplicate entry:xx/xx/xx/xx.class

Y丶發表於2017-04-07

編譯時日誌大概是這樣的:
這裡寫圖片描述
還有這樣的:
這裡寫圖片描述
這裡寫圖片描述

解決過程:
因為專案在兩週前剛釋出過,所以兩週前的時間節點肯定是可以打正式包的。。。reset之後,一樣的報錯。
那麼肯定是開發環境出了問題咯。。。仔仔細細檢查了一遍本地這兩週之內的改動,沒有任何問題,而且幾個人的開發環境上跑都是一樣的錯。
然後就使用了黑科技stackoverflow,都是說jar包重複,但是那個jar包我真的只引用了一次,而且我沒改程式碼也報錯啊。
然後某同學靈機一動要把jar包移到app下(原來是在一個module下的),然後我就把整個module移到了app下,打包,報錯,這次不是原來那個a.a.a.a了,變成了umeng的a.a.a.d。。。
我好像明白了什麼。
把umeng相關的註釋掉,打包,一切正常。
去umeng官方看更新日誌,上上週剛更新。。。
感覺以前給自己挖了個坑。
雖然友盟的sdk文件上寫著gradle中這樣寫:
compile ‘com.umeng.analytics:analytics:latest.integration’
這個latest真是要命。

最後,專案結構原封不動,只是在gradle中改了umeng的版本。

總結下來就是,如果你的專案在你未引入新庫的情況下某天突然報了個duplicate entry,那麼請檢查一下gradle中有沒有引入的是某些庫的latest版本,latest雖然能讓你保持最新的庫,但是你掌控不了,除非這是你自己寫的庫。其實移動module也是可以試試的,只是程式碼看著就亂一些。

ps:我很想知道,為什麼它不在一開始就報umeng的錯而是報了另外一個三方jar的錯。

相關文章