Android依赖冲突遇到的坑

本文介绍了解决Android项目中因依赖版本冲突导致的打包失败问题。通过详细分析Gradle依赖树,发现了不同版本的支持库之间的冲突,并提出了两种有效的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Demo地址:https://github.com/zhaopingfu/listener18

今天做项目引入了两个依赖

compile 'com.facebook.fresco:fresco:0.14.0'
compile 'com.android.support:appcompat-v7:23.0.0'

当在打包的时候发现打包失败

gradle :app:assembleDebug

这里写图片描述

这里显示我们项目里有重复的包

我们查看app下引入了哪些包

gradlew :app:dependencies

这里写图片描述

注意看图中箭头标注的两个依赖

sdk\SDK\extras\android\m2repository\com\android\support\support-v4\23.0.0\support-v4-23.0.0.pom
sdk\SDK\extras\android\m2repository\com\android\support\support-v4\24.2.1\support-v4-24.2.1.pom

这里写图片描述

发现问题

通过查看这两个文件我们知道在24.2.1中com.android.support:support-core-utils这个包是单独的一个包,v4包进行依赖,而在23.0.0中他就是v4包的一部分,而不是一个单独的包,所以当我们引入了v4包和support-core-utils的时候,因为这两个包的名字不同,所以gradle不会帮我们排除掉一个,但是打包的时候出现了相同报名,相同类名的文件,所以打包失败

解决问题

compile 'com.android.support:appcompat-v7:23.0.0'
compile 'com.facebook.fresco:fresco:0.14.0', {
    //TODO 第一种方式:禁止在内部依赖其他库,不推荐这种
    //这种方式虽然可以,但是可能导致内部的一些代码用不了了,出现其他问题,不推荐
    //transitive false

    //TODO 第二种方式
    //这种方式是在fresco中排除掉com.android.support:support-core-utils这个库的引用
    exclude(group: 'com.android.support', module: 'support-core-utils')
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值