Duplicate class okhttp3...

1.问题出现

引入了一个jar包,jar包中有okhttp3,但是我引入的其他依赖中也有okhttp3,所以就出现了Duplicate class okhttp3...的错误

密密麻麻看着都头疼,其实这个问题就是重复引用,在谷歌换了各种关键词,找出出现最为频繁的几个方案列出来:

方案1:compileOnly files('libs/***.jar')

结果:仅能保证编译通过,但compileonly等修饰的库不会一块打包进APK

方案2:增加packagingOptions(点击这里查看)

android {
	...
    packagingOptions {
      exclude 'META-INF/DEPENDENCIES'
      exclude 'META-INF/LICENSE'
      exclude 'META-INF/LICENSE.txt'
      exclude 'META-INF/license.txt'
      exclude 'META-INF/NOTICE'
      exclude 'META-INF/NOTICE.txt'
      exclude 'META-INF/notice.txt'
      exclude 'META-INF/ASL2.0'
      exclude("META-INF/*.kotlin_module") 
    }

  	//或者
    packagingOptions {
    	resources.excludes.add("META-INF/*")
    }
}

结果:无效

方案3:添加configurations(点击这里查看)

dependencies {
  implementation(name: 'xxx', ext: 'jar') {
      exclude module: 'okhttp3'
  }
}

结果:无效

方案4:在android标签下添加configurations(点击这里查看)

android {
	...
	configurations {
        all*.exclude group: 'com.squareup.okhttp3', module: 'okhttp'
    }
}

结果:成功

总结:

谷歌换了很多关键词搜索,搜索出来的答案反反复复就那么几个,也许其他方案对别人有效,也许是我的配置信息有问题,但是最无奈的还是抄答案这种行为,有些解决方案的文档写的非常模糊,甚至格式都写得很凌乱,也没有贴出原答案的出处,这让原本不富裕的时间雪上加霜。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值