Android Studio更新后出现资源错误:未找到资源。

101

最近更新了Android Studio后,我们在编译之前可以正常工作的项目时遇到了问题。一开始出现了以下错误:

/Users/james/Development/AndroidProjects/myapp/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.0.0/res/values-v23/values-v23.xml
Error:(2) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'.
Error:(2) Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.Button.Colored'.

我在gradle文件中将SDK构建目标更新为23,这样特定问题就消失了,但是留下了一堆apache.http包错误(具体来说,我们用于http功能的大量apache包在sdk 23中已经被移除)。

我想要解决奇怪的资源错误,但不想升级到SDK 23。现在我没有时间重写我们的工具库,以使用任何新版的Apache HTTP组件实现。有人有什么想法吗?


你是不是在appcompat_v7 res/values-v23/styles.xml文件中遇到了错误(而不是在你的项目中)? - Solace
1
不太确定我理解你的问题?如上述错误中所示,我们在一个生成的文件中遇到了问题。 - James Dobson
如果错误出现在生成的文件中,则必须更新 gradle 中的构建工具以匹配库版本。即 buildToolsVersion "23.0.1"。 - BK Batchelor
14个回答

197

您需要将compileSdkVersion设置为23。

自API 23以后,Android已删除了已弃用的Apache Http包,因此如果您用它们进行服务器请求,您需要按照此链接中的说明,在build.gradle中添加useLibrary 'org.apache.http.legacy'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"
    ...

    //only if you use Apache packages
    useLibrary 'org.apache.http.legacy'
}

1
这个可以运行,但你需要确保安装了新的SDK版本。API 23(Android 6.0平台)。这将允许你支持更新的设备。这就是为什么当你将“appcompat版本”更改为更新版本时,它将需要更新的SDK版本。 - JamesDeHart
4
这个答案比回到22.2.1更好。 - Jörn Buitink
4
这确实是一个理想的答案,对于大多数人来说显然是正确的操作,但它并没有回答我的问题,我的问题是如何在不更新sdk版本的情况下解决问题。那样做会破坏我们依赖的库,但当时我们没有时间进行更新。我们已经更新了该库以利用新功能,现在可以安全地更新到sdk 23了。 - James Dobson
@RobertoB。谢谢,那是很好的信息。我们已经更新了我们的代码库,使用新的apache库,但希望它能帮助其他人! - James Dobson
这很有用。我在gradle版本1.1.1下遇到了一个错误,因为它不支持usesLibrary声明。请包含相关的classpath 'com.android.tools.build:gradle:1.1.1'行以保证完整性。 - nyxee
显示剩余2条评论

78
将您的 build.gradle 文件中的 appcompat 版本改回 22.2.1(或您之前使用的版本)。

5
谢谢,这个方案解决了我的问题。我按照这里的指示进行操作:https://code.google.com/p/android/issues/detail?id=183122#makechanges 具体来说,采纳了scott提供的解决方案。我需要删除sdk文件夹中的23.0.0版本,在SDK管理器中删除23版本的sdk,然后进行一次清理和重建。 - James Dobson
4
谢谢你的解决方案,James。然而,我对这个令人生气的麻烦情况感到非常惊讶 - 因为我从未安装过appcompat-v7:22.2.1 !! - Someone Somewhere
10
@Solace Eclipse是无用的。 - Fayçal
@BackPacker 我试过,但我的电脑太慢了,无法支持AS。我尝试过,但当我启动它时,一切都开始卡顿。 - Solace
6
@BackPacker 不是电脑的问题,而是 Android Studio 的问题。我有一台好电脑,但是用 Android Studio 编译一个简单的“Hello World”应用程序需要很长时间。 - TheRealChx101
显示剩余3条评论

21

在您的项目build.gradle文件中... 按照以下方式编写... 我通过将appcompat版本从v7.23.0.0更改为v7.22.2.1解决了该错误。

dependencies

{

compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.1'

}

Below screen shot is for better understanding.


1
不不不...我没想到会这样!但是它起作用了!!那么更新到23.0.1的意义在哪里呢? - sud007
这个让我点赞:并不总是适合立即更新所有东西的最新版本,只因为有人告诉你这样做。这个回答了原始问题,并且为我解决了问题。 - Mark Smith

10

注意,答案错误!但是没有apache库或类似的人可能会发现

compileSdkVersion 23
buildToolsVersion "23.0.0"



//...


dependencies {
compile 'com.android.support:appcompat-v7:23.0.0'
compile 'com.android.support:design:23.0.0'    

}

很有帮助,对我很有效。


为什么它在使用Apache库时会出现这么多问题? - NinjaCoder

4

您应该在与应用程序相关的构建gradle文件中将compiledsdkversion和targetversion更改为23。请确保在此之前已安装sdk 23,版本6.0。您可以观看此视频获取更多帮助。https://www.youtube.com/watch?v=pw4jKsOU7go


2

尝试匹配所有版本:

compileSdkVersion 23
buildToolsVersion '23.0.0'
targetSdkVersion 23
compile 'com.android.support:appcompat-v7:23.0.0'

这对我很有效。


2
如果您即使下载了最新的SDK和Android Studio仍然出现错误,我是一个新手:我做的是1.下载最近的SDK(我在)2.打开文件-项目结构(ctrl + alt + shift + S)3.在模块中选择应用程序4.在属性选项卡中。将编译SDK版本更改为API 23 Android 6.0 marshmallow(最新版)

确保编译adk版本和buildtools版本相同(23)

希望它能帮助某人,这样他就不会像我一样遭受这几天的痛苦。


1

if you have :

/Users/james/Development/AndroidProjects/myapp/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.0.0/res/values-v23/values-v23.xml
Error:(2) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'.
Error:(2) Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.Button.Colored'.

错误,您必须将您的appcompatbuildtoolssdk更改为23,但是如果您不想更改并且必须使用22,请执行以下操作:
  • 编译23
  • 目标22

1

compileSDK应该与appCompat版本匹配。 TargetSDK仍然可以是22(例如,如果您尚未更新到新的权限模型)


0

我注意到我没有安装sdk 23。所以我首先安装了它,然后重新构建了我的项目。然后它正常运行了。 另外,compilesdkVersion应该是23


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接