終極方案:快速解決Android項目依賴沖突

你是否還在為依賴沖突而費時費力?

你是否看到gradle報了重復(fù)jar包或重復(fù)類而不知所措?

那么,這篇文章,教你徹底解決依賴沖突問題 ~

沖突類型無非是類、jar包重復(fù),比如:

image-20210714115838934

在此不多做介紹了,直接上解決方案

解決步驟:

一、精確查找有沖突的依賴庫

在App模塊的build.gradle配置

位置如下:

 ---> app (項目運行模塊)
      --- > build.gradle: (gradle配置文件)
              ---> android: (android 配置項)
                    --- > defaultConfig: (defaultConfig 配置項)

1、配置顯示沖突依賴詳細信息

defaultConfig{
    configurations.all {
        resolutionStrategy {
            // 顯示沖突的依賴庫版本信息
            failOnVersionConflict()
        }
    }
}

2、編譯,查看控制臺詳細輸出

顯示項目中存在 4.9.0、4.5.0 和 3.7.0 三個版本的 glide

image-20210713105458943

3、直接修改對應(yīng)依賴版本(無法修改的情況,請看以下“二”、 “三” 解決方案)

修改對應(yīng)模塊的 build.gradle 里面修改即可

dependencies {
    implementation "com.github.bumptech.glide:glide:4.9.0"
}

二、使用exclude進行依賴排除

使用依賴排除的方式

1、project依賴排除示例

// 引用 eduhdsdk 模塊,并排除 umeng的common模塊
api (project(': eduhdsdk')){
        exclude group: 'com.umeng.umsdk', module: 'common'
    }

2、遠程依賴排除示例

// 引用 socket.io-client 庫,并排除 json 模塊
implementation("io.socket:socket.io-client:1.0.0") {
        exclude group: 'org.json', module: 'json'
    }

三、使用全局強制指定依賴版本

部分情況,可能使用 exclude 排除無法解決,則可以進行全局強制指定依賴庫版本

configurations.all {
            resolutionStrategy {
                    // 強制使用 28.0.2 版本的 support 包
                force 'com.android.support:support-v4:28.0.2'
                // 強制使用 4.9.0 版本的 glide 庫
                force 'com.github.bumptech.glide:glide:4.9.0'
                
                failOnVersionConflict()
            }
        }

補充:

1. 要移除的jar包在aar包中的classes.jar中

參考鏈接:如何exclude aar包中的某個jar包

核心:

① 解壓aar文件到tmpDir目錄下

unzip ×××.aar -d tmpDir

② 找到classes.jar包,用壓縮工具打開,刪除目標文件

③ 將tmpDir重新打包成一個新的aar

jar cvf ×××NewLib.aar -C tmpDir/ .
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容