Multiple dex files define Lokhttp3/internal/wsWebSocketProtocol

Multiple dex files define Lokhttp3/internal/wsWebSocketProtocol

老套路,先曬圖

圖一:
這裏寫圖片描述
如題,在編譯打包時遇到了如上錯誤,很明顯這是一個依賴庫衝突的問題,個人app下依賴一個 ad library,而 ad library有依賴了一個 http library,這是一個我用okhttp封裝的網絡請求庫,而 ad library 又依賴了 compile 'com.squareup.okhttp3:okhttp:3.9.1' 這依賴關係確實有點混亂,那這時候有人說了,你的 ad library爲何不用 http library裏面的okhttp呢?自從AS3.0 gradle4.0開始依賴使用 implementation 代替了 compile 關鍵字,所以 compile 就被過時了,http 雖然依賴了 okhttp ,可是 ad library要想使用 okhttp 是不能夠的,由於使用implementation 對於ad library 是不可見的,因此ad library又依賴了一次 compile 'com.squareup.okhttp3:okhttp:3.9.1' 由於 ad library須要單獨的進行定製化的網絡請求配置,因此 ad library中的網絡請求是沒有封裝進http library中的,因此致使了重複依賴的問題,使用 implementation 關鍵字雖然能夠屏蔽ad library訪問 http library中 okhttp 的api,可是依賴衝突的問題確實仍是存在的...android

因而乎,網上搜了一篇帖子:web

https://stackoverflow.com/questions/45111497/android-gradle-failed-multiple-dex-files-define-okhttpapi

看來一下和個人狀況一毛同樣,報的錯誤也同樣,直接戳到Answer處,解決方式以下websocket

圖二:
這裏寫圖片描述網絡

而後直接去除掉重複的依賴,修改以下後,再rebuildapp

圖三:
這裏寫圖片描述socket

內心想着,這個問題終於解決了,喝了口水,長呼了一口氣。。。gradle

我擦,居然又爆紅了,我勒個去,什麼狀況?這不科學啊,什麼鬼?內心很鬱悶,這是爲何呢?ui

不行啊,看來我必需要放大招了,內心開始仔細揣摩了,認真想一想,絕逼哪裏確定是有問題的,start thinking...spa

認真起來的男人是最帥的 0.0~

仔細看了看http library中的 okhttp 是3.3.1,而 ad library中的 okhttp 3.9.1,突然想起來以前遇到過同時依賴兩個不一樣版本的庫也會出現這樣的問題,因而,靈光一現,立馬把版本號改同樣試試,修改後以下:

圖四:
這裏寫圖片描述

而後再rebuild...

oh yeah ~ 搞定,就是這麼6... 怎一個爽快了得?

好了,今天就分享這麼多吧,一來呢總結一下本身遇到的一些問題及解決辦法,若是你也遇到,但願能幫助到大家,二來呢,但願你們若是真的幫助到大家了,麻煩大家給我點個贊或者在文章底部給我評論,或者你有什麼意見或者意見均可以相互交流,謝謝大家!

--------一個逗比的碼農和一個逗比的故事,若是想看到更多的文章,請點左側頭像下面的關注!
相關文章
相關標籤/搜索