更新后android studio中的资源错误:未找到资源
Posted
技术标签:
【中文标题】更新后android studio中的资源错误:未找到资源【英文标题】:resource error in android studio after update: No Resource Found 【发布时间】:2015-11-12 13:50:14 【问题描述】:在最近对 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 本身(而不是您的项目)中没有收到错误吗? 不确定我是否理解您的问题?我们在生成的文件中遇到了问题,如上面发布的错误中的文件路径所示。 如果生成的文件中出现错误,那么您必须在 gradle 中更新构建工具以匹配库版本。即 buildToolsVersion "23.0.1" 【参考方案1】:您需要将 compileSdkVersion 设置为 23。
由于 API 23 Android 删除了已弃用的 Apache Http 包,因此如果您将它们用于服务器请求,则需要将 useLibrary 'org.apache.http.legacy'
添加到 build.gradle,如 this 链接中所述:
android
compileSdkVersion 23
buildToolsVersion "23.0.0"
...
//only if you use Apache packages
useLibrary 'org.apache.http.legacy'
【讨论】:
这将起作用,但您需要确保安装新的 SDK 版本。 API 23(Android 6.0 平台)。这将允许您支持更新的设备。这就是为什么当您将“appcompat 版本”更改为较新的版本时,它将需要较新的 SDK 版本。 这个答案比回到22.2.1好很多 这当然是一个理想的答案,对大多数人来说显然是正确的做法,但是,它并没有回答我的问题,即在不更新 sdk 版本的情况下解决问题。这样做会破坏我们依赖但当时没有时间更新的库。我们已经更新了库以利用新功能,现在我们可以安全地更新到 sdk 23。 @RobertoB。谢谢,这是很好的信息。我们已经更新了我们的代码库以使用新的 apache 库,但希望它能对其他人有所帮助! 这与 OP 报告的错误消息有什么关系?我认为 compileSdkVersion 是一种有效的解决方法,但使用旧的 apache 库只是一个间接要求。【参考方案2】:将 build.gradle 文件中的 appcompat 版本改回 22.2.1(或之前使用的任何版本)。
【讨论】:
谢谢,这就是解决方案。我按照这里的说明进行操作:code.google.com/p/android/issues/detail?id=183122#makechanges 特别是 scott 提供的解决方案。我必须在我的 sdk 文件夹中删除 23.0.0,在 SDK 管理器中删除版本 23 sdk,然后进行清理和重建 詹姆斯,感谢您的解决方案。然而,我对这种 PITA 情况感到非常震惊——因为我从来没有安装过 appcompat-v7:22.2.1 !! 有没有办法在 Eclipse 中做到这一点? @Solace Eclipse 没用 @BackPacker No. Android Studio 是问题所在。我有一台好电脑,Android Studio 需要很长时间才能编译一个简单的 hello world 应用程序。【参考方案3】:在您的项目 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'
【讨论】:
不不不....我没想到会这样!但这行得通!那么更新到 23.0.1 有什么意义呢? 这个得到了我的 +1:立即有人告诉你更新到最新版本并不总是合适的。这个回答了最初的问题,并为我解决了问题。【参考方案4】:注意,错误答案来了! 但是任何没有 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 库有这么大的问题?【参考方案5】:您应该在特定于应用程序的构建 gradle 文件中将您的compiledsdkversion 和targetversion 更改为23。确保您在此之前安装了sdk 23,版本6.0。您可以观看此视频以获取更多帮助。https://www.youtube.com/watch?v=pw4jKsOU7go
【讨论】:
【参考方案6】:如果您在下载最新的 SDK 和 Android Studio 后仍然出现错误,我是新手:我所做的是 1. 下载最新的 SDK(我是) 2.打开文件-项目结构(ctrl+alt+shift+S ) 3. 在模块中选择应用程序 4.在属性选项卡中..将编译 sdk 版本更改为 api 23 Android 6.0 marshmallow(latest)
确保编译 adk 版本和 buildtools 版本相同(23)
希望它可以帮助某人,这样他就不会像我这几天那样受苦。
【讨论】:
【参考方案7】:尝试匹配所有版本:
compileSdkVersion 23
buildToolsVersion '23.0.0'
targetSdkVersion 23
compile 'com.android.support:appcompat-v7:23.0.0'
这对我有用。
【讨论】:
【参考方案8】:compileSDK 应该匹配 appCompat 版本。 TargetSDK 仍然可以是 22(例如,如果您还没有更新到新的权限模型)
【讨论】:
【参考方案9】:如果你有:
/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'.
错误,您必须将您的 appcompat
、 buildtools
、 sdk
更改为 23
但是,如果您不喜欢更改它并且必须在 22
这样做:
【讨论】:
【参考方案10】:只有将 build.grade 更改为它时才有效:
android
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig
applicationId "blablabla"
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0"
buildTypes
release
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
dependencies
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.0.0'
【讨论】:
【参考方案11】:我注意到我没有安装 sdk 23。所以我首先安装了它,然后重新构建了我的项目。而且效果很好。 compilesdkVersion 也应该是 23
【讨论】:
【参考方案12】:首先,
尝试检查你的SDK文件夹,对我来说,它是mydocuments/appdata/sdk....等。所以基本上我的sdk文件夹没有完全下载,主要是这个问题的根源。您必须使用另一个完全下载的 android sdk(包括您真正需要的工具部分和附加功能)或使用您之前为 Eclipse android 开发下载的 eclipse sdk。然后再次构建->清理您的项目。
值得一试。
【讨论】:
【参考方案13】:升级以使用 API 23 (Android 6.0) 或在 Gradle 中将 appcompat-v7 改回 22.2.2 版本。添加谷歌播放服务时这对我有用
【讨论】:
【参考方案14】:方法一: 它正在显示。您没有安装 Api 23。 所以请安装 API 23。
方法二:
将 build.gradle 文件中的 appcompat 版本改回 22.0.1(或更低)。
【讨论】:
以上是关于更新后android studio中的资源错误:未找到资源的主要内容,如果未能解决你的问题,请参考以下文章
解决Android Studio下Element layer-list must be declared问题
Android studio 引用的aar包更新后,项目中依赖包代码未更新
Android studio 引用的aar包更新后,项目中依赖包代码未更新
如何为 Android Studio 中的所有配置删除未使用的字符串资源?