检索项目的父级时出错:升级到AppCompat v23后未找到与给定名称匹配的资源

我一直使用Eclipse对Android进行编程,并决定开始迁移到androidStudio。我决定使用我已经为Eclipse提供的相同SDK,然后:

  • 开始一个新项目
  • 设置最低SDK 4.0(API级别14)
  • 选择空白活动选项
  • 为活动名称和布局名称使用默认名称
  • 点击完成

几秒钟后,Gradle完成了构建,它向我抛出了两个错误,文件Teste4\app\build\midates/com.android.support\appcompat-v7\23.0.0\res\vales-v23\values-v23.xml中的以下消息:

错误:(2)检索项目的父级时出错:未找到与给定名称匹配的资源'android:文本外观.材料. Widget. Button. Inverse'。

错误:(2)检索项目的父级错误:未找到与给定名称匹配的资源“android: Widget. Material. Button. Col的”。

文件->项目结构->模块:应用程序(左列)->属性选项卡下,我设置了以下版本:

  • “编译Sdk版本”:Android 5.1(API Level 22)
  • “构建工具版本”:23.0.2

我该怎么做才能解决这个问题?

我已经尝试了Stack Overflow问题appcompat-v7:21.0.0':未找到与给定名称匹配的资源:attr'android: actionModeShareDrawable'中的建议,但它不起作用。

558495 次浏览

您的编译SDK版本必须与支持库的主要版本匹配。

由于您使用的是支持库的版本23,因此您需要针对Android SDK的版本23进行编译。

或者,您可以通过切换到最新的支持库v22来继续针对Android SDK版本22进行编译。

我同意前面的答案。您的编译SDK版本必须与支持库匹配。这是我所做的。

  1. 您可以转到SDK Manager并在SDK Platform下安装API级别为23的Android 5. X。
  2. 在项目结构下,将编译SDK版本更改为API 23,构建工具版本更改为23.0.0

那么它应该没有问题地建造。

发生这种情况是因为更新后Android Studio默认使用api版本23

以下内容为我工作:

Ctrl+Shift+Alt+S进入项目结构页面。转到属性选项卡并将构建工具区域中的23.0.0更改为22.0.1(或等效于您之前使用的内容)并重建您的项目。

如果这不起作用,请转到gradle:应用,然后

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

如上所示编辑v7:23.0.0视频格式:v7:22.2.1服务端并同步gradle。这肯定会起作用。

如果您在下载最新的SDK和Android Studio后仍然出现错误,以下是我所做的:

  1. 下载最新的SDK
  2. 打开文件-项目结构(Ctrl+Alt+Shift+S
  3. 在模块中,选择应用
  4. 在属性选项卡中:将编译SDK版本更改为API 23 Android 6.0棉花糖(最新)

我希望它能帮助某人,这样他就不会像我这几天那样受苦了。

正如Tanis.7x所指出的那样,支持库版本(23)不匹配目标SdkVersion(22)

您可以通过执行以下操作来解决此问题:

在应用模块的build.grade文件中,更改以下代码行

compile 'com.android.support:appcompat-v7:23.0.0'

compile 'com.android.support:appcompat-v7:22.+'

这将使用与SdkVersion 22兼容的appcompat版本的最新版本。

当您更新Android Studio时,默认使用API版本23,这是它发生的主要原因。所以,

首先,在build.gradle中检查您的AppCompat版本(模块:应用程序)那就是

在此输入图片描述

如果更改为23后出现错误,则只需下载

Compile Sdk Version to API 23, and Build Tools Version to 23.0.0

从SDK管理器。如果已经下载,则:

1. Go to SDK Manager and2. Under Project Structure, change *Compile SDK Version* to API 23, and *Build Tools Version* to 23.0.0

单击SDK管理器按钮并打开对话框。

在此输入图片描述

单击SDK Platform并检查是否下载了Android 6.0。

如果没有,请先下载。完成下载后,单击申请

在此输入图片描述

现在您需要从设置中将更改应用到您的项目。然后按Ctrl+Alt+Shift+S打开设置

  1. 单击列表中的应用程序。
  2. 单击属性
  3. 编译SDK版本更改为API 23
  4. 构建工具版本更改为23.0.0

在此输入图片描述

别忘了重建你的项目。

你的错误就会消失。

我找到了解决方案,问题在我更新sdk时开始,之后我使用了不同的//工具版本,我使用了不同的支持库,如编译com.android.support: appcompat-v7:23.0.0,如下图所示

在此处输入图片描述

这引起了“android.widget.材料…”的问题。然后我使用相同的版本来支持库,例如编译com.android.support: appcompat-v7:22.0.1及其完成。(在下面的屏幕截图中显示)

在此处输入图片描述

您应该使用最新版本编译您的项目,以便从您的SDK更新和安装。使用sync project with Gradle file按钮同步您的项目。
您也可以继续使用现有版本,但检查它是否正确安装,下面的图像指示API 22已正确安装。输入图片描述

并在需要时同步您的项目。

在此处输入图片描述

可能会有帮助。

另一种解决方案:导航到

\sdk\extras\android\m2repository\com\android\support\appcompat-v7\23.x.x

使用7-zip或winrar打开.aar文件,在res文件夹中删除values-23文件夹并保存更改。

android {compileSdkVersion 23buildToolsVersion '23.0.1'
defaultConfig {applicationId ""minSdkVersion 14targetSdkVersion 22versionCode 1versionName "1.0"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}}
dependencies {compile fileTree(dir: 'libs', include: ['*.jar'])compile 'com.google.code.gson:gson:2.3.1'compile 'com.android.support:recyclerview-v7:23.0.0'compile 'com.android.support:appcompat-v7:23.0.1'}

在模块上:app(Gradle)

apply plugin: 'com.android.application'
android {compileSdkVersion 21buildToolsVersion "21.1.2"
defaultConfig {applicationId "com.namepack.nameappxxxxx"minSdkVersion 16targetSdkVersion 21versionCode 1versionName "1.0"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}}
dependencies {compile fileTree(dir: 'libs', include: ['*.jar'])compile 'com.android.support:appcompat-v7:21.0.3'}

项目名称:AppXXXX(Gradle)

buildscript {repositories {jcenter()}dependencies {classpath 'com.android.tools.build:gradle:1.2.3'
}}
allprojects {repositories {jcenter()}}

并编辑您的AppCompatActivity的活动,例如活动:

package com.namepack.nameappxxxxx;

import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.view.Menu;import android.view.MenuItem;
public class NameClass extends ActionBarActivity {
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main_activity);}

}

