尝试在我的项目中使用最新的 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),即使错误略有不同。
先决条件
确保您已通过 SDK-Manager 下载了最新的 extras
和 Android 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-appcompat
的 project.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)就可以了。
这可能是因为您没有在 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 用户
请参阅反向的答案。他走得很彻底!
`按照以下步骤:
它对我有用。要解决此问题,
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 库和您的项目`
如果您不想使用 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 中,我尝试将 compileSdkVersion
和 targetSdkVersion
设置为 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.+'
}
我已将另一个项目添加到我的工作区,并试图在清单文件中引用它的活动,但我收到了此错误。问题是我错误地引用了库。这就是我解决问题的方法:
右键单击项目
选择属性
单击左侧菜单上的 Android
点击添加
请选择一个图书馆项目
jar 进入 Android Dependencies 文件夹,此错误已修复。
确保在 android studio(或 eclipse)中清理你的项目,
它应该可以解决您的问题
升级到最新的 gradle 插件解决了我的问题:
classpath 'com.android.tools.build:gradle:0.13.+'
在eclipse的工作区中创建第二个项目后,我遇到了这个问题。我相信这是因为我使用不同的 SDK 版本创建了它,并且这覆盖了 android-support-v7-appcompat 库。
我试图清理一切,但无济于事。最终,上面建议编辑 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:/)
现在删除应用程序兼容和您的项目。在 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
当我将编译 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
我是最新的一切,仍然得到这个错误,不知道为什么,但我认为图像以一种奇怪的方式损坏,替换图像后我摆脱了错误。可能值得尝试使用不同的图像:)
我的问题是我的项目引用了其他库,并且这些库引用了另一个版本的 appcompat。这是我为解决问题所做的:
(您应该在执行此操作之前备份您的项目)
1) 我删除了所有 appcompat 布局文件夹(例如:/res/layout-v11)。
2) 解决了由此产生的问题,通常是 menu.xml 中的错误
3)回到主项目并添加appcompat库,清理,一切正常!
不定期副业成功案例分享