在我从 1.1.2 -> 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 稳定版和 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
;仅用于测试目的。