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

Error retrieving parent for item: No resource found that matches the given name after upgrading to AppCompat v23

我一直用Eclipse编程Android,并决定开始迁移到Android Studio。我决定使用我已经用于Eclipse的相同SDK,然后:

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

几秒钟后,Gradle完成构建,并在文件Teste4 app build intermediates / explosion-aar com.android.support appcompat-v7 23.0.0 res values中抛出以下消息,从而引发了两个错误-v23 价值观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'.

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

  • "编译Sdk版本":Android 5.1(API级别22)
  • "构建工具版本":23.0.2

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

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


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

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

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


这是因为更新后Android Studio默认使用API??版本23。

以下对我有用:

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

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

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

如上所示编辑v7:23.0.0到v7:22.2.1并同步gradle。这肯定会奏效。


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

首先,检查build.gradle中的AppCompat版本(模块:app)
那是,

Enter image description here

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

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

来自SDK Manager。如果已下载,则:

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

单击SDK Manager按钮并打开对话框。

Enter image description here

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

如果没有,那么先下载。完成下载后,单击Apply

Enter image description here

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

  • 点击列表中的应用。
  • 单击属性
  • 将Compile SDK版本更改为API 23
  • 将Build Tools版本更改为23.0.0
  • Enter image description here

    不要忘记重建您的项目。

    然后你的错误就会消失。


    如果您尝试将目标更改为以前的GooglePlayServices或AppCompatv7版本并且它不起作用,请检查您是否有任何项目库依赖项,此项目将针对任何这些库的最新版本。 Google Maps Utils Library项目发生在我身上:

    更换:

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

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

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

    如果它仍然没有编译,有时将compileSdkVersion API设置为23并将targetSdkVersion设置为22是有用的。


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

  • 您可以转到SDK Manager并在SDK Platform下安装API级别为23的Android 5.X.
  • 在"项目结构"下,将"编译SDK版本"更改为API 23,将"构建工具版本"更改为23.0.0
  • 那么它应该没有问题。


    您需要将compileSdkVersion设置为23。

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

    1
    2
    3
    4
    5
    6
    7
    8
    android {
        compileSdkVersion 23
        buildToolsVersion"23.0.0"
        ...

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

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

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

    enter image description here

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

    enter image description here

    并且不要忘记使用gradle文件同步项目


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    android {
        compileSdkVersion 23
        buildToolsVersion '23.0.1'

    defaultConfig {
        applicationId""
        minSdkVersion 14
        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.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'
    }

    我找到了解决方案,问题在我更新sdk后开始,之后我使用了不同的buildToolsVersion('22 .0.1'),我使用了不同的支持库,比如编译'com.android.support:appcompat-v7:23.0.0',在下面的图片中显示你

    enter image description here

    这引起了"android.widget.Material ......"的问题。
    然后我使用相同版本的支持库,如编译'com.android.support:appcompat-v7:22.0.1'及其DONE。 (在下面的屏幕截图中显示)

    enter image description here


    您应该使用最新版本编译项目,以便更新&从SDK安装。使用sync project with Gradle file按钮同步项目。
    您还可以继续使用现有版本,但检查它是否正确安装在图像下方,表示已正确安装的API 22。 enter image description here

    并根据需要同步您的项目。

    enter image description here

    它可能有所帮助。


    正如Tanis.7x所指出的,支持库版本(23)与targetSdkVersion(22)不匹配

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

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

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

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

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


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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
      compileSdkVersion 23
        buildToolsVersion"23.0.0"
        defaultConfig {
            minSdkVersion 15
            targetSdkVersion 23
            versionCode 340
            versionName"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中查看它,如下所示:
    enter image description here


    就我而言,它是更高版本的Google播放服务。我将它们设置为7.0.0(而不是8.x),一切正常。


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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    android {
        compileSdkVersion 22
        buildToolsVersion"22.0.1"

        defaultConfig {
            applicationId"com.yourapp.app"
            minSdkVersion 14
            targetSdkVersion 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'
    }


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

    应该做的是以下......在我的情况下,它是cordova但是与ionicphonegap和其他类似的框架相关:

  • 列出为项目安装的所有平台:cordova platform list。你会看到这样的事情:
  • enter image description here

  • 删除android平台:cordova platform remove android

  • 然后添加特定的android平台:cordova platform add [email protected]

  • 祝好运! :)


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


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

    Everything is greate but none of you explained where to download the SDK build tools


    升级Android Studio。

    我有Android Studio 1.3.1的这个问题,其他答案都没有对我有用,但在更新到1.5.1之后没有任何问题。


    在模块:app(Gradle)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    apply plugin: 'com.android.application'

    android {
        compileSdkVersion 21
        buildToolsVersion"21.1.2"

        defaultConfig {
            applicationId"com.namepack.nameappxxxxx"
            minSdkVersion 16
            targetSdkVersion 21
            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:21.0.3'
    }

    项目:nameAppXXXX(Gradle)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    buildscript {
        repositories {
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:1.2.3'

        }
    }

    allprojects {
        repositories {
            jcenter()
        }
    }

    并将您的AppCompatActivity活动编辑为例如Activity:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    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 {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main_activity);
        }


    }


    SDK Manager

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


    如果您使用的是phonegap(跨平台)并且上面遇到同样的问题,
    只需使用以下命令删除android平台。

    phonegap平台删除android

    然后再添加一次。

    phonegap平台添加android

    然后问题解决了我。


    另一种方案:
    导航

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

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


    正如其他人已经提到的那样,compile sdk version必须与您的support library's主要版本相匹配。但是,如果您有任何相关内容,这也与subprojects相关。

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    subprojects { subproject ->
    afterEvaluate{
        if((subproject.plugins.hasPlugin('android') || subproject.plugins.hasPlugin('android-library'))) {
            android {
                compileSdkVersion rootProject.ext.compileSdkVersion
                buildToolsVersion rootProject.ext.buildToolsVersion
            }
          }
       }
    }

    在root build.gradle文件中添加此脚本。


    如果您在下载最新的SDK和Android Studio后出现错误,请执行以下操作:

  • 下载最新的SDK
  • 打开文件 - 项目结构(Ctrl + Alt + Shift + S)
  • 在模块中,选择应用程序
  • 在属性选项卡中:将编译SDK版本更改为API 23 Android 6.0 marshmallow(最新)
  • 我希望它可以帮助某些人,这样他就不会像我这样做几天那样受苦。