appcompat-v7:21.0.0':找不到匹配给定名称的资源:attr'android:actionModeShareDrawable'

当试图在我的项目中使用最新的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'. 

我该如何解决?

虽然loeschg的答案是绝对正确的,但我只想详细说明,并为所有IDE (Eclipse,IntellJ和Android Studio)提供解决scheme,即使这些错误有轻微的区别。


Prerequirements

确保您已经通过SDK-Manager下载了最新的extras以及Android 5.0 SDK

SDK管理器的图片


Android Studio

打开你的应用程序模块的build.gradle文件,并将你的compileSdkVersion更改为21.基本上没有必要将targetSdkVersion SDK-Version更改为21,但是build议你总是定位最新的Android Build-Version 。
最后你的gradle-file将如下所示:

 android { compileSdkVersion 21 // ... defaultConfig { // ... targetSdkVersion 21 } } 

确保以后同步您的项目。

Android Studio Gradle Sync提醒


在Eclipse中使用v7-appcompat ,必须将其用作库项目。 将* .jar复制到/libs文件夹是不够的。 请阅读此(单击) developer.android.com上的分步教程,以了解如何正确导入项目。

只要导入项目,就会发现/res文件夹中的某些文件夹因下列错误而带有下划线:

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从target=android-19改为target=android-21
之后,只需执行“ Project --> Clean... ,以使更改生效。


IntelliJ IDEA(不使用Gradle)

与Eclipse android-support-v7-appcompat.jar ,仅使用android-support-v7-appcompat.jar ; 您必须将appcompat作为模块导入。 在这个StackO-Post(click)上阅读更多关于它的信息。
注意: 如果你只使用.jar你会得到运行时的NoClassDefFoundErrors

当您尝试构build项目时,您将遇到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) – > [依赖选项卡]从下拉列表中selectAndroid API 21平台 – >应用

选择API 21平台

然后,只需重build项目(build设 – >重build项目),你很好去。

这可能是因为你没有在你的build.gradle文件中将你的compileSdkVersion设置为21。 您也可能想要将您的targetSdkVersion更改为21。

 android { //... compileSdkVersion 21 defaultConfig { targetSdkVersion 21 } //... } 

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

Android Studio SDK管理器

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

编辑:对于Eclipse或普通的IntelliJ用户

请参阅reVerse的答案。 他有一个非常彻底的走过!

`按照以下步骤操作:

它为我工作。要解决这个问题,

1.右击appcompat_v7库并select属性

2.现在,单击Android选项,将项目构buildpath设置为Android 5.0(API级别21)应用更改。

3.现在进入appcompat_v7库下的project.properties文件,

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

5.现在清理+build立appcompat_v7库和你的项目

如果您不想使用API​​ 21作为目标API,因此您不想使用Material Theme,则必须使用属于API 19>的旧版本。

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

这也有助于解决你的问题,这只取决于你想达到什么目的。

我用play-services遇到了这个问题:5.0.89。 升级到6.1.11解决了问题。

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

我的解决scheme是取代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.+' } 

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

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

在eclipse中的工作区中创build第二个项目后,我有这个问题。 我相信这是因为我使用不同的SDK版本创build了这个版本,并且编写了android-support-v7-appcompat库。

我试图清理一切,但无济于事。 最终,上面的build议编辑project.properties并更改target = 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包资源pipe理器中:android-support-v7-appcompat / libs / Make两个JARS:右键单击> Build Path> Add to Build Path

  4. 右键单击libs /文件夹> Buil Path> Configure Build Path,然后选中这两个JARS> OK

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

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

  7. 现在,右键单击projectfile和android-support-v7-appcompat> Properties> Android>然后select出现的最新API> OK

  8. 右键单击projectfile> Properties> Android> Add> android-support-v7-appcompat

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

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

所以我在build.gradle中replace依赖关系如下,

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

并确保您的SDK上有较旧版本的appcompat版本 在这里输入图像描述

我和所有的东西都保持一致,但仍然有这个错误,不知道为什么,但是我认为这个图像是以一种奇怪的方式被破坏的,在replace图像之后,我摆脱了错误。 可能值得去尝试一个不同的形象:)

我已经添加了另一个项目到我的工作区,并试图引用清单文件中的一个活动,我得到这个错误。 问题是我错误地引用了库。 这是我如何解决这个问题:

  • 右键点击项目
  • select属性
  • 点击左侧菜单上的Android
  • 点击添加
  • 请select一个图书馆项目

该jar进入Android的依赖关系文件夹,并修复了这个错误。

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

它应该解决你的问题

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

(做这个之前你应该备份你的项目)

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

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

3)回到主项目,并添加appcompat库,干净,一切正常!