编译问题: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。同时引用了相同的库
下次,引用别人的库,或者别人的项目时。应该检查一下 是否自己也引用了相同的库。
最后,感谢上方提到的两篇文章的博主
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端