1. 程式人生 > 程式設計 >完美解決android 專案jar包衝突的問題

完美解決android 專案jar包衝突的問題

大家在做開發中竟然需要用到一些三方庫 或者 需要整合三方的SDK開發包,尤其是專案特別龐大的時候,引用的三方的東西特別多,那麼肯定會碰到一些jar包衝突的情況。

常見的情況有以下幾種

1.專案自己引用jar包重複

2.專案中jar包和三方SDK

3.三方sdk之間都含有相同類

4.打包時候出現編譯錯誤,出現衝突

1.專案自己引用jar包重複

com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice

類似這種 v4包重複 ,直接刪掉其中一個包就可以了。

2.專案中jar包和三方SDK

這其實有兩種情況

1) 將一些三方的框架原始碼引用到專案中了比如 GSON ,Vollery這些,我們將裡面的一些檔案重寫了,引用的是原始碼,這個和我們引用的三方庫裡面的衝突了 。

這種情況,我們可以將三方庫設定為私有 provided,如果還是有衝突我們可以將

2) 直接匯入的jar包 或者 gradle中配置的依賴 和專案中原有的一些jar包出現衝突。

3.三方sdk之間都含有相同類

比如你集成了友盟的sdk,又集成了支付的sdk,還集成了一些其他的sdk。這些sdk之間會有一些衝突。

4.打包時候出現編譯錯誤,出現衝突

這種情況是正常手機除錯執行沒有問題,但是一打正式包就報錯,衝突。

說了這麼多,這些碰到這種專案中有衝突,或者有重複檔案的情況我們如何解決呢?

一般常用的解決辦法

1.雙擊shift 可以調出搜尋 這個搜尋是全域性含jar搜尋,可以快速定位到你搜索的東西存在哪個包下。

完美解決android 專案jar包衝突的問題

2.找到後 按上面講的,解決也有幾種情況

1)如果是兩個相同的jar ,直接刪掉一個

2)如果不同的jar有相同的引用 用exclude解決,大概意思就是去掉 你不需要的類

完美解決android 專案jar包衝突的問題

3)打包出現的錯誤衝突等,我們可以找到 ,或者刪除,或者修改,引入的方式可以修改為provided

這種方式只提供編譯支援,但是不會寫入apk。使用provide可以避免支援包版本衝突和重複打包導致安裝包體積徒增。

以上這篇完美解決android 專案jar包衝突的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。