ChatGPT解决这个技术问题 Extra ChatGPT

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

我该如何解决?

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

C
Community

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

先决条件

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

https://i.stack.imgur.com/tXQ3B.png

安卓工作室

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

android {
    compileSdkVersion 21
    // ...

    defaultConfig {
        // ...
        targetSdkVersion 21
    }
}

确保之后同步您的项目。

https://i.stack.imgur.com/dRsoo.png

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

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

https://i.stack.imgur.com/Gg5NK.png

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 -->申请

https://i.stack.imgur.com/I7fbS.png

然后只需重建项目(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 中提到的先前问题。这确实是一堆不可靠的不可理解的废话。
l
loeschg

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

android {
    //...
    compileSdkVersion 21

    defaultConfig {
        targetSdkVersion 21
    }
    //...
}

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

https://i.stack.imgur.com/OZNZg.png

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

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

请参阅反向的答案。他走得很彻底!


这是正确的答案。升级到 21 需要这个,新的 appcompat 依赖项,并且您需要下载 rev 12 的播放服务。
并确保运行 JDK 7
虽然仍然正确,但请参阅@reVerse 的解决方案。它更彻底:)
既没有使用 IDE 也没有使用 Gradle……当我使用 Ant 和 Notepad 时是否相似?
m
madhu527

`按照以下步骤:

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

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

2.现在,点击 Android 选项,将项目构建路径设置为 Android 5.0 (API level 21) Apply Changes。

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 中解决了这个问题。
v
vandus

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

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

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


我同意你的看法。毕竟,并不是每个人都计划将 sdk 定位在 21 岁。
p
pepyakin

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


G
Gianfranco P.

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

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

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 文件夹中出现此错误
l
live-love

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

右键单击项目

选择属性

单击左侧菜单上的 Android

点击添加

请选择一个图书馆项目

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


我执行了你的序列。然后有一个«Jar mismatch!在 Android 控制台中修复您的依赖项»,因为 libs/ 中的 jar 和相关 appcompat 和 google play 服务库项目中的 jar 不匹配(SHA-1 和 jar 文件长度不匹配)。进一步挣扎,我认为这是成功的。
B
Brendon Sled

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

它应该可以解决您的问题


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

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

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

0.14.0 实际上是不久前发布的
是的,我还在使用 0.12 ......也许它可以帮助其他人升级到 0.13 或 0.14
f
formica

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

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


j
juldeh

我推荐的是:(经过多天的错误,这对我有用)

- 确保您已下载:

- 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 包资源管理器中完成:android-support-v7- appcompat/libs/ 在两个 JARS 上制作:右键单击 > 构建路径 > 添加到构建路径 右键单击 libs/ 文件夹 > 构建路径 > 配置构建路径并检查这两个 JARS > OK 在上 eclipse 栏上 > 项目 > 清洁导入您的项目 > 文件 > 导入 > 浏览您的项目 > 现在完成,右键单击项目文件和 android-support-v7-appcompat > 属性 > Android > 并选择出现的最新 API > 确定右键单击项目文件 > 属性 > Android > 添加 > android-support-v7-appcompat 上 eclipse 栏 > Project > Clean


m
mili

当我将编译 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.+'
}

https://i.stack.imgur.com/duHXb.png


D
DoruChidean

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


t
tricknology

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

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

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

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

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