注册

Android依赖冲突解决

一、背景

工程中引用不同的库(库A和B),当不同的库又同时依赖了某个库的不同版本(如A依赖C的1.1版本,B依赖C2.2版本),这时就出现了依赖冲突。

二、问题解决步骤

查看依赖树

运行android studio的中如下task任务即可生成依赖关系,查看冲突是由哪哪些库引入的(即找到库A和库B)。 c270278b95d841718ab1ef56744e58ef~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image?

cc3ba8a258824ec29099ea985f089973~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image?

排除依赖

使用 exclude group:'group_name',module:'module_name'

//剔除rxpermissions这依赖中所有com.android.support相关的依赖,避免和我们自己的冲突
implementation 'com.github.tbruyelle:rxpermissions:0.10.2', {
exclude group: 'com.android.support'
}

注意:下图中红框处表示依赖的版本由1.0.0被提升到了1.1.0。如果对1.0.0的库中的group或module进行exclude时,当库的版本被提升时,exclude将会失效,解决办法时工程中修改库的依赖版本为被提升后的版本。 eb92bd2ff99b48d8ab997f3d251002b9~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image?

使用强制版本

冲突的库包含了多个版本,这时可直接使用强制版本。在项目的主module的build.gradle的dependencies节点里添加configurations.all {},{}中的前缀是 resolutionStrategy.force ,后面是指定各module强制依赖的包,如下图所示,强制依赖com.android.tools:sdklib包的30.0.0:

1d1b2b384f654fdf8eeb64bd130f8429~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image?

作者:Android_Developer
来源:juejin.cn/post/7042951122872434696

0 个评论

要回复文章请先登录注册