解决TaskExecutionException: Execution failed for task(app:transformClassesWithDexForDebug)

前言

最近在开发中频繁遇到org.gradle.api.tasks.TaskExecutionException: Execution failed for task这个问题,导致无法编译通过。这里我给出自己的解决办法。

分析

1.自定义属性

检查attrs.xml文件中有没有相同的属性名(我在编译的过程中会给出错误的提示):

  1. 重命名属性
  2. 提取属性,作为公共的属性
<attr name="text" format="string|reference" />

<declare-styleable name="Sample">
    <attr name="text" />
</declare-styleable>

<declare-styleable name="Sample1">
    <attr name="text" />
</declare-styleable>

2.属性名和系统自带的相同

这个我没有做深入的分析,我自己在引入一个第三方的控件时,自定义属性中有个textSize,然后编译的时候就报错了,然后排查,就推测应该是这个属性是系统自带的库中的属性相同了,导致冲突。

解决的办法是:建议在每个自定义的属性前加上declare-styleable的名称的缩写,以便区别。

<declare-styleable name="CustomView">
        <attr name="cv_text" format="string"/>
        <attr name="cv_text_color" format="color"/>
    </declare-styleable>

3. 命名空间重复引入

解决完上面的问题后,我再次编译我的项目的时候,发现又报了相同的错误。经过排查是因为xml文件中的tools命名空间引入了两次(不会提示错误),于是去掉了一个,最终编译成功。

总结

以上就是我遇到的出现TaskExecutionException的情况以及自己的解决办法。大家在开发中还是要养成良好的编码习惯,做好规范处理,避免出现一些不必要的问题。如果出现了,不要慌张,根据修改的内容进行定位、推测、排查、总结。

猜你喜欢

转载自blog.csdn.net/ChrisSen/article/details/86505368
今日推荐