尝试在我的项目中使用最新的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'.
我该如何解决这个问题?
答案 0 :(得分:595)
虽然loeschg的答案是绝对正确的,但我只想详细说明并为所有IDE (Eclipse,IntellJ和Android Studio)提供解决方案,即使错误略有不同。
确保您已通过SDK管理器下载了最新的extras
以及Android 5.0 SDK
。
打开应用模块的build.gradle
文件,将compileSdkVersion
更改为21.基本上没有必要将targetSdkVersion
SDK版本更改为21但是建议您这样做总是target the latest android Build-Version。
最后,gradle文件将如下所示:
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'.
您唯一需要做的就是打开project.properties
的{{1}}文件,将目标从android-support-v7-appcompat
更改为target=android-19
。
之后只需执行target=android-21
即可使更改生效。
与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平台 - >应用
然后重建项目(Build - > Rebuild Project),你就可以了。
答案 1 :(得分:123)
这可能是因为您未在build.gradle文件中将compileSdkVersion
设置为21。您可能还想将targetSdkVersion
更改为21。
android {
//...
compileSdkVersion 21
defaultConfig {
targetSdkVersion 21
}
//...
}
这要求您先下载最新的SDK更新。
一旦您下载了所有更新(不要忘记同时更新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中,我尝试将compileSdkVersion
和targetSdkVersion
设置为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)
我已将另一个项目添加到我的工作区,并尝试在清单文件中引用它的活动,我收到此错误。问题是我错误地引用了库。这是我解决问题的方法:
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:/)
现在删除app compat和您的项目。
在eclipse中:文件>导入> Android现有项目>下一个>浏览(你有ADT的文件夹)/ sdk / extras / android / v7 / appcompat>导入>完成
现在在eclipse Package Explorer中:android-support-v7-appcompat / libs / Make on the two JARS:右键单击>构建路径>添加到构建路径
右键单击libs / folder> “构建路径”>配置构建路径并检查这两个JARS>确定
在日食吧>项目>清洁
导入项目>文件>导入>浏览您的项目>完成
现在,右键单击projectfile和android-support-v7-appcompat>属性> Android>并选择出现的最新API>确定
右键单击项目文件>属性> Android>添加>机器人支撑-V7-程序兼容性
在日食吧>项目>清洁
答案 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版本
答案 11 :(得分:2)
我与所有事情保持同步并且仍然遇到了这个错误,不知道为什么,但我认为图像以一种奇怪的方式被破坏,并且在替换图像后我摆脱了错误。 可能值得尝试不同的形象:)
答案 12 :(得分:1)
确保在android studio(或eclipse)中清理项目,
它应该解决你的问题
答案 13 :(得分:1)
我的问题是我的项目引用了其他库,而这些库引用了另一个版本的appcompat。这就是我为解决这个问题所做的工作:
(在执行此操作之前,您应该备份项目)
1)我删除了所有appcompat布局文件夹(例如:/ res / layout-v11)。
2)解决了由此产生的问题,通常是menu.xml中的错误
3)返回主项目并添加appcompat库,清理,一切正常!