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


376

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

我该如何解决?


1
我正在蚀这个问题。我有100多个错误,因为我的SDK Build工具没有更新到21版。尽管如此,现在还是遇到了其他错误。
RED_

今天,我卸载并重新安装了Extras / Android支持库(版本21.0.2),并注意到它的project.properties 仍然错误地指向target = android-19,这是问题的根源。应该是21,但它是生成的-不可手动编辑-文件。解决方法请参见已接受的答案。
JulianSymes 2014年

@RED_,不能解析符号'机器人:Theme.Material.Light'在<样式名称= “AppBaseTheme”父= “机器人:Theme.Material.Light”> </风格>在valules-V21在Android Studio中
潘卡Nimgade

@PankajNimgade我不明白...您需要帮助吗?
RED_

@RED_,是的,我确实非常需要帮助,在我的电脑上,我似乎无法检测出任何适用于Material Theme的东西或以android-values \ v21 \ styles开头的东西,请帮帮我
Pankaj Nimgade

Answers:


598

尽管loeschg的答案是绝对正确的,但我只是想详细说明一下,并为所有IDE(Eclipse,IntellJ和Android Studio)提供一个解决方案,即使这些错误有所不同。


前提条件

确保您已下载最新版本extras以及Android 5.0 SDK通过SDK-Manager下载的。

SDK Manager的图片


Android Studio

打开build.gradle您的应用程序模块的文件,然后将其更改compileSdkVersion为21。基本上没有必要将targetSdkVersionSDK-Version 更改为21,但是建议您这样做,因为您始终应以最新的android Build-Version为目标
最后,您的gradle文件将如下所示:

android {
    compileSdkVersion 21
    // ...

    defaultConfig {
        // ...
        targetSdkVersion 21
    }
}

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

Android Studio Gradle Sync提醒


日食

当使用v7-appcompat在Eclipse中,你必须把它作为一个库项目。仅将* .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'.

您唯一要做的就是打开的project.properties文件,android-support-v7-appcompat并将目标从更改target=android-19target=android-21
之后,只需执行一项操作,以Project --> Clean...使更改生效。


IntelliJ IDEA(不使用Gradle)

与Eclipse类似,仅使用android-support-v7-appcompat.jar;是不够的。您必须将导入appcompat为模块。在此StackO-Post(单击)上阅读有关它的更多信息。
注意: 如果仅使用,.jar则会NoClassDefFoundErrors在运行时启动

当您尝试构建项目时,您将在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平台->应用

选择API 21平台

然后只需重建项目(Build-> Rebuild Project)就可以了。


2
在将目标从target = android-19更改为target = android-21之后,我也在日食中遇到同样的问题
prabhakaran 2014年

1
当我在eclipse中将AppCompat更改为5.0时,它将不再生成并且.bin文件夹为空。
Clive Jefferies 2014年

1
太棒了,确实我过去两天都在挣扎,但您将技巧从Android-19改为21确实有用。.谢谢
Mukesh Garg,2014年

1
使用Eclipse,我必须将所有使用appcompat库的项目的项目目标更新为21,而不仅是appcompat项目本身。
Bianca Daniciuc 2014年

1
我目前正在努力解决eclipse / android中提到的先前问题。这确实是一堆不可靠的胡言乱语。
AndyUK '16

123

这可能是因为您尚未compileSdkVersion在build.gradle文件中将其设置为21。您可能还希望将其更改targetSdkVersion为21。

android {
    //...
    compileSdkVersion 21

    defaultConfig {
        targetSdkVersion 21
    }
    //...
}

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

Android Studio SDK管理器

下载完所有更新(别忘了也要更新Android支持库/存储库!)并更新了compileSdkVersion后,请重新同步Gradle项目。

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

请参阅reVerse的答案。他走得很透彻!


2
这是正确的答案。升级到21需要这个,新的appcompat依赖关系,并且您需要下载play服务的rev 12。
sbaar 2014年

1
并确保运行JDK 7
Chad Bingham 2014年

