Program type already present: javax.annotation.*的一次解决

##问题
最近在引用stetho这个第三方库时,编译时一直报错。错误如下

* What went wrong:
Execution failed for task ':Kuaikan:transformClassesWithMultidexlistForDebug'.
> com.android.build.api.transform.TransformException: Error while generating the main dex list.

更详细的错误是

Program type already present: javax.annotation.*

也就是说,出现了两个同时引用javax.annotation的情况。
##解决
这种时候可以按照我们下面的

查询依赖库

我们可以通过gradle命令来查询当前的库的引用情况

./gradlew kuaikan:dependencies

通过这个命令,可以查看当前库的引用。

+--- com.facebook.stetho:stetho:1.5.0
|    +--- commons-cli:commons-cli:1.2
|    \--- com.google.code.findbugs:jsr305:2.0.1
+--- com.github.ctiao:dfm:0.4.4

发现了stetho内部依赖了com.google.code.findbugs。其实它内部包含了模块annotations,所以会导致javax.annotation重复引用的情况。

解决方案

既然有两个同样的库,那么只要保证其中的一个库不引入annotation就可以了。

implementation('com.facebook.stetho:stetho:1.5.0') {
        exclude group: 'com.google.code.findbugs'
        exclude module: 'annotations'
    }

表示意思是: 在引入了stetho库的同时,不引入其内部的依赖com.google.code.findbugs中的模块annotations。这样就不会出现重复引用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值