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

Posted

技术标签:

【中文标题】appcompat-v7:21.0.0\':找不到与给定名称匹配的资源:attr \'android:actionModeShareDrawable\'【英文标题】:appcompat-v7:21.0.0': No resource found that matches the given name: attr 'android:actionModeShareDrawable'appcompat-v7:21.0.0':找不到与给定名称匹配的资源:attr 'android:actionModeShareDrawable' 【发布时间】:2014-12-13 10:19:15 【问题描述】:

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

我该如何解决这个问题?

【问题讨论】:

我在 Eclipse 中遇到了这个问题。我有超过 100 个错误,因为我的 SDK 构建工具没有更新到 rev 21。不过现在出现了不同的错误......去看看那些。 今天我卸载并重新安装了 Extras/Android 支持库(版本 21.0.2)并注意它的 project.properties still 错误地指向 target=android-19 这是问题的根源。应该是 21,但它是一个生成的 - 不可手动编辑的 - 文件。请参阅已接受的解决方法。 @RED_,无法解析符号 'android:Theme.Material.Light' in in valueles- android studio中的v21 @PankajNimgade 我不明白...你需要帮助吗? @RED_,是的,我确实需要帮助,在我的电脑上,我似乎无法检测到 Material Theme 的任何内容或任何以 android 开头的 values-v21\styles,请帮助我跨度> 【参考方案1】:

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


先决条件

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


Android 工作室

打开应用模块的build.gradle 文件并将compileSdkVersion 更改为21。基本上没有必要将targetSdkVersion SDK-Version 更改为21,但建议您始终使用target the latest android Build-Version。 最后你的 gradle-file 看起来像这样:

android 
    compileSdkVersion 21
    // ...

    defaultConfig 
        // ...
        targetSdkVersion 21
    

请务必在之后同步您的项目。


日食

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

导入项目后,您会发现/res文件夹中的某些文件夹带有红色下划线,原因如下:

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 (click) 上阅读更多相关信息。 (注意: 如果你只使用.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)-->[Dependency Tab]从下拉列表中选择Android API 21 Platform-->应用

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

【讨论】:

在将目标从 target=android-19 更改为 target=android-21 后,我在 eclipse 中也面临同样的问题,在值文件夹上也出现错误,伙计 当我在 Eclipse 中将 AppCompat 更改为 5.0 时,它不再构建并且 .bin 文件夹为空。 太棒了,过去 2 天我真的很挣扎,但你的技巧将 Android-19 更改为 21 有效..谢谢伙计 使用 Eclipse,我必须将所有使用 appcompat 库的项目的项目目标更新为 21,而不仅仅是 appcompat 项目本身。 我目前正在努力解决 eclipse / android 中提到的之前的问题。这真的是一堆不可靠的不可理解的废话。【参考方案2】:

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

android 
    //...
    compileSdkVersion 21

    defaultConfig 
        targetSdkVersion 21
    
    //...

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

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

编辑:适用于 Eclipse 或普通 IntelliJ 用户

查看反向的答案。他有一个非常彻底的演练!

【讨论】:

这是正确答案。升级到 21 需要这个,新的 appcompat 依赖项,你需要下载 rev 12 的 play services。 并且一定要运行JDK 7 虽然仍然正确,但请参阅@reVerse 的解决方案。它更彻底:) 既没有使用任何 IDE,也没有使用 Gradle...当我使用 Ant 和记事本时是否相似?【参考方案3】:

`按照以下步骤:

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

1.右键appcompat_v7库,选择属性

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

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

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

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

【讨论】:

我用你的方式在项目和库中设置了 android-21 目标,然后清理两者并完成......谢谢。 在哪里可以找到 appcompat_v7 库? 您可以在以下位置找到 appcompat_v7 库:adt-bundle-windows-x86_64 -->sdk -->\extras\ -->android\ -->support -->v7 这个答案结合上面 loeschg 的答案在 Eclipse 中解决了这个问题。【参考方案4】:

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

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

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

【讨论】:

我同意你的看法。毕竟,并不是每个人都计划在 21 岁时以 sdk 为目标。【参考方案5】:

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

【讨论】:

【参考方案6】:

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

【讨论】:

我使用的是 appcompact 的最新版本,但现在我想升级到早期版本,但在 exploded-arr 文件夹中出现此错误【参考方案7】:

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

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

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

【讨论】:

我执行了你的序列。然后有一个«Jar mismatch!在 Android 控制台中修复您的依赖项»,因为 libs/ 中的 jars 和依赖 appcompat 和 google play services 库项目中的 jars 不匹配(SHA-1 和 jar 文件长度不匹配)。进一步挣扎,我认为这是成功的。【参考方案8】:

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

它应该可以解决您的问题

【讨论】:

在这种情况下清理你的项目是行不通的,特别是如果你刚刚下载了一个新的 Android SDK、appcompat 库等,因为错误不会神奇地清理自己而不找到丢失的链接其他 Android 库和/或资源。 ReVerse 的回答对于那些不知道如何自行解决最新 Android API 级别 21 下载问题的人来说是正确且最彻底的。【参考方案9】:

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

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

【讨论】:

0.14.0 其实是不久前发布的 是的,我还在使用 0.12...也许它可以帮助其他人升级到 0.13 或 0.14【参考方案10】:

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

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

【讨论】:

【参考方案11】:

我的建议是:(经过很多天的错误,这对我有用)

-确保您已下载:

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

-重新下载 ADT

-制作项目的安全副本。

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

    现在删除应用兼容和您的项目。

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

    现在在 eclipse Package Explorer 中:android-support-v7-appcompat/libs/ 在两个 JARS 上制作:右键 > Build Path > Add to Build Path

    右键libs/文件夹>Buil Path>Configure Build Path,勾选这两个JARS>OK

    在上eclipse栏>项目>清理

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

    现在,右键单击项目文件和 android-support-v7-appcompat > Properties > Android > 并选择出现的最新 API > OK

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

    在上eclipse栏>项目>清理

【讨论】:

【参考方案12】:

当我将 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 版本

【讨论】:

【参考方案13】:

我更新了所有内容,但仍然出现此错误,不知道为什么,但我认为图像以一种奇怪的方式损坏,替换图像后我摆脱了错误。 可能值得尝试使用不同的图像:)

【讨论】:

【参考方案14】:

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

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

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

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

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

【讨论】:

以上是关于appcompat-v7:21.0.0':找不到与给定名称匹配的资源:attr 'android:actionModeShareDrawable'的主要内容,如果未能解决你的问题,请参考以下文章

Gradle - 错误找不到参数的方法 implementation() [com.android.support:appcompat-v7:26.0.0]

Cordova 构建错误:“无法解析配置 ':_debugApkCopy' > 的所有依赖项 > 找不到 com.android.support:appcompat-v7:27.0.2。”

AppCompat v7 r21 在 values.xml 中返回错误?

“找不到资源”错误Android gradle构建.gradle / caches中的文件

在Android Studio中找不到AppCompatActivity?解决方案

appcompat-v7:27.1.1 与 firebase-ads:15.0.1 冲突