更新后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'.

错误,您必须将您的 appcompatbuildtoolssdk 更改为 23 但是,如果您不喜欢更改它并且必须在 22 这样做:

编译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 中的所有配置删除未使用的字符串资源?

将 Android Studio 3.6 和 Gradle 更新到 3.5.0 后无法运行项目

android studio 中的 JKS 文件位置未更新