你是否還在為依賴沖突而費時費力?
你是否看到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中
核心:
① 解壓aar文件到tmpDir目錄下
unzip ×××.aar -d tmpDir
② 找到classes.jar包,用壓縮工具打開,刪除目標文件
③ 將tmpDir重新打包成一個新的aar
jar cvf ×××NewLib.aar -C tmpDir/ .