你們是不是會經常遇到這樣的一個錯誤:com.android.dex.DexException: Multiple dex files define XXXX,一般情況下,是我們項目中引用了重複的庫或者jar包引起的,我們找到去掉即可解決,但是如果你遠端依賴的兩個庫裡,同時引用了同一個庫,你該怎麼解決呢?把那兩個庫都下載下傳下來,自己修改?去掉,再本地引入嗎?今天告訴你們一個簡單的方法。
說實話,随着現在輪子越來越多,而且很多人都樂于分享和封裝一些控件或者開源的庫,來共享給大家一起使用。但是經常很多的人封裝都在自己庫裡引起很多其他的第三方庫,這就不免有時會發生你引用的兩個庫都同時引用了同一個第三方庫,最坑人的就是他們封裝的開源庫裡使用的都是直接引用,而不是使用 Provided 的方式暴露給你,而是自己直接用了。
我知道有很多人都用強迫症,在使用遠端依賴慣了以後,不習慣本地導入的,感覺不舒服了。是以難免就得想辦法解決這個問題。
舉個例子:
比如:你在使用了一個能生成你符合需求二維碼的庫,而這個庫在内容引用了zxing。但是這裡面的掃一掃界面并不好看,你發現了另外一個庫裡的掃一掃,正好符合你的需求,是以你就在掃一掃這個功能上用了另外一個庫,但是這個庫也引用了zxing。
當然了,我隻是舉了一個極端的例子,不會經常發生如上的例子,但是這個錯誤确實很常見。
如果,就像例子中那樣做,你去編譯運作項目時,這時,你就會看到一個錯誤,大約如下意思:
重點看這個錯誤:com.android.dex.DexException這就說明你引用的庫或者jar包有重複的地方,是以,這時,你就需要從你引用的遠端依賴或者jar中找到重複的,去删掉一個就可以解決了。
是不是很簡單,這是在你控制的前提下,如果就像我剛才舉得例子一樣,如果你遠端依賴的兩個庫,不是本地的哈,同時引用同一個第三方,那該怎麼解決呢?
再舉個例子: