棒棒糖AppCompat-v7 21 - 属性“theme”已被定义

69

我想将我的项目升级以支持Android Lollipop和API 21,因此我将依赖的AppCompat版本更改为21.0.0,并将我的目标SDK设置为21。

但是,现在当我尝试使用gradle文件同步项目时,它会给出之前不存在的102个错误

1个"属性'theme'已经定义"的错误 - 来自于我的colors.XML文件,

还有101个"找不到与给定名称匹配的资源..."的错误 - 其中大部分是Material库的 - 来自于"build/intermediates/exploded-aar/com.android.support/appcompat-v7/21.0.0/res/values-v11/values.XML"

已经更新了Android SDK软件中的所有SDK工具,使用的是Android Studio 0.8.9 Beta。

有人可以帮忙吗?谢谢。


1
https://dev59.com/6F8d5IYBdhLWcg3wzEv4 - CommonsWare
根据上面链接的问题/答案更新您的SDK。 - gMale
6个回答

123

我也遇到了第一个问题。通过将Google Play服务依赖项更新为6.1.+来修复它。

在Gradle中(希望您正在使用),这是: compile 'com.google.android.gms:play-services:6.1.+'

至于第二个问题 - 正如评论中的其他人所说,您应确保SDK安装中的所有组件都是最新的。


3
非常感谢!我更改了Google Play服务的依赖关系,然后它就起作用了! - user3184899
我更新了所有组件,也没有使用GPlay服务,但它仍然无法工作...你有其他想法吗?编辑:通过将版本号替换为“+”,更改了所有其他依赖项,现在它可以工作了。请注意,这只是一个临时解决方案。 - MathieuMaree
@tilal6991 对我来说,以上所有的回复都没有起作用,包括评论。我甚至尝试更改我的构建工具,但没有效果。帮帮我!!! :S - Seïfane Idouchach
1
@SeïfaneIdouchach,请检查您的attrs.xml文件或任何定义了theme属性的第三方依赖项中是否已经定义过它。 - Chris.Jenkins
我也遇到了非常类似的问题。通过将我的子模块更新到最新版本的Google Play服务、AppCompat和Support库来解决它们。 - Nestor Ledon

17

我也遇到了同样的问题,但升级到最新版本并没有帮助。

但错误信息Attribute “theme” has already been defined已经变成了Attribute “layout” has already been defined

在谷歌Play服务的更改中,我找到了这个信息

  <declare-styleable name="WalletFragmentOptions">
         <!-- Theme to be used for the Wallet selector -->
-        <attr name="theme" format="enum">
+        <attr name="appTheme" format="enum">

这是关键。

如果您在attr.xml中有themelayout或其他属性 - 请将其重命名。似乎合并处理不了它。


2

Android Studio中的Gradle建议使用最新版本的com.google.android.gms:play-services。 将其更新到最新版本后,问题得到了解决。

编译'com.google.android.gms:play-services:8.3.0'


0
有时候你使用的库会有这个属性。我之前在使用Sliding up panel库时,在构建过程中遇到了以下错误。我在我的依赖库中有以下内容:
dependencies {
    compile 'com.android.support:appcompat-v7:20.0.0'
    compile 'com.sothree.slidinguppanel:library:+'
    // ...
}

我通过移除滑动库来解决了我的问题 :(


SlidingUpPanel 的这个问题已经被修复了。 - tokudu

0

对于Eclipse用户:

因为如果您按照安装GPS的建议进行操作,那么您只是在工作区中拥有它的副本,而这个副本不会得到更新。


0
在我的项目中添加了一个新的活动后,似乎Android Studio自动更新了我的依赖项,之后那个错误就开始出现了。
我将以下依赖项更改为最新的兼容库:
compile 'com.android.support:support-v4:21.0.3'
compile 'com.android.support:appcompat-v7:21.0.3'

跟我在 gradle.build 里面写的一样,但是 Studio 没有经过我的同意就修改了它:

compile 'com.android.support:support-v4:20.0.0'
compile 'com.android.support:appcompat-v7:20.0.0'

然后让Studio进行同步,你的构建应该可以正常工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接