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

时间:2014-10-17 18:59:41

标签: android gradle xamarin.android android-support-library android-5.0-lollipop

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

我该如何解决这个问题?

14 个答案:

答案 0 :(得分:595)

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


Prerequirements

确保您已通过SDK管理器下载了最新的extras以及Android 5.0 SDK

Picture of the SDK Manager


Android Studio

打开应用模块的build.gradle文件,将compileSdkVersion更改为21.基本上没有必要将targetSdkVersion SDK版本更改为21但是建议您这样做总是target the latest android Build-Version
最后,gradle文件将如下所示:

android {
    compileSdkVersion 21
    // ...

    defaultConfig {
        // ...
        targetSdkVersion 21
    }
}

请务必事后同步您的项目。

Android Studio Gradle Sync reminder


的Eclipse

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

一旦导入项目,您就会发现/res文件夹中的某些文件夹被加下划线,因为出现以下错误:

Errors in 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的{​​{1}}文件,将目标从android-support-v7-appcompat更改为target=android-19
之后只需执行target=android-21即可使更改生效。


IntelliJ IDEA(不使用Gradle)

与Eclipse类似,只使用Project --> Clean...是不够的;您必须导入android-support-v7-appcompat.jar作为模块。请阅读StackO-Post (click)上有关它的更多信息 ( 注意: 如果您只使用appcompat,则会在运行时获得.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 模块 - >打开模块设置(F4) - > [依赖选项卡] 从下拉列表中选择Android API 21平台 - >应用

Select API 21 Platform

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

答案 1 :(得分:123)

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

android {
    //...
    compileSdkVersion 21

    defaultConfig {
        targetSdkVersion 21
    }
    //...
}

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

Android Studio SDK Manager

一旦您下载了所有更新(不要忘记同时更新Android支持库/存储库!)并更新您的compileSdkVersion,请重新同步您的Gradle项目。

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

请参阅reVerse的回答。他有一个非常彻底的步行!

答案 2 :(得分:22)

`按照以下步骤操作:

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

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

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

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

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

5.Now Clean +构建appcompat_v7库和您的项目

答案 3 :(得分:12)

如果您不想将API 21用作目标API,那么您就不会将其作为目标API使用。要使用Material Theme,您必须使用属于API 19>

的旧版本
compile "com.android.support:appcompat-v7:19.0.+"

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

答案 4 :(得分:10)

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

答案 5 :(得分:8)

在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.+'
}

答案 6 :(得分:3)

我已将另一个项目添加到我的工作区,并尝试在清单文件中引用它的活动,我收到此错误。问题是我错误地引用了库。这是我解决问题的方法:

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

jar进入 Android Dependencies 文件夹,此错误已修复。

答案 7 :(得分:2)

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

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

答案 8 :(得分:2)

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

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

答案 9 :(得分:2)

我建议的是:(这对我来说很多天都有错误)

- 确保您已下载:

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

- 重载ADT

- 制作项目的安全副本。

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

  1. 现在删除app compat和您的项目。

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

  3. 现在在eclipse Package Explorer中:android-support-v7-appcompat / libs / Make on the two JARS:右键单击>构建路径>添加到构建路径

  4. 右键单击libs / folder> “构建路径”>配置构建路径并检查这两个JARS>确定

  5. 在日食吧>项目>清洁

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

  7. 现在,右键单击projectfile和android-support-v7-appcompat>属性> Android>并选择出现的最新API>确定

  8. 右键单击项目文件>属性> Android>添加>机器人支撑-V7-程序兼容性

  9. 在日食吧>项目>清洁

答案 10 :(得分:2)

当我将Compile SDK版本从API:21更改为API:16时,我遇到了同样的错误。问题是, appcompat 版本。如果您需要使用旧版本的Android API,那么您还必须更改此appcompat版本。就我而言( for 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

答案 11 :(得分:2)

我与所有事情保持同步并且仍然遇到了这个错误,不知道为什么,但我认为图像以一种奇怪的方式被破坏,并且在替换图像后我摆脱了错误。 可能值得尝试不同的形象:)

答案 12 :(得分:1)

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

它应该解决你的问题

答案 13 :(得分:1)

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

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

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

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

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