1
虽然仍然正确,但是请参阅@reVerse的解决方案。更彻底了:)
loeschg 2014年

既不使用IDE也不使用Gradle ...当我使用Ant和Notepad时是否相似?
瓦伦

22

`请按照以下步骤操作:

它对我有用。要解决此问题,

1.右键单击appcompat_v7库,然后选择属性

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

3.现在转到appcompat_v7库下的project.properties文件,

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

5,现在清理+构建appcompat_v7库和您的项目


1
我用你的方式在项目和库中设置了android-21目标,然后清理并完成了..谢谢。
莫辛

1
在哪里可以找到appcompat_v7库?
SleepNot

2
您可以在以下位置找到appcompat_v7 lib:adt-bundle-windows-
x86_64-

该答案与上述loeschg的答案结合在一起,在Eclipse中解决了该问题。
Michael Todd 2015年

12

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

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

这也有助于解决您的问题,仅取决于您要实现的目标。


我同意你的看法。毕竟,不是每个人都计划目标SDK在21
peacepassion

10

我在play-services:5.0.89遇到此问题。升级到6.1.11解决了问题。


8

在Android Studio中,我尝试将compileSdkVersion和设置targetSdkVersion19

我的解决办法是在底部的替换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.+'
}

我使用从appcompact一个最新的版本,但现在我想doengrade早期版本,但我得到这个错误在爆炸-ARR文件夹
Antwan

3

我在工作空间中添加了另一个项目,并试图在清单文件中引用该项目的活动,但出现此错误。问题是我引用的库不正确。这是我解决问题的方法:

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

该罐子进入Android Dependencies文件夹,此错误已得到修复。


我执行了你的顺序。然后发生了«瓶子不匹配!在Android控制台中修复您的依赖项»,因为libs /中的jars和依赖于appcompat和Google Play服务库项目中的jars不匹配(SHA-1和jar文件长度不匹配)。进一步努力,我认为这是成功的。
尤金(Eugene Gr)。Philippov 2016年

2

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

它应该解决您的问题


2
在这种情况下,清理项目是行不通的,特别是如果您刚刚下载了新的Android SDK,appcompat库等,因为错误不会神奇地清理自己,而不会找到其他Android库和/或资源的丢失链接。对于那些不知道如何解决最新下载的Android API 21级问题的人,ReVerse的答案是正确和最彻底的。
ChuongPham 2014年

2

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

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

0.14.0实际上是在不久前发布的
loeschg 2014年

是的,我仍在使用0.12 ...也许它可以帮助其他人升级到0.13或0.14
avianey 2014年

2

在Eclipse中的工作区中创建第二个项目后,我遇到了这个问题。我相信这是因为我使用其他SDK版本创建了它,并且这也证明了android-support-v7-appcompat库。

我试图清理一切,但无济于事。最终,以上建议编辑project.properties并更改target = android-21并将我的项目设置为Android 5.0,并对其进行了修复。


2

我的建议是:(这在出现错误很多天后对我有效)

-确保您已下载:

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

-重新加载ADT

-制作项目的安全副本。

-您必须将ADT,工作空间和我们要导入的项目放在同一磁盘中(例如C:/)

  1. 现在,删除应用程序兼容性和您的项目。

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

  3. 现在在Eclipse Package Explorer中:android-support-v7-appcompat / libs /在两个JARS上进行制作:右键单击>构建路径>添加到构建路径

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

  5. 在上方的月食栏中>项目>清理

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

  7. 现在,右键单击项目文件,然后单击android-support-v7-appcompat>属性> Android>并选择显示的最新API>确定

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

  9. 在上方的月食栏中>项目>清理


2

将Compile 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版本 在此处输入图片说明


2

我已经掌握了所有最新信息,但仍然收到此错误,不知道为什么,但是我认为图像以一种奇怪的方式损坏,更换图像后,我摆脱了错误。可能值得尝试使用其他图像:)


1

我的问题是我的项目引用了其他库,而这些库又引用了另一个版本的appcompat。这是我为解决此问题所做的事情:

(您应该在执行此操作之前备份您的项目)

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

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.