appcompat-v7 . 21.0 ':没有找到与给定名称匹配的资源:attr '

当试图在我的项目中使用最新的appcompat-v7支持库时,我得到以下错误:

/Users/greg/dev/mobile/android_project/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/21.0.0/res/values-v11/values.xml
Error:(36, 21) No resource found that matches the given name: attr 'android:actionModeShareDrawable'.
Error:(36, 21) No resource found that matches the given name: attr 'android:actionModeShareDrawable'.
Error:(36, 21) No resource found that matches the given name: attr 'android:actionModeShareDrawable'.
Error:(36, 21) No resource found that matches the given name: attr 'android:actionModeShareDrawable'.

我怎么解决这个问题?

382610 次浏览

这很可能是因为你在构建中还没有将compileSdkVersion设置为21。gradle文件。你可能还想将targetSdkVersion更改为21。

android {
//...
compileSdkVersion 21


defaultConfig {
targetSdkVersion 21
}
//...
}

这要求您首先下载了最新的SDK更新。

Android Studio SDK Manager

一旦你下载了所有的更新(别忘了也更新Android支持库/库!)并更新了你的compileSdkVersion,重新同步你的Gradle项目。

编辑:适用于Eclipse或一般IntelliJ用户

请看reVerse的回答。他走得很彻底!

我在游戏服务5.0.89中遇到过这个问题。升级到6.1.11解决了这个问题。

确保在android studio(或eclipse)中清理项目,

它应该能解决你的问题

虽然loeschg的答案是绝对正确的,但我只想详细说明它,并给出所有IDE的解决方案 (Eclipse, IntellJ和Android Studio),即使错误略有区别。


Prerequirements

确保你已经通过SDK-Manager下载了最新的extrasAndroid 5.0 SDK

图片的SDK管理器


Android工作室

打开你的app-module的build.gradle文件,并将你的compileSdkVersion改为21。基本上没有必要将targetSdkVersion SDK-Version更改为21,但建议这样做,因为您应该始终目标是最新的android构建版本.
最后你的gradle-file会像这样:

android {
compileSdkVersion 21
// ...


defaultConfig {
// ...
targetSdkVersion 21
}
}

之后一定要同步你的项目。

Android Studio Gradle Sync提醒


Eclipse

当在Eclipse中使用v7-appcompat时,你必须将它作为一个库项目使用。仅仅将*.jar复制到/libs文件夹是不够的。请阅读(点击)关于developer.android.com的循序渐进教程,以了解如何正确导入项目。

一旦项目被导入,你就会发现/resfolder中的一些文件夹被红下划线标注,原因如下:

 Eclipse中的错误

error: Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material'.
error: Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.*'
error: Error: No resource found that matches the given name: attr 'android:actionModeShareDrawable'.

解决方案

你唯一要做的就是打开android-support-v7-appcompatproject.properties文件,并将目标从target=android-19更改为target=android-21 之后只需执行Project --> Clean...,以便更改生效

IntelliJ IDEA(不使用Gradle)

与Eclipse类似,仅使用android-support-v7-appcompat.jar是不够的;你必须导入appcompat作为一个模块。在这个StackO-Post(点击).
上阅读更多关于它的信息 (< em >注意:< / em > 如果你只使用__ABC0,你会在运行时得到NoClassDefFoundErrors) < / p >

当你试图构建项目时,你会在res/values-v**文件夹中遇到问题。您的消息窗口将显示如下内容:

Error:android-apt-compiler: [appcompat]  resource found that matches the given name: attr 'android:colorPrimary'.
Error:(75, -1) android-apt-compiler: [appcompat] C:\[Your Path]\sdk\extras\android\support\v7\appcompat\res\values-v21\styles_base.xml:75: error: Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.ActionButton'.
// and so on

解决方案

右键单击appcompat模块——>打开模块设置(F4)——> (依赖选项卡)从下拉菜单中选择Android API 21平台——>应用

Select API 21 Platform