出现此问题是因为现在编译SDK版本必须与Android支持库的主要版本匹配。

在我的情况下,我有Android Support Library版本23,所以我必须针对Android SDK version 23编译,我必须在我的build.gradle文件中更改它:

在此处输入图片描述

好吧,你们中的一些人需要安装SDK,Android 6.0 (API 23)

在此处输入图片描述

别忘了将项目与gradle文件同步

您需要将compileSdkVersion设置为23。

由于API 23 Android删除了已弃用的Apache Http包,因此如果您将它们用于服务器请求,您需要将useLibrary'org.apache.http.legacy'添加到build.gradle,如下所示:

android {compileSdkVersion 23buildToolsVersion "23.0.0"...
//only if you use Apache packagesuseLibrary 'org.apache.http.legacy'}

我遇到了同样的问题。我通过将每个子模块的gradle.build更新到最新的编译器版本来解决我的问题。

如果您尝试将目标更改为以前的GooglePlayServices或AppCompatv7版本,但它不起作用,请检查您是否有任何项目库依赖项,此项目将针对这些库中任何一个的最新版本。我在Google Maps Utils Library项目中遇到了这种情况:

替换:

compile 'com.google.android.gms:play-services:+'

compile 'com.google.android.gms:play-services:8.3.0'

然后您可以继续完全定位API 22

如果仍然无法编译,有时将compileSdkVersion API设置为23并将目标SdkVersion设置为22会很有用。

SDK管理器

确保所有这些都是最新的。

升级Android Studio。

我在Android Studio 1.3.1中遇到了这个问题,其他答案都不适合我,但更新到1.5.1后没有问题。

这对我有帮助:添加特定的android平台

应该做的事情如下……在我的情况下,它是cordova,但对于ionicphonegap和其他类似的框架也是如此:

  1. 列出为您的项目安装的所有平台:cordova platform list。您会看到如下内容:

在此处输入图片描述

  1. 删除android平台:cordova platform remove android

  2. 然后添加特定的android平台:cordova platform add android@5.0.0

祝你好运!:)

在我的情况下,这是一个更高版本的Google Play服务。我将它们设置为7.0.0(而不是8. x),一切正常。

我想从API 23降级到22并得到这个错误。我必须更改项目中的所有build.gradle文件才能编译。

android {compileSdkVersion 22buildToolsVersion "22.0.1"
defaultConfig {applicationId "com.yourapp.app"minSdkVersion 14targetSdkVersion 22}...dependencies {compile 'com.android.support:appcompat-v7:22.2.1'compile 'com.android.support:support-v4:22.2.1'compile 'com.android.support:design:22.2.1'compile 'com.google.android.gms:play-services-gcm:10.0.1'}

如果您正在使用phonegap(跨平台)并遇到上述相同问题,只需使用以下命令删除android平台。

phonegap平台删除android

并再次添加它。

phonegap平台添加android

然后问题为我解决了。

您的编译SDK版本必须与支持库主要版本匹配。这是您问题的解决方案。您可以在build.gradle文件中的Gradle脚本中轻松检查它。fx:如果你的compileSdkVersion是23,你的编译库必须从23开始。

  compileSdkVersion 23buildToolsVersion "23.0.0"defaultConfig {minSdkVersion 15targetSdkVersion 23versionCode 340versionName "3.4.0"}dependencies {compile 'com.android.support:appcompat-v7:23.1.0'compile 'com.android.support:recyclerview-v7:23.0.1'}

并始终检查您的Android Studoi是否具有支持的API级别。您可以在Android SDK中检查它,如下所示:输入图片描述

一切都很好,但没有人解释在哪里下载SDK构建工具

一切都很好,但没有人解释在哪里下载SDK构建工具

正如其他人已经提到的,你的compile sdk version必须匹配你的support library's主要版本。然而,如果你有任何,这也与subprojects相关。

如果您这样做,您可以使用以下脚本设置subprojects编译sdk版本:

subprojects { subproject ->afterEvaluate{if((subproject.plugins.hasPlugin('android') || subproject.plugins.hasPlugin('android-library'))) {android {compileSdkVersion rootProject.ext.compileSdkVersionbuildToolsVersion rootProject.ext.buildToolsVersion}}}}

将此脚本添加到您的rootbuild.gradle文件中。