带有config的资源'attr / font'的重复值“

时间:2017-12-06 06:54:19

标签: android android-resources

我现在真的知道为什么我得到这个error,我该如何解决它。 实际上我不确定在我得到error之前我做了什么。

  

错误消息:   /Users/hyun/.gradle/caches/transforms-1/files-1.1/appcompat-v7-27.0.1.arr/25699caf34fef6313d6ec32013a1a117f/res/values/values.xml   错误:资源'attr / font'与config的重复值“。   错误:此前定义的资源

     

/Users/hyun/Desktop/Laftel-Android/app/build/intermediates/incremental/mergeDbugResources/merged.dir/values/values.xml   资源'attr / font'与config的重复值“。   以前在此定义的资源。

     

Java.util.concurrent.ExecutionException:com.android.tools.appt2.Aapt2Exception:AAPT2错误:检查详细信息任务':app :: mergeDebugResources'的执行失败。   错误:java.utilconcurrentExcutionException:com.android.tools.aapt2.Aapt2Exception:AAPT2错误:检查日志以获取详细信息

13 个答案:

答案 0 :(得分:33)

支持库26将字体属性添加到像TextView等xml元素中。在我的例子中,我使用的是具有自定义视图的库和自定义属性app:font,因此它们发生了冲突。将库属性重命名为其他内容(textFont)后,一切都恢复正常。那么,你在某处使用自定义'font'属性吗?您最近是否更新了gradle以支持图书馆26或27?如果您无法覆盖属性名称,请尝试回滚到25

答案 1 :(得分:33)

与我们之前使用的逻辑冲突的概念可能会应用自定义字体。

<强>以前

我们使用以下代码为字体创建自定义属性。

    <declare-styleable name="CustomFont">
        <attr name="font" format="string" />
    </declare-styleable>

我改变了什么

在我的情况下,这是问题,我通过重命名attr名称

解决了这个问题
    <declare-styleable name="CustomFont">
        <attr name="fontName" format="string" />
    </declare-styleable>

如果您使用任何第三方库或自定义视图&#34; font&#34; 属性

,则同样的事情可能适用

根据reverie_ss的建议,请检查 res-&gt;值 - &gt; attrs.xml

答案 2 :(得分:11)

迁移到AndroidX后,我的错误消息是

error: duplicate value for resource 'attr/progress' with config ''

并且我为自定义视图定义了一个自定义属性,如下所示:

<declare-styleable name="ProductionProgressItemView">
    <attr name="progressTitle" format="string"/>
    <attr name="progress" format="string"/>
    <attr name="progressPercent" format="integer"/>

将进度重命名为progressValue可以解决此问题。

答案 3 :(得分:2)

我将android-X库更新为较新的版本,并且在styles.xml中出现了此类错误

error: duplicate value for resource 'attr/progress' with config ''

这是我以前的代码

<declare-styleable name="CircleProgressBar">
    <attr name="min" format="integer" />
    <attr name="max" format="integer" />
    <attr name="progress" format="integer" />
    <attr name="progressbarColor" format="color" />
    <attr name="progressBarThickness" format="dimension" />
</declare-styleable>

我通过将其重构为progress来更改progressValue属性值,如下所示。

<declare-styleable name="CircleProgressBar">
    <attr name="min" format="integer" />
    <attr name="max" format="integer" />
    <attr name="progressValue" format="integer" />
    <attr name="progressbarColor" format="color" />
    <attr name="progressBarThickness" format="dimension" />
</declare-styleable>

对我有用。

答案 4 :(得分:1)

我正在使用支持库27.1.1,并且肯定targetSDKVersion是27。就我而言,这与其他库有冲突这是Google Play服务也添加了支持库,但版本较旧,因此有两个库会引起问题。

将此添加到项目级别的build.gradle文件中

task clean(type: Delete) {
delete rootProject.buildDir
}

subprojects {
    project.configurations.all {
        resolutionStrategy.eachDependency { details ->
            if (details.requested.group == 'com.android.support'
                    && !details.requested.name.contains('multidex') ) {
                details.useVersion "26.1.0"
            }
        }
    }
}

我在这里link

答案 5 :(得分:1)

尝试compileSdkVersion 25,然后一切正常。 支持库26在XML元素(如TextView等)中添加了font属性,因此,如果要使用sdkversion 26,则需要将库属性重命名为其他名称(textFont),一切都恢复正常

答案 6 :(得分:0)

在我的情况下:错误:配置“”的资源“ attr / mode”的重复值

它与以下库直接相关

implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2'

我必须将名称为 mode 可声明样式的重命名为诸如 custom_mode 之类的名称。然后修复了错误。

答案 7 :(得分:0)

我也有这个问题...

我的问题:我在两个xml中使用了相同的属性名称(例如editable):attr_1.xmlattr_2.xml

attr_1.xml:

<resources>
    <declare-styleable name="CustomContainerEditText">
        <attr name="android:text" format="string" />
        <attr name="editable" format="string" />
    </declare-styleable>
</resources>

attr_2.xml:

<resources>
    <declare-styleable name="CustomContainerEditText">
        <attr name="editable" format="string" />
    </declare-styleable>
</resources>

解决方案: (简短答案)我只是从一个xml属性文件(如format="String")中删除 attr_2.xml,并且解决了我的问题。

attr_2.xml:

<resources>
    <declare-styleable name="CustomContainerEditText">
        <attr name="editable" />
    </declare-styleable>
</resources>

答案 8 :(得分:0)

在我的情况下,textColor和text_background_color造成了问题,但是在添加了格式之后,效果很好 在添加格式之前

.babelrc

在将格式添加到textColor和text_beckground_color属性后,它就解决了

<declare-styleable name="OtpView">
    <attr name="android:inputType">number</attr>
    <attr name="textColor"/>
    <attr name="OtpView_android_textColor" />
    <attr name="text_background_color"/>
    <!--<attr name="text_background_color" format="color">?back_icon_color</attr>-->
    <attr name="otp" format="string" />
    <attr name="lineColor" format="reference|color" />
</declare-styleable>

答案 9 :(得分:0)

只需不断减少路径中提到的依赖项的版本
在你的情况下:/Users/hyun/.gradle/caches/transforms-1/files-1.1/appcompat- v7-27.0.1.arr/25699caf34fef6313d6ec32013a1a117f/res/values/values.xml

所以减少appcompat-v7-27.0.1的版本号< /strong> 到 27.0.0 可能会起作用。

如果不行就继续减少版本号,每次都重新构建项目,直到成功。

答案 10 :(得分:0)

我遇到了同样的问题。 就我而言,我刚刚

implementation 'com.android.support:appcompat-v7:28.0.0'

我加了

implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'

它对我有用!

答案 11 :(得分:0)

重复 实现 'com.android.support.constraint:constraint-layout:2.0.4'

我删除了它。

答案 12 :(得分:-1)

如果要迁移到androidx,请尝试将以下代码放入gradle.properties中,如果项目目录中不存在此文件,则创建一个并放入以下行。解决了

Duplicate value for resource 'attr/.*' with config ''

我的情况下的错误

android.enableJetifier=true
android.useAndroidX=true