android:关于transformDexArchiveWithExternalLibsDexMergerForDebug问题的参考解决方案

前言

之前集成别人的一个项目时,build的时候是可以通过的,但是在实际运行的时候却出现了“transformDexArchiveWithExternalLibsDexMergerForDebug”问题。如图:
在这里插入图片描述

其他人的解决方法参考

通过百度一个多小时,大多数的说法都是项目中重复依赖同一个库,但是依赖库的版本不一致导致的问题。因此,大家给出的解决方案也很多:
比如:
1.将项目下的.gradle 文件删除,重新编译,再clean一下;
2.在根目录下的build文件中添加配置:
android {
defaultConfig {
multiDexEnabled true
}
}
3.修改主工程及其依赖model的compileSdkVersion targetSdkVersion 保持一致;

总之,大家提供的方案里面,应该都是根据自己实际开发中遇到并解决了自己的问题的,但是我都尝试了,并没有解决我的问题。所以,还是需要回归到这个异常的原因上来:项目中依赖库冲突问题

解决思路:既然我们已经确定这个异常是由于依赖库冲突引起,那我们的思路就应该是找到冲突的依赖库并把冲突的库删除。
但是,问题来了:根据编译的提示,并没有多余的log日记。所以,这个时候,我们就需要是使用gradle console来获取更多的异常日记信息了。

我的解决方案

1.使用Termimal窗口通过gradle命令获取更多的日记信息:输入gradle compileDebug --stacktrace 命令,获取编译异常日记;
2.若以上命令仍然没有获取到有用信息的话,则可以使用 gradle : demo :dependencies ,查看自己的项目所有的依赖树,从中找到重复的依赖(注意:在使用该命令时,需要管理员权限才能运行),其中“demo”为项目名称,正常情况下就是“app”;
3.还有一个特别容易忽略的问题:
在项目的libs目录下已经添加了jar包,同时,在主工程的build.gradle
文件依赖中添加 implementation fileTree(include: [’*.jar’],dir:‘libs’),另外,在dependenciesi下 implementation 对应的jar包,这样,也会造成依赖库重复依赖问题,如图:
在这里插入图片描述
在这里插入图片描述
因此,当出现这样的问题时,有两种方法解决冲突问题:
1)直接删除dependencies下的implementation jar包依赖;
2)删除libs目录下的jar包。
我遇到的就是这个情况,最后问题解决了。

总结

当遇到报错日记不明显的异常时,可以通过terminal控制台的gradle命令来获取更多的报错信息,缩小异常范围,更好的定位异常,提供效率。重用的gradle的命令有:

gradle --info 
gradle compileDebug --stacktrace
gradlew compileDebug --stacktrace (该命令需要管理员权限)

其他更多命令,大家可以参考gradle相关文档。
由于个人水平有限,有不足之处,欢迎指出,谢谢。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

易小四

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值