由于资源 'attr/mode' 与配置的重复值,构建失败

Build Failed because of duplicate value for resource 'attr/mode' with config

我从 1.1.2 升级 constraintLayout 版本后 -> 2.0.0-alpha2

我遇到了这个错误

    java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: Android resource compilation failed
      /Users/x/.gradle/caches/transforms-1/files-1.1/appcompat-v7-28.0.0-rc01.aar/
d5741c4d219b7f0eeb18436ff6f46f63/res/values/values.xml:1104:5-1169:25: AAPT: error: duplicate value for resource 'attr/mode' with config ''.

      /Users/x/.gradle/caches/transforms-1/files-1.1/appcompat-v7-28.0.0-rc01.aar/
d5741c4d219b7f0eeb18436ff6f46f63/res/values/values.xml:1104:5-1169:25: AAPT: error: resource previously defined here.

appCompat 版本为 v7:28.0.0-rc01

此问题可在 AS 3.3 canary 3 & 3.2 stable & 3.1.4 & 3.0.1 版本上重现

如何解决这个问题?

如果将 Android X 与支持库混合使用,错误消息看起来就像是那种,至少我找到它时是这样的。

如果你使用任何Android X依赖,你不能使用任何旧的Android支持库依赖,否则你会在合并时得到重复的资源和其他问题它们全部集成到一个 apk 中。

确保您在所有 Android X 或所有支持库上。如果您要移动到 Android X,请确保您有

android.useAndroidX=true
android.enableJetifier=true

在您的 gradle.properties 中,以便您的其他依赖项被视为 Android X.

为什么使用 appcompat-v7-28.0.0-rc01 而不是 appcompat-v7-28.0.0

甚至 androidx.appcompat:appcompat:1.0.0 ?

rc01表示release candidate;仅供测试。