0
点赞
收藏
分享

微信扫一扫

终极方案:快速解决Android项目依赖冲突

冲突类型无非是类、jar包重复,比如:

在此不多做介绍了,直接上解决方案

解决步骤:

一、精确查找有冲突的依赖库

1、配置显示冲突依赖详细信息

defaultConfig{
configurations.all {
resolutionStrategy {
// 显示冲突的依赖库版本信息
failOnVersionConflict()
}
}
}

2、编译,查看控制台详细输出

3、直接修改对应依赖版本(无法修改的情况,请看以下“二”、 “三” 解决方案)

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'
}

三、使用全局强制指定依赖版本

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/ .
举报

相关推荐

0 条评论