编译问题:app:transformDexArchiveWithExternalLibsDexMergerForDebug

遇到问题

今天在编译的时候出现了个没见过的问题,特此记录一下。如果能帮到各位,那真是太好了。

使用Android Studio Debug 'app'时,报错:app:transformDexArchiveWithExternalLibsDexMergerForDebug

尝试解决

一时蒙蔽,通过搜索,有位大佬也遇到过此问题

https://blog.csdn.net/guoxiaolongonly/article/details/80932711

但是按照他的方法,并找不到问题所在。(你可以试试他的方法)

继续搜索

https://blog.csdn.net/u012214003/article/details/79632675

按照这位大佬的方法,发现最后一步,找gradle 的依赖树。可是由于项目比较大。依赖树过于繁杂,想看看有没有其他大佬的解决方案(其实就是懒得看依赖树)

其他文章,要么是抄的,要么不管用。我就不贴出来了

具体情况,具体解决

看完上面两篇文章,大致方向我已经找到了。就是编译的时候,交叉编译了。

说白了就是,引用库的时候 重复了。(有些人,可能是jar包或者aar包重复引用。这种情况,留一个就行了)

再编译一次,不过这次,要gradle打印出错误信息:

具体步骤

1.点击AS右下角的Gradle Console

2.点击蓝字 Run with --stacktrace

3.等待gradle编译(gradle也是一种语言,所以 有错误很正常)

4.编译完之后,找到报错的最后一个原因

我项目中的问题是

Caused by: com.android.dex.DexException: Multiple dex files define Landroid/support/v4/.....

我省略了。

省略的部分 就是我调用的方法 重复引用了

可以看到是v4包重复引起的。

好的原因找到了

 

解决问题

1.检查除app 之外的所有module,是否有在build.gradle中,引用v4包

2.如果发现,直接注释或者删除

3.clean一下,再编译运行。就不会报错了(一定要clean Project)

反思

出现该问题,是因为引用了别人的项目,引用了别人的module。同时引用了相同的库

下次,引用别人的库,或者别人的项目时。应该检查一下 是否自己也引用了相同的库。

 

最后,感谢上方提到的两篇文章的博主

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值