Android 开发:引入重复包报错 Error:Execution failed for task ‘:app:transform...’解决方法
Android 开发过程中,有时候会遇到往项目中导入重复包引起的错误,尤其是接手别人的项目,或者是合作开发的时候,会遇到这种情况,导入重复包的问题一般会报 Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug’. 的错误提示。
错误提示图示如下:
方法一:
遇到这种情况一般就是开发者在不知情的情况下往项目中引入一个新的工具包,然后立马就会报这个错误。解决这种情况的方法很简单,要么直接通过查看 build.gradle 文件里面引入的工具包,对比查找重复的工具包,直接删除相同的工具包的其中一个,然后重新编译一下项目即可,这种是最基本的方法。
方法二:
但是如果项目中引用的工具包过多,不容易排查查找重复工具包的话,就需要使用杀手锏了,这个方法可以一次设置终身受益,具体步骤如下所示。
1、找到 Android Studio 的顶部菜单栏里面,然后点击 File—>Other Settings—>Default Settings;
2、然后进入 Default Preferences 管理界面, 然后在左侧菜单栏选择”Build,Execution,Deployment“中对应目录下的”Compiler“选项;
3、在 Compiler 模块对应的选择中,找到”Command-line Options:“选项,然后在该选项对应的输入框里面输入:--stacktrace 命令行,然后点击底部的”Apply“按钮;
4、点击”Apply“按钮之后,最后点击”OK“按钮即可;
5、然后点击项目编译一下工程,然后就可以看到提示重复使用工具包的包名,然后删除重复的引用包即可。
注意:
如果删除重复包之后,项目还是一直报错,那就要多编译清理几次项目缓存,就解决报错了。
如果根据方法 2,删除所有错误提示的工具包之后才没有提示该错误,但是项目中所依赖该包的方法报”undefined“的错误,那么很有可能是引用的工具包自身有问题,解决方法:可以通过尝试降低版本或升高版本来解决该问题,eg:compile 'com.github.bumptech.glide:glide:3.7.1’替换改成 compile 'com.github.bumptech.glide:glide:3.7'
或者是 compile 'com.github.bumptech.glide:glide:3.7.1’替换改成 compile 'com.github.bumptech.glide:glide:3.7.2’ 这样问题应该就解决了。
最后
以上就是本章的全部内容,欢迎关注三掌柜的微信公众号“程序猿 by 三掌柜”,三掌柜的新浪微博“三掌柜 666”,欢迎关注!
版权声明: 本文为 InfoQ 作者【三掌柜】的原创文章。
原文链接:【http://xie.infoq.cn/article/21b6081ff50bc7a3ec4fc2996】。文章转载请联系作者。
评论 (1 条评论)