然后重建项目(Build—> rebuild project),你就可以开始了。

升级到最新的gradle插件解决了我的问题:

classpath 'com.android.tools.build:gradle:0.13.+'

“遵循以下步骤:

这对我很有用。为了解决这个问题,

1.右键单击appcompat_v7库并选择属性

< p > 2。现在,点击Android选项, 将项目构建路径设置为Android 5.0 (API级别21) 应用更改。< / p >

3.现在进入项目。appcompat_v7库下的属性文件,

4.设置项目目标为:target=android-21

5.现在Clean + Build appcompat_v7库和你的项目

在eclipse的工作区中创建第二个项目后,我遇到了这个问题。我相信这是因为我用不同的SDK版本创建了它,这覆盖了android-support-v7-appcompat库。

我试图把一切都清理干净,但无济于事。最后,对编辑项目提出以上建议。属性和更改目标= Android -21,并将我的项目设置为Android 5.0,修复它。

我的建议是:(这对我来说是有效的,经过许多天的错误)

-确保你已经下载:

- the Lastest SDK Platform from the latest Android version
- Android Suppor Librarie and Repository from EXTRAS

重新下载ADT

-制作项目的安全副本。

-你必须将ADT,工作区和项目导入到同一个磁盘(例如C:/)

  1. 现在删除应用程序compat和你的项目。

  2. 在eclipse中:文件>导入> Android现有项目>下一步>浏览(你有ADT的文件夹)/sdk/extras/ Android /v7/appcompat >导入>完成

  3. 现在在eclipse包资源管理器:android-support-v7-appcompat/libs/ Make上的两个jar:右键单击>构建路径>添加到构建路径

  4. 右键单击libs/文件夹> Build Path >配置Build Path并检查这两个jar > OK

  5. 在上面的eclipse栏>项目>清洁

  6. 导入项目>文件>导入>浏览项目>完成

  7. 现在,右键单击projectfile和Android -support-v7-appcompat > Properties > Android >并选择最新出现的API > OK

  8. 右键单击项目文件>属性> Android >添加> Android -support-v7-appcompat

  9. 在上面的eclipse栏>项目>清洁

如果你不想使用API 21作为目标API,因此你不想使用材质主题,你必须使用属于API 19 >的旧版本

compile "com.android.support:appcompat-v7:19.0.+"

这也有助于解决你的问题,这只取决于你想要实现什么。

在Android Studio中,我试图将compileSdkVersiontargetSdkVersion设置为19

我的解决方案是在build.gradle的底部替换这个:

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
}

旧版本的appcompat库:

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:19.+'
}

我的问题是我的项目引用了其他库,而这些库引用了另一个版本的appcompat。下面是我解决这个问题的方法:

(在这样做之前,你应该备份你的项目)

1)我删除了所有的appcompat布局文件夹(例如:/res/layout-v11)。

2)解决了由此产生的问题,通常是menu.xml中的错误

3)回到主项目,添加appcompat库,清洁,一切工作!

当我将编译SDK版本从API:21更改为API:16时,我得到了同样的错误。问题是,appcompat版本。如果你需要使用旧版本的android API,那么你也必须改变这个appcompat版本。在我的情况下(API: 16),我必须使用appcompat-v7:19。+

因此,我替换build.gradle中的依赖项,如下所示:

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:19.+'
}
确保你的SDK中有旧版本的appcompat enter image description here

我是最新的一切,仍然得到这个错误,不确定为什么,但我认为图像是以一种奇怪的方式损坏的,在替换图像后,我摆脱了错误。 可能值得尝试不同的图像:)

我在工作空间中添加了另一个项目,并试图在清单文件中引用它的一个活动,但我得到了这个错误。问题是我没有正确地引用库。下面是我解决问题的方法:

  • 右键单击项目
  • 选择属性
  • 点击左边菜单上的Android
  • 点击添加
  • 请选择一个图书馆计划

罐子进入Android依赖关系文件夹,此错误已修复。