Error:Execution failed for task ‘:ZMU.B:transformDexArchiveWithExternalLibsDexMergerForDebug’. 原因:
根据相关文档提示,工程中有重复包被使用;
1、此时你需要去找一下所属工程中是否有重复引用包,删除多余,重新编译就可以;
2、如果使用的引用包过多不好查找,那么有一个一劳永逸的方法: 按照上图设置; 此时编译一下工程; 此时如上图提示,你可以很快定位到被重复引用的包。
https://blog.csdn.net/zengruiyue/article/details/86627278
这些包可能以 Jar 包的形式放置在 libs 目录下,可能以 Gradle 远程依赖的形式下载引入,也可能是以 Library Module 的形式放置在工程目录下。
第一种。比如app module 与 library module 各自 libs 目录中嵌入了相同的 Jar 包。这种情况也比较好解决,只需要将 app module 下的重复 jar 包删除即可。 File->Project Structure
第二种。比如对于 Gradle 远程依赖的两个第三方库,他们内部同时依赖相同的另一个辅助第三方库。这个时候我们就没办法像第一种情况那样手动删除本地文件。好在 Gradle 插件提供了相应的解决方案,即使用 exclude group 语法,如:
compile 'com.yifeng.example:example-1:1.0' compile 'com.yifeng.example:example-2:1.0'{ exclude group: 'com.android.support:support-v4:21.0.0' }如例子中所示,远程依赖的第三方库 example-1 与 example-2 内部同时引入 support-v4 包,那么只需要在其中一个的引入地方添加 exclude group 语句,将相同引入的 v4 包剔除在外即可。
https://blog.csdn.net/growing_tree/article/details/72819772
第三种,在AS的右侧External Libraries下方找到要删的包,点击右侧找到delete进行删除。这里有两种情况,一种是下面是“class.jar”包;另一种下面是“包名.jar”包。 如果是第一种,那么点击class.jar右键会有delete,直接删除即可。 如果是第二种右侧就没有delete。那么选择该包的顶层目录点击鼠标右键,点击 Library properties。弹出Library properties提示框。 这里要点击下方的绿色“+”号, 弹出Exclude from Library弹框。 选中要删除的jar包,点击“X”,两个都要点击“X”。删除jar后,点击OK。jar包就被删除了。
https://www.jianshu.com/p/ed14399bd3d7
如果依照如上方法,删除所有错误提示的包消除了该错误,但所依赖该包的方法却报undefined错误,那么非常有可能是你引用的包本身有问题;可以尝试降版本或升版本
